La nascita del computer...



Il matematico inglese Alan Turing (1912-1954) è stato uno degli scienziati più influenti del secolo XX, considerato l’iniziatore dell’era dei computer e dell’Intelligenza Artificiale. Le vicende personali della sua vita furono molto particolari. Fu uno dei membri più importanti del gruppo che decifrò durante la Seconda Guerra Mondiale il codice Enigma usato dai Tedeschi per i messaggi cifrati e morì suicida nel 1954 a soli 41 anni dopo essere stato condannato da un tribunale britannico alla castrazione chimica per omosessualità, allora vietata nel Regno Unito(1). Queste vicende sono state narrate in due film di successo: “Enigma” e “The Imitation Game”. Il secondo titolo si riferisce ad un test con cui Turing intendeva misurare l’intelligenza di un dispositivo intelligente.


Un precedente delle macchine calcolatrici può essere visto nei progetti di Pascal e Leibniz nel ‘600 e ‘700 (vedi NN. 44 e 53) e nelle macchine meccaniche dell’800 dovute all’intelligente figlia del poeta Byron, Lady Lovelace, ed al matematico inglese Babbage, capaci di compiere operazioni matematiche (N. 72).

Nel 1936 Turing raccolse la sfida posta dal grande matematico logico Hilbert (N. 93), che sosteneva la possibilità di trovare algoritmi (cioè una serie di formule matematiche) per dimostrare la veridicità di qualsiasi teorema matematico con una macchina calcolatrice(2). Turing ideò la struttura di una macchina detta di Turing-a (automatica) programmabile mediante un nastro fornito di caselle dove venivano inserite le informazioni utilizzando il sistema binario di Boole (N. 92) formato da BIT (quantità minima di informazione) che potevano assumere solo i valori 0 ed 1, o nessun valore (“blanck”).

Una testina di lettura e scrittura rilevava il dato, cioè lo stato della macchina, e lo sostituiva con uno nuovo, spostandosi poi di un posto. Esisteva anche una “tabella delle azioni” che programmava i vari stati della macchina (come in una lavatrice). Furono ideate versioni più complesse della macchina con più nastri o più testine, fino a giungere al modello Turing-u (universale) che era multi-programmabile (come gli odierni smartphone). Fu descritto anche un terzo tipo (teorico) ancora più versatile detto Oracle”. Turing aveva così creato il concetto di computer programmabile in cui il nastro aveva una funzione simile a quella della memoria RAM nei moderni calcolatori. Lo svizzero N. Wirth ha definito il programma come un algoritmo più una strutturazione dei dati.

Negli anni seguenti, in collaborazione con il matematico statunitense Alonzo Church (1903-1995), Turing definì computabile un algoritmo calcolabile con una macchina di Turing, riconoscendo che vi sono algoritmi e teoremi non computabili (ad esempio le sequenze dei numeri decimali di molti numeri reali, o la semplice asserzione che la somma di due numeri pari non è dispari!). Acquista, quindi, importanza il tempo di arresto della macchina, cioè il momento in cui il processo elaborativo finisce. Se la macchina continua a calcolare, ed il tempo di risposta continua a crescere esponenzialmente, teoricamente all’infinito, significa che l’algoritmo non è computabile. Church elaborò anche un linguaggio “lambda” equivalente ad una macchina di Turing, da cui poi nel 1958 John McCarthy (1927-2011) derivò il “linguaggio di programmazione funzionale” per macchine intelligenti” LISP.

Negli anni della Guerra, il gruppo britannico decifratore, in cui Turing ebbe una funzione di primo piano, mise a punto un dispositivo, detto “Bomba” per poter leggere i messaggi scritti dai Tedeschi con la macchina “Enigma”. La prima macchina effettivamente funzionante che somigliasse ad un computer fu il Colossus, costruito dal gruppo di decifratori britannici nel 1944 per decifrare un altro linguaggio criptato relativo alla macchina tedesca “Lorenz”. Il Colossus, il cui “hardware” (cioè la struttura materiale) era dovuta al tecnico Tommy Flowers, derivava da una precedente macchina “Robinson” a due nastri. La memoria era ottenuta collegando una serie di valvole, con una valvola sensibile alla luce (fotomoltiplicatore) che funzionava da amplificatore. Aveva due porte tipo AND ed OR, cioè circuiti elettronici che trasmettevano le informazioni in linguaggio digitale booleiano.

