Fino al 1942 il gruppo di Vannevar Bush al MIT di Boston ancora lavora ad aumentare la velocità di calcolo dell’analizzatore differenziale cercando soluzione di tipo elettrico ai problemi meccanici. Grazie anche al contributo di Samuel H. Caldwell e alla realizzazione di macchine, appunto, elettromeccaniche, i tempi di programmazione e di risposta del computer analogico si riduce a tempi compresi tra 3 e 5 minuti. Ma questi indubbi progressi valgono a poco, perché sono ormai arrivati i computer digitali elettronici.
Nel 1930 a New York viene pubblicata una rivista, Electronics, che intende prendere atto di una nuovo settore della tecnologia, che diventerà nota, appunto, come elettronica e che è fondata sulla emissione e il trasferimento di elettroni utilizzando congegni ormai in uso nei settori della radiofonia e in quello nascente della televisione: i tubi a vuoto e i diodi.
L’elettronica – questa è l’idea – può essere molto utile per lo sviluppo delle macchine che devono calcolare, evitando le complicazioni della meccanica. Tra i primi a cercare di metterla in pratica, questa idea, c’è in Germania Konrad Zuse, matematico dell’Università di Saarbrucken. Tra il 1935 e il 1938 il tedesco progetta con alcuni colleghi e realizza, nella cantina di casa dei genitori, che sono alquanto sbigottiti, una prima macchina calcolatrice elettromeccanica (chiamata Z1) programmabile, sia pure in maniera limitata. Il programma è scritto su un nastro perforato da 1.550 bit (il bit, come vedremo, è l’unità di misura dell’informatica). Nel 1939, invece, decide di utilizzare i relè telefonici per accendere o spegnere i circuiti e mette a punto la Z2, uno dei primi esempi di computer elettromeccanici di questo tipo. Nel 1941 il nuovo e decisivo progresso: Zuse realizza la Z3, considerato il primo computer digitale moderno: è elettromeccanico, è completamente automatico e programmabile, usa il sistema numerico binario, la virgola mobile, il nastro perforato. È in grado di effettuare una moltiplicazione in non più di 3 o 4 secondi.
Zuse è un informatico quasi del tutto isolato. Ma, nella realizzazione dello Z3, Konrad Zuse è aiutato da Helmut Theodor Schreyer, che gli consiglia di utilizzare la tecnologia elettronica per realizzare la macchina calcolatrice. Schreyer cerca anche di avvisare le autorità tedesche per ottenere finanziamenti e sviluppare la nuova tecnologia. Ma le autorità naziste rispondono che il progetto non è strategicamente rilevante.
Lo sviluppo del computer elettronico non si farà in Germania, ma in Gran Bretagna e negli Stati Uniti. Un passo decisivo a livello teorico è quello compiuto nel 1936, come abbiamo detto, da Alan Turing, un giovane logico di 24 anni appena, che è alle prese con uno dei problemi di David Hilbert: il problema della decidibilità. Ovvero: la logica può essere descritta con una funzione calcolabile con mezzi finiti?
Turing pubblica un articolo, On computable numbers, in cui è descritta una macchina calcolatrice “general purpose”, capace in linea di principio di risolvere ogni problema matematico. La macchine diventerà famosa come “macchina di Turing”. Il giovane logico immagina che la macchina legga su un nastro continuo le istruzioni contenute in una prima unità e le esegua, per poi passare alla seconda unità.
Non entriamo nei dettagli, diciamo solo che, contrariamente a quanto si attendeva Hilbert, la risposta data (e dimostrata) da Turing è un secco no. Ma questi temi appartengono a quelli sui “fondamenti della matematica” che esulano dallo scopo di questo libro. ma il bello è che, per rispondere alla domanda di Hilbert, il giovane inglese immagina una “macchina universale” capace di manipolare simboli. la “macchina universale di Turing” è del tutto astratta, costituita com’è da un nastro infinito e mobile in entrambe le direzioni diviso in tante caselle, ciascuna delle quali può contenere uno solo di un insieme finito di simboli. Il nastro è la memoria della macchina. In ogni istante la macchine vede una casella e si trova in uno solo di tutti gli stati finiti possibili. La macchina può leggere con una testina il simbolo in una casella e, seguendo istruzioni o “tavole di comportamento”, può sia mutare simbolo, sia spostarsi a destra o a sinistra, cambiando così stato. La macchina può dunque trovarsi di volta in volta in ciascuno degli stati possibili. «La mia tesi – scrive Turing – è che queste operazioni includono tutte quelle che sono usate nel calcolo di un numero» [6]. Dunque la macchina universale di Turing è un computer.
La novità proposta da Turing è che una macchina può effettivamente essere codificata con un numero. La sua macchina universale può lavorare anche con due soli simboli, 0 e 1, e seguire una logica binaria. Con questo lavoro il giovane inglese diventa uno dei padri fondatori dell’informatica e del linguaggio dei moderni computer.
La “macchina di Turing” ispirerà la progettazione del primo calcolatore elettronico, che avviene negli Stati Uniti nel 1942. Nel corso della guerra, intanto, Turing dirige la Government Code and Cypher School di Bletchley Park con un obiettivo preciso: decifrare il codice Enigma utilizzato in Germania per inviare messaggi segreti e considerato inespugnabile. Il gruppo interdisciplinare diretto da Turing cresce in maniera imponente: dal centinaio di persone del 1939 ai circa 7.000 del 1944 ed è, insieme al Manhattan Project in corso negli Stati Uniti, uno dei primi esempi di Big Science. Il gruppo realizza Colossus, il primo computer elettromeccanico britannico che, lavorando a grande velocità (nella prima versione tratta 5.000 caratteri al secondo; che salgono a 25.000 nella versione successiva), riesce a calcolare tutte le possibili combinazione di Enigma fino a quando non trova quella esatta. Colossus utilizza 1.500 valvole, pesa una tonnellata e non ha né una memoria né un programma interno. Ma già nel 1942 è in grado di decifrare ogni giorno 4.000 messaggi tedeschi e altrettanti italiani e giapponesi.
Dopo la guerra Turing lavora al National Physical Laboratory dove nel 1946 progetta e nel 1950 mette a punto ACE (Automatic computing engine), un computer dotato di memoria interna e “general purpose”.
(6. continua)
Note
[6] Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, Proceedings of the London Mathematical Society, 42:230-26, 5, 1937.