Abbiamo più volte scritto che l'informazione ha una origine fisica, dunque ha un volume e questo volume, quando è eccessivo, causa problemi. Da qui la tecnica di compressione.

La voluminosità di un oggetto qualsiasi diventa critica durante i trasporti e durante gli stoccaggi. Nel settore informatico gli eventi critici sono dunque le trasmissioni e le archiviazioni.

Per i dati si ricorre a questo stratagemma.

1) - In una prima fase si effettua la compressione che riduce il volume del file affinché possa essere trasmesso/memorizzato facilmente.

2) - Una volta superato il momento critico si effettua la decompressione che ripristina il file iniziale così che possa essere utilizzato efficacemente.

 

 

Dunque quando si parla di algoritmo di compressione si intende una doppia procedura. La prima opera prima che intervenga la trasmissione o memorizzazione; la seconda realizza il ripristino.
Gli algoritmi seguono due strade alternative.

1 -  Il metodo non-semplificativo (o lossless) ricrea il file B che è identico all'originale A. Questo metodo è necessario ad esempio per un programma (cioè per un file con estensione .exe), per dati economici, matematici ecc. che devono essere integralmente ricostruiti. La perdita di un solo bit vanificherebbe il funzionamento del programma, pregiudicherebbe la validità di un calcolo.
Un algoritmo lossless molto semplice opera così: riduce una sequenza di caratteri identici ad un solo simbolo ed aggiunge il relativo moltiplicatore. Ad esempio 327 spazi vuoti sono ridotti ad un solo blank con accanto il valore 327. Tale algoritmo opera anche se la sequenza è variegata, esso sostituire una lunga configurazione di bit che si ripetono più volte con una indicazione succinta. Questo lavoro viene svolto ad esempio dall'algoritmo LZW (dovuto ad Abraham Lempel, Jacob Ziv e Terry Welch) il quale sviluppa una apposita tabella per le sostituzioni.
Il più noto prodotto che segue il metodo lossless forse è Zip che comprime il singolo archivio ed anche un gruppo di files. I formati
zip, gzip ed altri indicano le sue varie versioni (vedi risposta 142). 

2 -  Il metodo semplificativo (o lossy) fornisce dopo la trasmissione e/o l'archiviazione il file B che non è identico all'originale A. La perdita di qualità viene accettata perché i metodi lossy non provocano riduzioni sostanziali. Inoltre essi operano su brani musicali o su immagini, favoriti dal fatto che l'orecchio umano e l'occhio non sono in grado di apprezzare l'assenza di piccoli dettagli. I file grafici gif (Graphics Interchange File), jpeg o jpg (Joint Photographic Experts Group) sono forse i più comuni e vengono prodotti dietro opportune compressioni. Il primo utilizza l'algoritmo LZW modificato. Il secondo permette all'utente di scegliere il livello di riduzione con la regola che più il file viene compresso e più perde nitidezza. Dunque lo jpg non lavora con un solo algoritmo ma con una suite di algoritmi. 


Usualmente si dice che la riduzione dell'immagine compressa dipende dalla ricchezza dei colori dell'originale. Se ci sono molti colori la compressione non è elevata. Questo non è del tutto vero, perché la riduzione di volume viene ostacolata anche dalla disposizione dei colori. Ad esempio, l'algoritmo di jpg comprime la figura operando in senso orizzontale e l'immagine di destra una volta compressa è circa il dieci per cento più estesa di quella di sinistra.

          

 

 

anno 2003

76. Come funziona la compressione di un file?

77. Secondo
lei è
sensato
spiegare
il polimorfismo
in un corso
di Informatica
all'ITC?

Il polimorfismo consiste nell'assegnare lo stesso nome a metodi che non sono identici.

Prendiamo il caso dei metodi Rotate delle classi Rombo, Triangolo, Quadrato ecc. i quali fanno ruotare rispettivamente il rombo, il triangolo ecc. sullo schermo. I vari metodi Rotate hanno lo stesso nome ma non sono identici perché operano con sagome diverse, si dice allora che essi danno luogo ad un polimorfismo. Cioè il nome è uguale ma i contenuti sono diversi.

 

 

Di regola i metodi appartengono alle sottoclassi di una gerarchia ed il polimorfismo apre la strada per assegnare lo stesso metodo anche alla superclasse. Ad esempio Rotate viene assegnato alla classe Figura.

L'assegnazione è però simbolica, perché di fatto tale metodo, chiamato metodo simbolico o virtuale, non è codificabile. Abbiamo visto che in basso di Rotate ce ne sono tanti e non possono essere ridotti ad un metodo solo.

Il polimorfismo ed i metodi simbolici favoriscono il lavoro del programmatore. Grazie alla 'forzatura' sopra descritta egli può richiamare il metodo simbolico al fine di ruotare una figura geometrica qualsiasi. Ad esempio il metodo Rotate di Figura farà ruotare la figura interessata. In pratica il programmatore comanda:

Rotate Figura

Ed al momento dell'esecuzione verrà ruotata la figura presente sullo schermo sia essa un rombo oppure un triangolo. Grazie al polimorfismo il programmatore tratta in modo generalizzato un insieme di classi simili: un vantaggio di non poco conto!

La classe che ha uno o più metodi virtuali o simbolici si chiama classe astratta. Dunque Figura è una classe astratta.

Il meccanismo che collega il metodo virtuale alla classe specifica al momento dell'esecuzione si chiama binding dinamico. Dunque il meccanismo fisico che assicura il buon esito del polimorfismo è il binding dinamico, il quale si differenzia dalla normale attivazione di un metodo chiamata binding statico.

 

anno 2003

La sua domanda ci porta fuori dal settore di mia competenza per cui non so risponderle correttamente.

Può cercare i documenti che le interessano in Internet. Ormai la rete sta diventando la grande biblioteca-universale e probabilmente vi potrà trovare un valido aiuto. Può utilizzare Google che sembra tra i motori di ricerca meglio attrezzati per il settore scientifico e con un pò di pazienza, muovendosi all'interno dei siti, rintraccerà certamente qualche utile documento.

Auguri per il suo concorso.

 

 

anno 2003

78. Sono alle prese con un concorso pubblico (..) in ordine ai sistemi informatici territoriali. Una delle materie orali prevede "Legislazione in materia di ecologia ed ambiente".