Il primo vero computer, progettato da Turing subito dopo la Guerra, quando si era spostato presso l’Istituto Nazionale di Fisica (PNL) fu il Pilot-ACE (Automatic Computer Engine), presentato nel 1950 e piuttosto avanzato per l’epoca. Esso utilizzava per la memoria colonne di Mercurio con terminali piezoelettrici in cui i dati erano distinti dal tempo in cui i segnali passavano attraverso la colonna dopo essere stati trasformati in ultrasuoni e poi ritrasformati in segnali elettrici. Il computer, che funzionò fino al 1955, possedeva anche una memoria principale e utilizzava programmi predisposti per effettuare operazioni matematiche invece di appositi circuiti elettronici. La memoria, divisa in caselle, era “a due indirizzi”, cioè conteneva sia l’indirizzo della casella interessata che l’indirizzo dell’istruzione successiva.

Dall’ACE derivarono alcuni computer commerciali come il DEUCE ed il MOSAIC. Turing, trasferitosi a Manchester – dove nel 1949 era stato completato da M. Wilkes il computer EDSAC, fornito di circuiti elettronici e 3000 valvole - partecipò alla programmazione di altri computer, come il Manchester Mark 1, per i quali l’ingegnere F.C. Williams aveva progettato un’innovativa memoria costituita da un tubo catodico. Tuttavia i Britannici, pur essendo partiti con un vantaggio tecnologico, furono poi superati dagli Statunitensi.

Il primo importante computer prodotto negli USA nel 1943 (dopo alcuni computer sperimentali come ABC e Harvard Mark I) fu – a fini militari - il gigantesco, ma primitivo ENIAC fornito di ben 18.000 valvole. ENIAC, che consumava 160 kW, era privo di memoria principale, per cui era incapace di memorizzare programmi. Funzionò fino al 1955 e fu usato per i calcoli relativi alla bomba atomica con algoritmi messi a punto da Enrico Fermi(3).

Seguirono i più piccoli FERMIAC e MANIAC per studi atomici e delle particelle, e poi il grande EDVACCSIRAC UNIVAC I, che utilizzavano colonne di Mercurio. Per la memoria nei computer più evoluti furono successivamente usati tamburi ricoperti di materiale ferromagnetico e poi dischi rigidi sottili a due testine Nel 2007 il fisico francese A. Fert ed il tedesco P. Grünberg hanno vinto il Nobel per i loro studi sulla magnetoresistenza gigante che hanno permesso la costruzione di dischi rigidi innovativi con memoria superiore al megabyte.

Fu soprattutto l’adozione di transistor al posto delle valvole che permise una miniaturizzazione dei dispositivi, una riduzione dei consumi elettrici di 1000 volte, e la creazione di personal computers, smartphone, tablet, ecc. come meglio vedremo nell’articolo dedicato ai semiconduttori ed altre tecnologie innovative (N. 121). Alla società UNIVAC si sostituì poi l’IBM e furono poi adottati vari metodi operativi (Unix, Windows, ecc.) a seconda della tecnologia adoperata dalle varie compagnie (IBM, Apple produttrice del computer McIntosh, ecc.).

Un decisivo impulso allo sviluppo dei computer USA fu dato dal brillante matematico di origine ungherese John Von Neumann (1903-1957), già membro del Progetto Manhattan e considerato padre del computer insieme a Turing(4). Fu importante soprattutto il suo rapporto del 1945 su EDVAC, in cui fissava l’architettura necessaria del computer, che doveva comprendere, un’unità aritmetica logica, un’unità di controllo per gestire i programmi e una memoria principale (RAM). Insieme al matematico di origine polacca Stanislav Ulam (1909-1984), Von Neumann mise a punto anche il metodo di calcolo Montecarlo ben noto anche a Fermi. Si tratta di un metodo di calcolo per soluzioni approssimate che parte dal dominio delle soluzioni possibili; poi passa ad una serie di soluzioni aleatorie distribuite secondo il grado di probabilità. Si calcolano le varie soluzioni ed alla fine si sceglie una soluzione finale(3).

Nei moderni computer i nastri della macchina universale di Turing sono stati sostituiti progressivamente, per analogia di funzioni, da dischi rigidi, tastiere, monitor, memorie RAM, microprocessori, ecc., ma il contributo teorico di Turing, Von Neumann e quello di altri tecnici e ingegneri che svilupparono le prime soluzioni tecnologiche (“Hardware”) rimane fondamentale.

Vincenzo Brandi





(1) RBA, “Le Grandi Idee della Scienza – Turing”

(2) RBA, “Le Grandi Idee della Scienza – Hilbert”

(3) RBA, “Le Grandi Idee della Scienza - Fermi”

(4) RBA, “Le Grandi Idee della Scienza – Von Neuman”

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.