Informatica per le discipline
umanistiche 2
- lezione 2 -
Strumenti per
elaborare
simboli
Questa lezione verte su quali sono i simboli che si
possono elaborare per mezzo dei computer.
8
simbolo
simbolo
Ricordo che, in informatica, il termine “simbolo” ha
un significato molto più debole che nelle discipline
umanistiche: per “simbolo” intendiamo un qualunque
segno, come ad esempio una cifra, senza alcun
significato associato, come succede invece per il
leone, a cui associamo per simbolismo il concetto di
“coraggio”.
8
Avere delle semplici cifre su un computer sembra un
poʼ limitativo rispetto a quello che solitamente
vediamo succedere sui computer intorno a noi.
Jonathan Franzen, ad esempio, ha scritto un intero
romanzo sul suo computer.
E, sicuramente, sui computer degli studenti del
corso si svolgono almeno queste tre attività: i social
network, lʼascolto di musica, e la visione di film.
Ragioniamo.
Premessa 1: i computer sono basati sul modello di
calcolatore proposto da Turing e non sono altro che
esecutori automatici di operazioni su simboli.
Premessa 2: con i computer scriviamo romanzi, navighiamo
nei social network, ascoltiamo musica, guardiamo film.
8
Conclusione:
scrivere romanzi, navigare nei social
network, ascoltare musica, guardare
film sono operazioni su simboli.
Il ragionamento non fa una piega,
ma la conclusione potrebbe lasciare
perplessi.
Per capire meglio la conclusione del
ragionamento precedente, occorre
fare più chiarezza sul legame che
cʼè tra tutte queste attività e i simboli
elaborati da un computer.
8
codifica
Tale legame è dato da una codifica.
Codifica: corrispondenza biunivoca tra
le entità di un particolare
dominio e lʼinsieme dei
numeri naturali oppure un
suo sottoinsieme.
Una
corrispondenza
si
dice
biunivoca quando ci sono tanti
elementi da una parte quanti
dallʼaltra, e ogni elemento viene
messo in corrispondenza con uno e
un solʼaltro elemento.
Codifica: corrispondenza biunivoca tra
le entità di un particolare
dominio e lʼinsieme dei
numeri naturali oppure un
suo sottoinsieme.
In una codifica, gli elementi presi in
considerazione possono essere di
qualunque tipo da una parte…
Codifica: corrispondenza biunivoca tra
le entità di un particolare
dominio e lʼinsieme dei
numeri naturali oppure un
suo sottoinsieme.
…ma dallʼaltra gli elementi devono
essere dei numeri naturali.
Codifica: corrispondenza biunivoca tra
le entità di un particolare
dominio e lʼinsieme dei
numeri naturali oppure un
suo sottoinsieme.
In altre parole, una codifica consiste nel far corrispondere a un elemento
di nostro interesse uno e un solo numero naturale, come ad esempio
avviene per gli studenti universitari, che ricevono un numero naturale che
li caratterizza in maniera univoca: la matricola. Questo non vuol dire che
lo studente stesso può venire elaborato da un computer, naturalmente,
ma che almeno riusciamo a creare un riferimento allo studente che il
computer può trattare.
0
1
2
3
Vediamo come si può creare una codifica per i testi.
8
La codifica dei testi si basa sulla codifica dei caratteri che li compongono: se ad ogni
lettera e ogni segno di punteggiatura faccio corrispondere un numero, ottengo una
corrispondenza biunivoca tra lettere e numeri. Perché tale corrispondenza sia utile,
deve essere nota e condivisa da tutti coloro che vogliono usare un computer per
scambiarsi i testi così codificati. La presente tabella mostra una nota codifica: UTF-8
UTF-8
Universal Character Set
Transformation Format – 8bit
Per poter essere elaborato da
un computer, il testo di
“Freedom” di Franzen deve
essere codificato sotto forma di
sequenza di numeri. Ciascun
numero corrisponde in maniera
unica a un carattere del testo.
108927350456345347653845098753094857039
845628765039417538945734589349058340958
447826296204237862386437826178162372762
130487627634780123640237462837467637643
764208701828736347565805656582760278635
082716508217365827136502781356082173656
573802783562387460215606098465246574568
038047569345830948563094563074560384756
038476501837465087314650138746507834560
384756037486578346574658734506183745601
837465018376456758403876573480187364571
088573465783104587134653178451103874650
Vediamo come si può costruire
una codifica anche i social
network come Facebook.
8
Ciò che vediamo sul nostro computer di un social network non è
altro che un insieme di testi e immagini.
Ci siamo già occupati dei testi, quindi ora concentriamo la nostra
attenzione sulle immaigini.
Guardando una foto molto dettagliata di dolci bergamaschi, viene
difficile da pensare che ci possa essere una corrispondenza con i
numeri naturali.
Guardando unʼimmagine a bassa risoluzione di SuperMario, si può
invece intuire come può essere codificata una foto.
pixel:
picture
element
Nellʼimmagine di SuperMario, si possono riconoscere elementi quadrati di base,
caratterizzati dalle posizione che occupano, e dal loro colore: i pixel.
Anche questa foto è fatta di pixel. Semplicemente non li vediamo perché sono troppo
piccoli. In questa immagine ce ne sono ben 12 milioni.
pixel (1/12000000)
La codifica delle immagini si basa sui pixel che la compongono. Come il testo viene
considerato come una sequenza di caratteri per essere codificato…
…così consideriamo una foto come una sequenza di pixel. Se riusciamo a codificare un
pixel, possiamo codificare unʼintera immagine.
0
1
2
codifica della
posizione del pixel
Abbiamo detto che la prima caratteristica di un pixel è la sua posizione. Se immaginiamo
di inserire lʼimmagine in piano cartesiano, ecco che siamo in grado di individuare la
posizione di pixel tramite le sue coordinate numeriche
0
1
2
codifica del colore?
0
1
2
Se immaginiamo di organizzare i colori in una tabella, allo stesso modo dei pixel siamo
in grado di associare a ciascun colore un valore numerico, corrispondente alle
coordinate del colore nella tabella.
I pixel che compongono
SuperMario, quindi, possono
venire codificati in base alla
loro posizione ed al loro
colore,
permettendo
di
esprimere lʼimmagine, una
sequenza di pixel, sotto forma
di una sequenza di numeri.
567872872983093948748974987498748467101
187627862876783546354137676129123621352
413651243873614983502385746754779090939
423847293847283478237492384723894728347
298374283647165155155625465463546354376
473658475984759824757671511019824928493
849340283918091740375474783474736478364
734637843940109134813409463074560384756
038476501837465087314650138746507834560
384756037486578346574658734506183745601
837465018376456758403876573480187364571
088573465783104587134653178451103874650
Si procede in maniera
analoga per la foto da 12
milioni di pixel. Non è affatto
un caso che le foto più
dettagliate
occupino
più
spazio nel computer: ci sono
semplicemente
più
pixel
codificati.
108927350456345347653845098753094857039
845628765039417538945734589349058340958
447826296567346374637463349348989810101
029493848374873487394873481761764739487
398473948738471893749183748374837483743
814718397491384791834781347139847183947
318478134718347387483478347384738748738
473483748734873847384738478347834738478
347834791837498137483483138746507834560
384756037486578346574658734506183745601
837465018376456758403876573480187364571
088573465783104587134653178451103874650
0
1
2
Come si sarà notato, nella tabella che permette la codifica dei colori, non tutte
le sfumature sono presenti. Basta prendere due quadrati adiacenti e
immaginare di prendere il colore intermedio: esso non è chiaramente presente
nella tabella, quindi non è un colore codificato.
Questo vuole dire che solo una piccola parte dei colori presenti nello spettro
dellʼarcobaleno può essere codificato. Numerosissime sfumature (infinite, per
essere precisi) rimangono tagliate fuori dalla codifica. Dʼaltronde non è
pensabile di avere una tabella di dimensioni infinite per accomodare le infinite
sfumature dei colori.
Questo è il problema della conversione dallʼ“analogico” al “digitale”: la codifica
di fenomeni fisici comporta sempre una perdita di informazione. Volendo fare
un parallelo con la matematica, i fenomeni fisici sono caratterizzati da
sfumature infinitesimali analoghe ai numeri reali, mentre le codifiche sono
corrispondenze con i numeri naturali, che, pur essendo infiniti, sono
comunque molto minori di quelli reali e non riescono a fungere da riferimenti
alle suddette sfumature.
Analogico
vs.
Digitale
Eʼ il discorso delle persone che dicono che guardare una foto non potrà mai
eguagliare la visione del vero.
In realtà, tridimensionalità a parte, le codifiche attuali di colori arrivano a
catturare milioni di sfumature, molte delle quali indistinguibili allʼocchio umano.
Quindi, seppur con perdite, le codifiche ci permettono di avere delle
approssimazioni più che buone della realtà. Abbiamo menzionato prima che la foto dettagliata dei dolci dà luogo a una
sequenza codificata di numeri molto più lunga di quella relativa al disegno
molto semplice di SuperMario.
Le lunghezze delle codifiche naturalmente dipendono da che cosa viene
codificato: maggiore è lʼinformazione da codificare, più lungo è il risultato, e
infatti la foto dei dolci (con tutti i dettagli e le sfumature dati dai 12 milioni di
pixel) sicuamente occupa più spazio nel computer che il disegno di
SuperMario (che, di fatto, è una sequenza di 16 x 12 pixel).
Compressione
Vi sono, però, modi diversi di descrivere la sequenza di pixel codificati, e, se
scegliamo in maniera accorta, possiamo ottenere una descrizione più breve
della stessa sequenza, in modo da farle occupare meno spazio sul computer,
e anche risparmiare tempo nel trasmetterla da un computer allʼaltro.
Chiamiamo “compressione” un modo per ottenere sequenze di simboli che
descrivono una particolare informazione in maniera più breve del semplice
elenco delle codifiche di ciascun elemento che la compone. pixel bianco, pixel verde,
pixel verde, pixel giallo,
pixel giallo, pixel giallo,
pixel giallo, pixel verde,
pixel verde, pixel verde,
pixel verde, pixel bianco
1 pixel bianco, 2 pixel verdi, 4 pixel gialli, 4 pixel verdi, 1 pixel bianco
La descrizione dellʼimmagine
di SuperMario, ad esempio,
può
essere
compressa
descrivendone i pixel come
mostrato nel secondo riquadro
rosso.
Qualunque tipo di informazione che può essere codificato, può essere compresso.
Il rapporto di compressione, ossia quanto riusciamo a sintetizzarne la descrizione,
dipende dal contenuto dellʼinformazione. (Immaginate di dover descrivere un
rettangolo 16 x 12 tutto bianco. Come fareste?)
Vediamo ora come funziona la
codifica che permette di avere
musica sul computer.
8
ampiezza
timbro
frequenza
I suoni, e quindi anche la musica, sono dovuti a vibrazioni
dellʼaria (o di un qualsiasi mezzo*) che si propagano sotto
forma di onde e che, colpendo i nostri timpani, danno luogo a
ciò che noi percepiamo con le nostre orecchie. Le onde sonore
sono caratterizzate da unʼampiezza (che determina lʼintensità
del suono: più è ampia lʼonda più è forte il suono), una
frequenza (che determina lʼaltezza della nota: note alte
corrispondono a frequenze alte), e da una forma (che
determina il timbro del suono: la mia voce, quella di Giovanna,
pianoforte, violino, piatti…)
*nel vuoto i suoni non si propagano
Campionamento
La codifica dei suoni si basa sulla codifica delle onde che li
producono, a sua volta basata su una procedura chiamata
campionamento.
Il campionamento consiste nel considerare lʼonda che costituisce il suono solo in
determinati istanti temporali. Immaginate di descrivere lʼonda del suono (con la sua
ampiezza, frequenza, e forma) in un piano cartesiano, e di considerare solo
determinati punti di tal curva.
A tali punti corrispondono, nel piano cartesiano, delle precise coordinate, il cui valore
numerico viene usato come codifica del suono “campionato”. La sequenza delle
codifiche dei campioni costituisce la codifica dellʼintera informazione sonora
rappresentata dallʼonda.
frequenza di campionamento
Non cʼè un criterio universale per stabilire
la distanza tra un campione e lʼaltro (o il
suo inverso, noto come “frequenza di
campionamento”). Eʼ facile immaginare
che a campioni più vicini tra di loro
(frequenza di campionamento maggiore)
corrisponda una codifica più lunga, ed
anche una ricostruzione più fedele alla
curva originale. Anche nel caso delle
codifiche di suoni e musica, ci sono
metodi di compressione per sintetizzarne
la descrizione. I famosi file MP3 si
chiamano in questo modo perché
prendono il nome da una specifica
tecnica di codifica dei suoni con
compressione. Anche in questo contesto
vi sono persone che affermano che il
suono di un MP3 su un computer non
eguaglierà mai la qualità di un concerto
dal vivo: è tutta una questione di
approssimazioni.
La codifica di un suono serve a farlo
elaborare a un computer (ad esempio,
per permettere il trasferimento di un
brano dal negozio online iTunes al nostro
computer). Noi, però, anche nellʼera
digitale, continuiamo ad ascoltare con le
nostre orecchie, e per far sì che il nostro
ascolto sia possibile, necessitiamo di
onde sonore che si propagano nellʼaria.
Si rende necessaria, dunque, una
riconversione dalla codifica numerica alle
onde sonore: abbiamo cioè bisogno di
altoparlanti che, comandati dai segnali
elettrici prodotti dal computer secondo i
numeri contenuti nella codifica del brano,
fanno vibrare delle membrane che
producono onde che noi percepiamo
come suoni e musica.
analogico vs. digitale, di nuovo
Vediamo infine come procedere per
codificare i filmati.
8
In realtà, avendo a
disposizione le tecniche
di
codifica
delle
immagini e dei suoni, è
facile immaginare che
esse
si
possono
combinare per creare
codifiche di filmati.
+
=
Servono solo delle tecniche
aggiuntive per tener conto della
sincronizzazione tra immagini e
suoni,
e
dellʼeventuale
compressione basata sullʼidea di
non descrivere tutti i pixel di
ciascuna immagine, ma di
descrivere quella iniziale e poi di
concentrarsi sull differenze tra
unʼimmagine e la successiva
(compressione
migliore
con
fotogrammi
molto
simili,
compressione peggiore con
cambio di scena).
+ …
Come già detto, lʼapprossimazione che si ha passando da fenomeni
fisici come i colori e le onde sonore a codifiche numeriche adatte a
un computer ricorda il rapporto che cʼè tra numeri reali e i numeri
naturali in matematica. Forse lʼuso dei numeri naturali per parlare
del concetto di codifica può sembrare limitativo e può sembrare
invitare a coinvolgere i numeri razionali, ma il discorso alla base
non cambia: anche con i numeri razionali, le codifiche non riescono
a riprodurre in maniera federe un fenomeno fisico, ma portano con
sé inevitabili approssimazioni. Il numero nella slide precedente, ad
esempio, rappresenta solo una parte dello sviluppo decimale del
numero π. Possiamo approssimarlo a nostro piacimento, ma una
parte della descrizione di π rimarrà comunque tagliata fuori e non
può essere inclusa, dal momento che nessun calcolatore è capace
di contenere una sequenza infinita di cifre. Lʼimportante è che
lʼapprossimazione arrivi a un dettaglio tale che la ricostruzione del
fenomeno fisico risulti indistinguibile dallʼoriginale agli occhi (o alle
orecchie) dellʼessere umano che utilizza il computer per elaborarlo.