Il codice Baudot, i precursori e i successori del codice ASCII, e… I Coldplay (!?)

codice_baudotProprio ieri un collega mi chiedeva come fa, fisicamente, una email a viaggiare lungo un filo, in pratica come è possibile che ciò che viene scritto a video possa poi essere trasmesso lungo una linea elettrica.

La domanda in verità non è affatto banale e va quindi spiegata come si deve dal momento che ogni giorno vengono applicate, ai nostri gesti quotidiani, alcune tecnologie che banali non sono e possono aiutare meglio a capire cosa c’è alla base delle moderne metodologie di comunicazione. Cercherò quindi di esprimermi in maniera abbastanza elementare anche se per forza di cose alcuni concetti, inizialmente, possono apparire un po’ complicati.

La storia della codifica dei caratteri iniziò nel 1838 con lo sviluppo completo del codice Morse, che ben tutti conosciamo in quanto alcune nozioni di tale codice vengono già date alle scuole elementari.

La codifica dei caratteri nacque dall’esigenza di semplificare la trasmissione di un messaggio per poterla adattare al mezzo  utilizzato. Essendo il mezzo di trasmissione elettrico quello più veloce in assoluto, si fa quindi viva la necessità di dover trasmettere le singole lettere che compongono un messaggio lungo una linea elettrica, e di conseguenza  inventare dei sistemi per poter codificare l’alfabeto per poterlo adattare alla “forma” elettrica. (In un certo senso un concetto del genere era già stato anticipiato dagli indiani con i segnali di fumo, sfruttando però l’aria).

codice_morseIl codice Morse fu proprio il primo di questo tipo: una sequenza di segnali elettrici corti e lunghi (punto e linea) che non sono nient’altro i precursori dei nostri zero e uno. In realtà il codice Morse non fa uso soltanto di due “tipi di segnale” per poter effettuare la trasmissione: vi sono anche 3 tipi di intervalli (corto, medio e lungo, necessari per poter distinguere singole lettere, parole e frasi) che portano a 5 il numero di segnali (o stati o transizioni) necessari.

Nel codice Morse una certa sequenza di linee e punti identifica quindi un carattere ed ogni carattere è separato da una pausa breve. Per trasmettere la lettera A, ad esempio, invieremo sulla linea elettrica un impulso breve e uno più lungo (punto-linea). Dall’altro lato, chi riceverà la lettera “A” ascolterà una nota breve seguita da una nota lunga (oppure ci sarà un pennino, comandato da un’elettrocalamita, che si abbasserà in corrispondenza della presenza o meno della tensione elettrica sulla linea di ricezione, o ancora ci sarà una lampadina che riceverà corrente per un istante breve, si spegnerà e subito si riaccenderà per un istante un po’ più lungo).

E’ importante notare il fatto essenziale che nel codice Morse, ogni carattere non è identificato da un numero fisso di impulsi: la lettera A è codificata mediante un punto ed una linea (quindi 2 impulsi), la lettera B è codificata da una linea seguita da 3 punti (4 impulsi quindi) ecc. Per tale motivo è necessario quindi inserire una pausa (un terzo “stato”, un terzo tipo di impulso insomma) tra l’invio di un carattere e il seguente, altrimenti non si potrebbe distinguere quando finisce una lettera e ne incominicia un’altra. Fin qui il funzionamento del codice Morse dovrebbe essere chiaro.

Successivo al codice Morse fu il codice Baudot, sviluppato nel 1874. E’ tale codice, in realtà, il vero antenato del codice ASCII (il codice che è alla base di tutti i sistemi di codifica attualmente utilizzati) in quanto fa uso soltanto di due “segnali”: uno e zero  (acceso e spento, ovvero: segnale elettrico presente e segnale elettrico non presente). A differenza del codice Morse, che non aveva un numero fisso di impulsi per identificare un carattere, qui invece abbiamo che ogni carattere, ogni lettera è identificata sempre da un numero fisso di segnali: 5 nella fattispecie.

Questa innovazione permette di non avere più la necessità di inserire altri segnali per separare le singole lettere: i segnali verranno ricevuti a gruppi di 5, ogni gruppo di 5 identifica un carattere, per cui sappiamo che una volta ricevuto il 5° impulso abbiamo completato una lettera e il 6° impulso appartiene alla lettera successiva e così via.

Si incomincia a fare vivo il concetto di BIT, ovvero la più piccola quantità di informazione possibile: nel codice Baudot ogni lettera è quindi codificata da 5 bit, ovvero da una sequenza di 5 impulsi ed ogni impulso può valere zero (il segnale elettrico non c’è: la lampadina rimane spenta) o 1 (il segnale elettrico c’è, la lampadina rimane accesa).

Nel codice Baudot la lettera A è codificata con 3 zeri e 2 uno (00011), per cui, quando invieremo la nostra lettera A sulla linea di trasmissione, ci saranno 3 “istanti” in cui non è presente tensione subito seguiti da 2 istanti in cui la tensione è presente: incomincia quindi a farsi vivo anche il concetto di velocità di trasmissione: per distinguere un singolo bit del carattere è necessario anche calcolare il tempo per poter capire quando finisce un bit e quando inizia il successivo.

