venerdì 3 dicembre 2010

Lezione del 3 dicembre 2010 /2

Nella seconda lezione si sono descritti i programmi e i formati più comunemente utilizzati nell'uso quotidiano.

Le prime considerazioni riguardano i file di dati, i file cioè che contengono le informazioni che ci interessa mantenere (la tabella di excel con i voti, l'archivio delle email, le lettere d'amore scritte con Word). Come è in grado il sistema operativo di "riconoscerne" il contenuto in modo da rappresentarli con un'icona che li ricollega al programma con cui sono stati creati o con cui è possibile aprirli? (per esempio i file di word vengono riconosciuti come tali: ma se i file sono solo una sfilza di numeri come è possibile che vengano "riconosciuti" dal sistema?)

Il "segreto" è che i nomi dei file, in windows, possiedono una "estensione" di tre caratteri che li rende riconsudibili al programma appropriato per aprirli. Windows nasconde questa estensione per... semplificare la vita agli utenti (introducendo anche rischi per la sicurezza), ma comuque la mantiene e la usa per avere un'informazione sul contenuto del file. Ogni programma è libero di "scegliere" l'estensione da applicare ai propri file, ma alcune di queste sono diventate ormai consolidate e caratteristiche. Vediamo ne alcune con le diverse caratteristiche.

Formati compressi: ZIP e RAR (o 7z per il 7zip)
Sono le estensioni classiche che rappresentano file che contengono dati compressi. I dati compressi sono dati di qualsiasi genere che vengono ricodificati in modo da fargli occupare uno spazio minore, ma senza perdere nessuna informazione. Per fare un semplice esempio, se il file originale fosse AAABBBCCCCCCC, sarebbe possibile ricodificarlo (in questo esempio in modo molto ingenuo e poco realistico) come 3A3B7C (codifica "run length", di fatto quella usata nei fax). Questa nuova codifica mantiene tutta l'informazione originale (infatti permette di ricostruire il file di partenza) ma è in grado di esprimerla in modo molto più compatto (meno della metà). Ovviamente per poter utilizzare nuovamente i dati è necessario operare il processo inverso per ricostruire il file originario.
Un esempio più realistico è il seguente. Mettiamo di voler comprimere il seguente testo:
CARO AMICO TI SCRIVO PERCHÉ SEI UN AMICO CARO. È immediatamente evidente che c'è una certa ridondanza di informazioni, infatti le parole AMICO e CARO sono ripetute. Cerchiamo un modo per ricodificare questi dati in modo più compatto, in particolare cercando un modo di richiamare dentro al testo pezzi di testo già comparsi. Usiamo la convenzione di scrivere [pos iniz, num car] per indicare che in quel punto si deve sostituire il testo che si trova a partire dalla posizione pos iniz per un certo umero di caratteri. Il testo di esempio diventa quindi: CARO AMICO TI SCRIVO PERCHÉ SEI UN [6,5] [1,4]. In questo esempio particolare il guadagno non è evidente, ma la procedura permette in generale di risparmiare molto spazio nella codifica. Inoltre la procedura potrebbe essere nidificata, mettiamo che nel seguito della lettera si ripetessero le parole AMICO CARO, le si potrebbe sostituire con [35,11] cioè facendo riferimento a una sezione già codificata, e iniziare a "risparmiare" un bel po' di caratteri.
Questo è in generale il funzionamento di programmi tipo winzip (che implementano l'algoritmo Lempel-Ziv) e anche winRAR. Esistono altri algoritmi di compressione (come il metodo di Huffman) ma sono in linea di massima meno efficienti.

Formati immagine: JPG e GIF
Come già spiegato le immagini a livello di base vengono ottenute suddividendo la fotografia in piccoli riquadri, e ogni riquadro (detto pixel) possiede un colore. Registrare tutte quelle informazioni richiede molta memoria, per esempio una foto 800x600 pixel, dove ogni pixel può rappresentare 64000 colori richiede 960 kilobyte. Ci chiediamo quindi se non sia possibile usare una codifica simile a quella illustrata sopra per rendere più efficiente. Data la caratteristica delle immagini, dove molte aree spesso hanno colori uniformi o molto vicini, già una codifica tipo quella run-length è un guadagno.
Con il formato JPG si aggiunge un ulteriore fatto: le compressioni "lossless" (cioè quelle che non perdono informazioni) possono non esere le migliori per le immagini di tipo fotografico, dato che spesso la qualità effettiva richiesta è molto inferiore alla qualità massima: insomma, una foto per quasi tutti gli usi può non essere superdefinita. Il formato JPG mette in pratica questo principio introducendo un formato di compresione di tipo "Lossy" (cioè con perdita).

Formato PDF e PS:
Portable Document Format e PostScript (strettamente imparentati, sviluppati entrambi da Adobe)
Contrariamente ai formati di immagine dove l'immagine viene divisa in puntini, il formato PDF è vettoriale. Questo significa che le aree vengono definite da una serie di piccoli segmenti, e anche le lettere sono costruite in questo modo. Il vantaggio di essere un formato vettoriale è che è possibile ingrandirlo a piacere e mantiene i margini sempre perfettamente definiti.

Formati testuali: TXT e DOC
Normalmente i file con estensione TXT sono quelli che contengono testo semplice, senza formattazioni né altri arricchimenti. Una "a" è una "a" e basta.
Invece i formati di file tipo Word permettono non solo di avere le informazioni delle lettere scritte nel testo, ma anche della particolare formattazione di ogni carattere o parti di testo, oltre alle altre informazioni che si possono inserire come le note o dei grafici o delle immagini. Possiamo immaginare il formato di word descritto con un sistema simile all'xml discusso in una lezione precedente. Dato che abbiamo un testo e delle informazioni "a proposito" del testo, possiamo esprimerle in questo modo:
Il testo Caro amico potremmo pensare di descriverlo come:
<text font="Courier"><italic>Caro</italic></text> <text size="small"><underline>amico</underline></ext>

Nessun commento:

Posta un commento