giovedì 25 novembre 2010

I computer sono analfabeti?

   Forse oggi, quando scriviamo una lettera o quando leggiamo un quotidiano, non ci rendiamo in pieno conto di quanto sia stata straordinaria l’invenzione dell’alfabeto, compiuta dai Fenici più di due millenni or sono. Come sarebbe la nostra vita, se oggi fossimo ancora costretti a comunicare con astrusi segni geroglifici, come facevano gli antichi egizi? Questi ultimi, infatti, erano costretti ad imparare migliaia di segni, alcuni dei quali rappresentavano concetti, altri degli oggetti; quasi non bastava un’intera vita per conoscere tutti i segni disponibili e, per tale motivo, gli scribi, che possedevano queste conoscenze, costituivano una casta molto potente nell’antico Egitto. In seguito i Fenici ebbero la geniale idea di usare dei segni che rappresentassero suoni, così, combinando un numero limitato di lettere, sarebbe stato possibile comporre un numero potenzialmente infinito di parole.
   Così nacque l’alfabeto, anzi gli alfabeti, perché dopo quello fenicio, nacquero quello greco (modellato su quello fenicio, cui i greci aggiunsero le vocali, che i fenici non scrivevano), quello latino, e così via. Oggi esistono tanti alfabeti nel mondo, ma l’idea di fondo rimane intatta, anche se esiste qualche problema, quando si tratta di trascrivere una parola da un alfabeto ad un altro.
Anche i computer conoscono l’alfabeto? In realtà, il computer identifica le lettere dell’alfabeto associando a ciascuna di esse un numero. Negli anni passati veniva utilizzato dai PC un sistema di codifica dei caratteri chiamato ASCII, che funzionava a 8 bit e dunque era in grado di riconoscere fino a 2 (elevato 8) caratteri, cioè 256; in verità, non tutti i computer riuscivano ad usare tutti i caratteri disponibili, ma la maggior parte di essi riconoscevano fino a 27 caratteri (128) e occorrevano tastiere particolari dotate di un apposito tasto speciale per attivare anche l’ultimo bit del set ASCII (come le leggendarie tastiere dei computer lisp, usate a Stanford negli anni ottanta). Ma il sistema ASCII, che associava ad ogni segno un numero, funzionava perfettamente solo per l’alfabeto latino, mentre altri alfabeti adoperavano set di codifica differenti. Dunque, quando si doveva trasmettere qualche dato da un terminale situato in Gran Bretagna che usava il codice ASCII ad un altro terminale situato in Grecia, dove veniva usato un sistema di codifica differente per un alfabeto diverso, il rischio di perdita di informazioni era notevole.
   Così, negli ultimi anni è stato sviluppato un nuovo sistema di codifica più ‘universale’, che prende il nome di Unicode. Anch’esso associa un numero ad ogni segno, ma nella versione standard funziona a 16 bit, dunque permette di codificare fino a 2 (elevato 16) caratteri diversi, cioè ben 65535!. Nella memoria del calcolatore ogni numero viene codificato in formato esadecimale e ad esso viene associata una lettera di ogni alfabeto. In tal modo è possibile usare un unico sistema di codifica dei caratteri che possa comprendere l’alfabeto latino, quello greco, quello cirillico (che usano la scrittura da sinistra verso destra) quello ebraico, quello arabo (che usano la scrittura da destra verso sinistra), e così via, senza alcun rischio di perdita d’informazioni nella comunicazione tra computer che usano alfabeti diversi.
   Ma è possibile per l’utente ricavare il numero Unicode con cui è identificata una determinata lettera dell’alfabeto? Certo, utilizzando uno script formulato in un linguaggio di programmazione. Come esempio, potremmo usare il linguaggio javascript per comporre un piccolo programmino che consenta, data una stringa di testo, di estrarre il codice Unicode di una determinata lettera contenuta nella stringa stessa. A tale scopo creeremo un form contenente due campi di testo: uno per inserire la stringa di testo ed uno per visualizzare il codice unicode ricavato.


   La funzione che ci viene in aiuto è string.charCodeAt(), che consente, data una stringa di testo, di estrarre il valore Unicode della lettera che si trova nella posizione indicata tra parentesi. Così, se la stringa fosse la parola latina historia, la istruzione stringa.charCodeAt(0) estrarrebbe il codice Unicode della lettera collocata in posizione 0 cioè ‘h’.
Ecco il codice della funzione, che viene attivata dal pulsante estrai:

function estrai_cod(){
var stringa= unicode.stringa.value;
var cod= stringa.charCodeAt(0);
unicode.codice.value=cod;

   In sostanza, la funzione definisce come variabile il valore del campo di testo stringa contenuto nel form chiamato unicode, poi estrae dalla parola contenuta nel campo di testo il valore unicode corrispondente alla lettera in posizione 0 (quella iniziale), quindi inserisce il valore nel campo di testo denominato codice contenuto nello stesso form. Ecco il risultato, visualizzato nel browser Safari:



   Così, ciccando sul pulsante estrai, veniamo a sapere che la lettera ‘h’ minuscola, con la quale i latini rendevano nella loro lingua i suoni aspirati che essi trovavano nelle parole di origine greca (nel nostro esempio la parola historía (in traslitterazione latina), che iniziava con lo spirito aspro) ha in Unicode ha il valore (in decimale) di 104. Ricordiamoci, quindi, che non è esatto dire a qualcuno che “non vale un’acca”, pensando che tale lettera non valga nulla; infatti essa non vale 0… bensì 104!
   Dunque, non è esatto chiedersi se il computer riconosca o meno le lettere dell’alfabeto: per lui si tratta solo di una serie codificata di numeri da associare a lettere; semmai, quando si parla di calcolatori, bisogna preoccuparsi che non siano analfabeti (in vari sensi…) coloro che li usano!


Ferdinando G. Rotolo (novembre 2010)

Nessun commento:

Posta un commento