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

I problemi emergono in due situazioni ben determinate che sono comuni un pò a tutti i prodotti. Le criticità per un articolo qualsiasi si presentano di regola 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 che è specifico dell'informatica e non si ritrova in altri settori.

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 critica; la seconda realizza il ripristino.
Gli algoritmi seguono due strade alternative.

1 -  Il metodo non-semplificativo (o lossless) produce il file B identico ad A. Questo metodo è necessario ad esempio per un programma (es:file exe), per dati economici, matematici ecc. che devono essere integralmente ricostruiti. La perdita di un solo bit vanificherebbe il funzionamento del programma e pregiudicherebbe la validità dei numeri.
Un esempio di algoritmo molto semplice sostituisce una sequenza di caratteri ripetuti con un solo simbolo ed il relativo moltiplicatore. Ad esempio 327 spazi vuoti sono ridotti ad un solo blank con accanto 327. Tale algoritmo è capace di sostituire anche una lunga configurazione di bit che si ripetono con un solo simbolo. Questo lavoro viene svolto ad esempio dall'algoritmo LZW (dovuto ad Abraham Lempel, Jacob Ziv e Terry Welch) il quale sviluppa da solo una 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. 

1 -  Il metodo semplificativo (o lossy) fornisce B che non è identico ad A ma comunque è accettabile perché si tratta di un brano musicale o una immagine. Infatti l'orecchio umano e l'occhio non sono in grado di apprezzare l'assenza di minimi dettagli. La perdita di qualità viene accettata perché i metodi lossy producono riduzioni sostanziali. 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 il volume dell'immagine dipende dalla ricchezza dei colori. Questo non è del tutto vero, perché interviene anche la disposizione degli stessi. Ad esempio, l'algoritmo di jpg comprime la figura operando in senso orizzontale e l'immagine di sinistra è circa il dieci per cento meno estesa di quella di destra.

 

          

 

 

Indietro

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 invece non sono uguali ma simili. Di regola i metodi appartengono alle sottoclassi di una gerarchia. 

Ad esempio i metodi Rotate delle classi Rombo, Triangolo, ecc. fanno ruotare rispettivamente il rombo, il triangolo ecc.. Non sono identici perché operano con figure differenti.

 

 

Le sconsiglio vivamente di illustrare il polimorfismo ai ragazzi come una proprietà logico-astratta, come succede talora. Invece le suggerisco di presentarloto in relazione ai suoi vantaggi pratici in armonia alle sue proprietà che ricordiamo brevemente.  

Insieme al polimorfismo si assegna simbolicamente il metodo alla superclasse. Ad esempio Rotate viene assegnato a Figura. Poiché l'assegnazione è simbolica, di fatto tale metodo - chiamato anche metodo virtuale - non esiste per niente in Figura, però il programmatore lo richiama per ruotare una figura geometrica qualsiasi. Il metodo virtuale di Figura attiverà dinamicamente il metodo della figura interessata. Ad esempio 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 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. Invece il legame che viene stabilito esplicitamente dal programmatore si chiama binding statico.

 

Indietro

anno 2003

La sua domanda 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.

 

Indietro

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".

 




=