Avendo a disposizione 5 bit per carattere, sono quindi possibili 32 (ovvero 25) combinazioni possibili di zero e uno, più che sufficienti quindi per poter codificare l’intero alfabeto ma… se dobbiamo anche trasmettere numeri, simboli (come le parentesi, punto interrogativo, virgola ecc ecc)? 32 simboli ovviamente non bastano più. E qui, l’inventore del codice Baudot ha avuto un’altra genialata: ha inserito due caratteri speciali che permettono di effettuare lo SHIFT (in un certo senso stiamo parlando dell’antenato di quella freccia verso l’alto che premete sulla tastiera per fare i simboli): un carattere speciale permetterà a chi riceve il messaggio di capire che tutto quello che segue è da interpretare come lettere e un altro carattere permetterà di capire che quello che stiamo trasmettendo sono simboli. In tal modo è possibile associare ad un singolo codice due caratteri differenti, in questo modo abbiamo a disposizione 62 caratteri possibili (sarebbero 64 ma due abbiamo detto che servono per effettuare lo shift da caratteri a simboli e viceversa). Ovviamente 62 caratteri disponibili diventeranno troppo pochi per gli anni a venire dal momento che, si sa, le esigenze vanno sempre ad aumentare con il passare del tempo e mai a diminuire.

Dovrà passare quasi un secolo (siamo nel 1961) per giungere al codice ASCII. Il codice ASCII era composto  da una codifica dei caratteri a 7 bit (128 caratteri). I primi 31 caratteri non sono stampabili e vengono definiti “codici di controllo”: servivano difatti per andare a capo, per indicare che abbiamo iniziato la trasmissione ecc ecc.Teniamo conto che all’epoca venivano utilizzati per le telescriventi.

Venne in seguito aggiunto un 8° bit a tale codifica (ottenendo quindi caratteri codificati da un byte – 8bit -, per un totale di 256 caratteri possibili). Mentre i primi 128 caratteri (dallo 0 al 127) sono “universali”, cioè riconosciuti da tutti i sistemi al mondo, gli altri caratteri (dal 128° al 255°, creati dall’aggiunta dell’8° bit alla codifica originale), variano da paese a paese definendo quello che viene chiamato CodePage, e standardizzato dalla normativa ISO 8859. In Italia usiamo la codifica ISO8859-1, in Russia usano la codifica ISO8859-5 (in Russia viene usato l’alfabeto cirilico) ecc. Tutto questo sta ad indicare che i primi 128 codici sono uguali per tutti, mentre i restanti sono differenti da paese a paese, e quel numeretto dopo l’8859 (che identifica la normativa) sta appunto ad indicare il codepage usato.

La codifica secondo la normativa 8859, però, non permette il supporto per le lingue dell’est asiatico perchè gli altri 128 caratteri a disposizione per creare un altro codepage non basterebbero per poter codificare tutti gli ideogrammi usati da tali lingue…

Per ovviare a tutti questi inconvenienti e permettere la trasmissione corretta di tutti i tipi di simboli è nato infatti il consorzio UNICODE che ha proposto il suo sistema di codifica dei caratteri (nel 1996 sono state presentate le codifiche che vanno sotto al nome di UTF-8 e UTF-16), che fa per forza di cose uso di più di 8 bit, e che permette di codificare tutti i tipi di caratteri esistenti, compresi i simboli matematici e i caratteri delle lingue morte (!!). Il lavoro di tale consorzio è davvero enorme e ogni giorno c’è qualche novità in questo campo, il che rende molto difficile il riuscirsi a districare tra tutti i tipi di codifica dei caratteri.

Arrivati a questo punto vi chiederete cosa c’entra il gruppo rock britannico dei Coldplay, citato nel titolo di questo articolo, con tutto ciò… E che cosa sarà mai quello strano disegno. Beh… c’entrano eccome. Nel 2005 i Coldplay hanno pubblicato il loro terzo album, dal titolo X&Y avente questa copertina:

coldplay-xy

In realtà tale disegno apparentemente privo di significato rappresenta appunto il titolo dell’album (X&Y) scritto in codice Baudot: ogni gruppo di due quadratini colorati rappresenta un 1 e ogni spazio vuoto uno zero. I singoli caratteri sono rappresentati in colonne (come si vede abbiamo 4 colonne perchè è presente lo shift per ottenere la &) e in ogni colonna i primi due bit sono separati dagli altri 3 da una linea tratteggiata rossa… Non c’è che dire: hanno avuto un’ idea molto originale. Anche tutti i singoli estratti da tale album hanno le copertine disegnate allo stesso modo, rispecchiando il titolo del singolo. Se vi interessa, qui vi è un articolo più esauriente sulla storia della copertina di questo album (in realtà nella copertina vi è un errore). Qui invece c’è uno script che permette di ottenere questa grafica con le parole che vogliamo noi (ed è quello che ho usato per l’immagine in cima all’articolo).

Se invece volete approfondire la storia e le codifiche dei caratteri, non c’è niente di meglio di questa pagina di wikipedia per cominciare.

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)