Un mondo digitale: un mondo di cifre

Cifre e Algoritmi- 2a LEZIONE

Un mondo digitale: un mondo di cifre

di Sergio Ragaini. Dopo avere esaminato l'algoritmo, ci occupiamo della sua codifica, per capire le tecniche digitali e come potrebbe funzionare un robot del futuro

Dopo avere compreso cosa è un algoritmo, facciamo il primo passo verso la sua codifica. Per farlo, ripartiamo dalle cifre. Come visto, queste costituiscono un sistema di numerazione, o, meglio, la sua base. Abbiamo appena visto che un algoritmo deve essere codificato nella forma più semplice possibile. Ci si aspetterà, quindi, che per farlo si utilizzino il numero minino di cifre. E infatti è proprio così: si utilizzerà un sistema di codifica che, basato sulle cifre, consideri il numero minimo di cifre possibili.
Ricordiamo quanto detto prima: un sistema di numerazione deve avere almeno lo zero, altrimenti le cifre non hanno “peso”. Se, ad esempio, consideriamo un sistema di numerazione che abbia solo il numero 1, l'unico modo per codificare del numeri sarebbe mettere una serie di 1 in fila uno dopo l'altro. Un metodo che, sicuramente, non apparirebbe molto efficace per il nostro scopo: infatti, occorrerebbero tantissimi elementi anche solo per codificare un singolo numero. E sarebbe una codifica che ricorda molto da vicino quella dei bambini, che contano con le “aste”, dove, al posto delle aste, si sostituisse il numero 1.
Occorre quindi qualcosa di semplice, ma che comunque comprenda lo zero. E questo è presto fatto: un sistema che contenga soltanto due cifre: 0 e 1.

Due opzioni possibili
In termini tecnici, questo corrisponde ai due stati di un sistema qualsiasi, dal più semplice al più complesso: “spento” e “acceso”. Infatti, a parte strutture in qualche modo variabili, tutte le strutture elettroniche, o anche solo elettriche hanno questi due stadi. Una luce, ad esempio, può essere spenta o accesa. In generale non ha altre opzioni possibili. Come un computer, ad esempio.
La codifica con 0 e 1 appare, quindi, perfetta per passare dai processi ai meccanismi, come se diceva nella parte precedente di questo lavoro. Una codifica che conosca solo due stadi: spento e acceso, ci permetterà di codificare qualsiasi tipo di processo in maniera semplice e agevole. Il sistema di numerazione che permette di fare questo si chiama “Sistema Binario”. E conosce, appunto, solo le cifre 0 e 1.
Qualsiasi numero, quindi, si codificherà solo con queste cifre, dove, man mano che ci si sposta a sinistra, il valore delle cifre raddoppierà. Per chi conosce notazioni matematiche come quella che segue è interessante far notare che un numero binario può essere scritto mediante elementi del tipo: ak2n-k. Questo modo di codificare è la base della cosiddetta “elettronica digitale”. Che è il fondamento, a sua volta, di qualsiasi sistema informativo.

Elettronica digitale: nessuna “via di mezzo” possibile
Il termine digitale, molto usato, che però molti usano senza capirlo, deriva da “cifra”. Quindi, una tecnologia digitale è una tecnologia fatta di cifre. Cosa si intende con questo? Semplice: si intende un sistema che, invece che strutture di altro tipo, lavora con strutture di cifre e codici numerici.
Per essere ancora più chiari, consideriamo il termine che viene sovente contrapposto a digitale, che è analogico. Il termine deriva da analogia. Vale a dire, da qualcosa che si comporta “imitando” una determinata struttura. Per comprendere meglio, pensiamo ad un vecchio disco in vinile. Il microsolco, che era la solcatura che vi si poteva leggere, imitava in qualche modo l'onda musicale che dava origine al suono. La puntina del giradischi, leggendo tutto questo, permetteva di riprodurre il suono, visto che in qualche modo quello che leggeva “assomigliava” al suono stesso.
Lo scopo di un processo analogico, quindi, è quello di riprodurre qualcosa che “assomigli” il più possibile alla struttura di partenza.

La tecnologia digitale ribalta tutto questo
Lo scopo di questa tecnologia non è quello di riprodurre qualcosa che assomigli ad un determinato elemento, ma quello di “approssimarla” in maniera finita, attraverso codici numerici. Questo discorso può sembrare strano e sibillino, ma è molto più semplice di quello che possiate pensare.
Consideriamo quindi una curva, che potrebbe rappresentare l'onda sonora di una melodia. Un sistema analogico cercherà di riprodurla per quella che è, avvicinandosi sempre più all'onda stessa. Un sistema digitale, invece, cercherà di approssimarla con delle strutture più semplici, quali spezzate o funzioni che, in termini matematici, si chiamano “costanti a tratti”, avvicinandosi quindi il più possibile alla funzione di partenza.
Per i matematici, questo è anche il procedimento per calcolare gli integrali di Riemann (approssimare un'area sotto una curva con una serie di elementi che in qualche modo la approssimino), e di Lebesgue (approssimare una curva con funzioni costanti a tratti).

Un dispositivo digitale non legge il suono, ma codici numerici
Nelle tecnologie digitali succede proprio questo: un dispositivo digitale non legge più qualcosa che, in qualche modo, contenga il suono sotto forma di onda, ma una serie di codici numerici, codificati in vario modo (nel caso di un Cd Audio in luci ed ombre, ad esempio), che indichino tutti i parametri del suono. Approssimati con un numero definito e finito di elementi.
Questo permette qualcosa di migliore, perché si faranno solo un numero finito di errori ed il tutto sarà approssimabile con una precisione che si può decidere a priori e che può essere piccola a piacere. Si abbandona, quindi, con il digitale l'idea di approssimare qualcosa in maniera precisa, avvicinandosi alla sua forma, ma si costruisce qualcosa che vi si avvicini da una forma completamente diversa: che, quindi, in qualche modo la approssimi da qualcosa di differente.
Un mondo bellissimo, che permette maggiore precisione. La codifica di tutto questo sarà di tipo binario. Come si codifica un elemento, lo vedremo tra pochissimo.

Un dispositivo funziona o non funziona
Intanto pensiamo a come funziona un sistema che abbia solo 0 e 1 come elementi. Non ha, come ben si può capire, altre opzioni: ha solo due cifre, con le quali si codifica tutto. Questo vuol dire che, questo ipotetico sistema, non conoscerà vie di mezzo. Infatti, non esiste un eventuale 0,5, o 0,3. Esistono solo 0 e 1. quindi, in generale, un prodotto digitale avrà solo queste due possibilità: funziona o non funziona.
Per comprendere questo, pensiamo al segnale televisivo digitale, che in Lombardia, dal 26 novembre 2010, è diventato l'unico disponibile. Se ricordiamo i vecchi segnali analogici, ricordiamo che qualcosa si vedeva bene, poi peggio, poi ancora peggio..... insomma: una cosa poteva “vedersi bene” o “vedersi male”, e comunque il peggioramento era graduale. Proprio come era graduale l'avvicinarsi al segnale: lavorando su una lettura che approssima, la cosa era sempre “un passo alla volta”. Nel mondo digitale, invece, questo non succede. Nel senso che, essendoci sono due stati possibili, non c'è gradualità. Esattamente come non c'è quando si accende o si spegne la luce: a meno di non avere a disposizioni reostati variabili, esistono solo due possibilità: luce accesa o luce spenta.
Pensando al segnale digitale, come ben si può capire, e come tutti voi avrete percepito, esistono solo due opzioni: si vede o non si vede. Infatti, viene letto un codice numerico, che poi viene decodificato. Quando questa decodifica è possibile, tutti gli eventuali errori vengono “bypassati” (in fondo, il sistema che si utilizza serve proprio a questo!). Se, invece, la decodifica non è possibile, semplicemente.... non si vedrà nulla! Vi sarà un passaggio, è vero, in cui l'immagine si vedrà come “a tasselli”. Vuol dire che siamo vicini alla soglia minima di segnale. Ma sarà cosa da poco! Una sorta di “sgranamento del segnale” che, solitamente, prelude al non vedere! Vi saranno quindi solo due stadi: segnale sufficiente = si vede, segnale insufficiente = non si vede.

Anche se il CD è imperfetto, il sistema dà un suono perfetto
Anche in un Cd Audio accade la stessa cosa: come ben saprete, quando lo si inserisce, questo gira molto rapidamente e vengono poi identificate il numero di tracce e la durata complessiva. Se, quindi, qualcosa non è perfetto, non importa: il sistema darà comunque un suono perfetto, perché ha “compreso” che le informazioni a disposizione sono sufficienti per avere il segnale migliore. E noi non percepiremo l'imperfezione. Tuttavia, se il Cd Audio è troppo rovinato, il sistema ritornerà un messaggio di errore e nessuna riproduzione sarà possibile.
Il passaggio tra queste due opzioni, come nel caso del segnale televisivo, sarà immediata o quasi. Questo ci dice che, nelle tecnologie digitali, nella maggior parte dei casi si passa dal funzionare al non funzionare, senza che, praticamente, vengano dati avvisi di questo. Uno smartphone, ad esempio, potrebbe, in un istante, passare da una condizione di perfetto funzionamento ad una di non funzionamento. Una condizione spesso irrecuperabile.

Luci e ombre delle tecnologie digitali
Il vantaggio è che queste tecnologie permettono di fruire di qualcosa che, fino all'ultimo, funziona praticamente perfettamente. Lo svantaggio è che, da un istante all'altro, queste smetteranno di funzionare. 0 e 1: non ci sono vie di mezzo. Che hanno i loro grandi vantaggi, ma anche il problema di non conoscere mezze misure: o sì o no, o funzionamento o non funzionamento. Nessuna soluzione intermedia sarà possibile.
Dopo avere visto il metodo con cui l'informazione viene codificata, ci apprestiamo ora a cercare di comprendere come questa informazione viene recepita dall'elaboratore elettronico. La parte che seguirà potrà apparire un pochino “tecnica”. Tuttavia, se la seguite con attenzione, vedrete che non è così impegnativa. Se proprio non ce la fate, però saltatela: il discorso dovrebbe comunque apparirvi poi chiaro!

Codifica dell'informazione
(una parte un po' più tecnica, ma credo possibile da capire)
Per comprendere come un computer codifica le informazioni, pensiamo a come è fatto il linguaggio, almeno nelle lingue occidentali. L'elemento base è il carattere. Questo è vero anche in termini informatici: il carattere informatico si chiama byte. Il byte è, quindi, l'elemento base di informazione, quello che fa l'informazione.
Ma c'è un elemento ancora più piccolo, strettamente connesso con quanto si diceva ora, riguardo alla codifica dell'informazione: il bit. Un bit, termine usato anche in maniera simbolica, è come un piccolo interruttore, che può essere acceso o spento. A questi stati corrispondono, rispettivamente, i valori 1 e 0. E siamo alla codifica binaria dell'informazione. Un computer, come dicevo, conosce solo due stadi: sì(1) e no(0). Il sistema di numerazione per la macchina è quindi binario.
Il bit è un'unità base: contiene solo un piccolo interruttore (o qualcosa che si può magnetizzare o smagnetizzare) ed ha solo due valori possibili. Con questo elemento si costruisce tutta l'informazione che conosciamo.
I bit si riuniscono in formati di otto, e creano così la struttura base dell'informazione, che abbiamo visto essere byte. Che, quindi, è formata da otto bit e contiene, come visto, un singolo carattere.

Ogni elemento dell'informazione ha una codifica
Ma quanti caratteri possono essere contenuti in questa unità? È presto detto, e si ottiene con un semplice calcolo. I caratteri possono andare da 00000000 a 11111111. Eseguendo i conti come visto in precedenza, i valori possibili andranno da 0 a 255. I caratteri codificabili saranno quindi 256.
Qualsiasi elemento dell'informazione, che sia un carattere piuttosto che un comando possibile, avrà una codifica in un numero da 0 a 255, e verrà inserito in un byte. Il sistema di codifica che permette questo è, solitamente, un sistema che si chiama “Ascii”. Quindi, ad ogni elemento (ad esempio una lettera, ma anche eventualmente in comando, come il segno di “a capo”) si associa un numero attraverso questo sistema di codifica, e lo si inserisce in una singola casella dell'informazione.
Con questo, tutte le complesse operazioni che vengono compiute, si effettuano.
Le indicazioni di memoria di un sistema informativo sono relative appunto ai byte. Quando, ad esempio, diciamo che un computer ha una memoria di 8 Gb, affermiamo che ci sono 8 Giga di byte (quindi otto miliardi) nella memoria.
La precisazione che però è importante fare è che, in capo informatico, il passaggio da un termine ad un altro superiore non si ottiene moltiplicando per 1000, ma per 1024. Infatti, si lavora sempre per multipli di 2. Ad esempio, quindi, per passare da byte a Kbyte (Kilobyte o Kb)) si moltiplica per 1024 = 210. Quindi un Kbyte equivarrà a 210 byte, un Mbyte (Megabyte) a 210 Kbyte, vale a dire a 220 byte, un Gigabyte (Gbyte o Gb) a 210 Mbyte, vale a dire 230 byte, un Terabyte (Tbyte o Tb) a 240 Mbyte e così via.
La memoria non basta mai, in termini informatici! Infatti, esistono computer che hanno una memoria sempre maggiore, e dispositivi che contengono sempre più dati. Questo perché i dati sono sempre più “corposi” e, quindi, occupano sempre più spazio in memoria.
Un'ultima riflessione sulla codifica dei byte. Un altro sistema di numerazione interessante è quello a base 16. Infatti, un byte può essere diviso in due parti, detti semibyte. In ogni semibyte abbiamo valori da 0000 a 1111, che vale 15. Possiamo quindi codificare ogni singola parte con un valore da 0 a 15. Se aggiungiamo alle cifre da 0 a 9 le lettere da A ad F, abbiamo il cosiddetto “Sistema Esadecimale”. Che ha appunto 16 cifre. In questo sistema avremo elementi del tipo 2A, F3D, 3FFE e così via.
Per fare un esempio, il byte 10110111 verrà diviso in 1011 e 0111. Che daranno rispettivamente B e 7. B7 sarà quindi la sua codifica. Una codifica molto “teorica” ma che, tuttavia, potrà essere utile.

Termina qui questa parte, con cui si sono, credo, gettate le basi per comprendere l'automazione. Sinora abbiamo visto come una macchina sia in grado di eseguire delle operazioni, quando gli viene detto tutto.
Ma una macchina può essere in grado di decidere, di capire autonomamente cosa fare, di prendere decisioni e di dedurre qualcosa? Questo insieme di azioni sono quelle che costituiscono la cosiddetta “intelligenza artificiale”. Sarà quello di cui ci occuperemo nella prossima parte di questo lavoro. Che ci porterà nel vivo di quello che è il presente dell'informatica. E ci traghetterà nel futuro, sempre più prossimo.

Per saperne di più:
*di Sergio Ragini, articolo sugli algoritmi
*Un'interessante biografia di Al Kwarizmi
*Algoritmi (Università di Torino)
*Codifica binaria e rappresentazione dell'informazione (Politecnico di Milano)
*Codifica Binaria (Youtube)
*Codifica dell'informazione (Università di Torino):
*Sistemi Digitali (Politecnico di Milano):