Le origini del calcolatore


LE ORIGINI - IL COLOSSUS
 

Il primo computer della storia non è stato, come molti pensano, l'ENIAC, costruito dagli americani nel 1946, ma un calcolatore a valvole denominato Colossus, concepito nel pieno dei combattimenti della Seconda Guerra Mondiale da un gruppo di matematici e ingegneri inglesi con una missione precisa: decodificare le comunicazioni segrete tra Hitler e i suoi generali.

Il suo contributo alla vittoria finale fu così importante che alla fine della guerra Churchill lo fece distruggere e impose il segreto di Stato sull'intera vicenda
: nessuno doveva sapere come gli alleati avevano vinto la battaglia dell'informazione.E' stato probabilmente uno dei segreti meglio custoditi di tutta la Seconda Guerra Mondiale ed è stato necessario attendere gli anni '70 perché l'esistenza del misterioso computer venisse alla luce grazie a un'indiscrezione.

Il "colosso" aveva una memoria volatile di appena 25 bit, ma la sua logica binaria era particolarmente adatta per decodificare i testi cifrati dalla macchina di Lorenz e riduceva i tempi da diverse settimane a pochi giorni. Il successo del sistema fu tale che ben presto altri nove computer a valvole vennero costruiti tra il gennaio e il giugno '44.

Ritornata la pace, otto di loro vennero smontati, mentre due rimasero al servizio di sua Maestà Britannica fino al 1960 prima di subire la medesima sorte.

 

COLOSSUS- USO BELLICO


A partire dal 1939, il governo inglese aveva riunito i più brillanti matematici delle due università, tra i quali il leggendario Alan Turing, padre dell'intelligenza artificiale. Facevano parte dello staff anche latinisti, egittologi, campioni di scacchi e di parole crociate. Il loro compito era quello di decifrare le comunicazioni dell'esercito nemico.

I tedeschi, per criptare le trasmissioni, utilizzavano una macchina particolarmente efficiente, la Lorenz SZ42, in grado di generare un numero di chiavi di codifica nell'ordine di 10131, cioè 10 seguito da 130 zeri: indecifrabile, pensavano i tedeschi. Ma si sbagliavano. Già nel 1940 gli inglesi avevano cominciato a intercettare dei segnali criptati. Decifrarli, però, si era rivelato più difficile del previsto.

Per un errore di trasmissione gli inglesi intercettarono due messaggi consecutivi simili (con il medesimo contenuto), con la stessa configurazione iniziale. Intuendo l'inizio della prima parte del testo inviato - (la disciplina dell'esercito tedesco voleva che tutti i messaggi iniziassero con il numero del messaggio) - riuscirono a decifrare la parte corrispondente della sequenza e risalire a più di un migliaio di caratteri maschera. Impiegavano comunque settimane per decifrare un messaggio: un tempo troppo lungo, che rendeva l'Informazione ottenuta praticamente inutilizzabile.

Tra di loro si trovava anche un matematico, Max Newman, meno dotato a livello di capacità di calcolo mentale dei suoi colleghi. Per compensare questo handicap Newman pensò di automatizzare la decodifica dei messaggi tramite un'apparecchiatura elettronica e, messo a punto il progetto, lo presentò a un geniale ingegnere del laboratorio delle poste britanniche, Tommy Flowers, che in nove mesi riuscì a realizzare un calcolatore a valvole in grado di effettuare calcoli matematici ad una velocità impensabile per quei tempi. A causa delle sue dimensioni venne battezzato Colossus.

Gli inglesi, grazie a Colossus, sono riusciti a decifrare tutti i codici segreti tedeschi in un solo anno e lo storico Harry Hinsley valuta che le informazioni raccolte in questo modo hanno permesso di ridurre la durata della guerra di almeno due anni.
 

MACCHINA LORENZ/ENIGMA


Durante la II guerra mondiale i tedeschi utilizzarono per cifrare i propri messaggi soprattutto la macchina Enigma (che fu forzata prima dai polacchi e poi dagli inglesi). La macchina Enigma per essere decriptata richiese le "Bombe": particolari dispositivi elettromeccanici mostrati nella figura sottostante.

 
Gli alti comandi tedeschi invece utilizzavano la macchina telescrivente realizzata dalla ditta Lorenz che a differenza dell'Enigma usava 32 caratteri codificati con il codice Baudot (codice simile al morse, inventato nel 1870 circa ed usato nelle comunicazioni telegrafiche) che era già un codice binario (i caratteri venivano codificati con 5 bit).

La Lorenz ricopriva un ruolo di maggiore importanza rispetto ad Enigma.
La Lorenz si ispirava direttamente al cifrario di Vernam (E' un sistema crittografico la cui inviolabilità è comprovata da una dimostrazione matematica ed è per questo che si è guadagnato il titolo di "cifrario perfetto".). Seguendo le idee base del codice di Vernam ogni carattere del messaggio veniva scomposto nei suoi 5 bit, che venivano sommati in modo binario (in pratica con un connettivo XOR) con i bit del corrispondente carattere della chiave (detta anche sequenza oscurante).
Affinchè il codice di Vernam sia inattaccabile è necessario che la chiave sia indefinitamente lunga e del tutto casuale. Rimane comunque la difficoltà di comunicare la chiave in modo sicuro. I progettisti della Lorenz pensarono di sostituire la chiave casuale con una chiave pseudo-casuale generata da un dispositivo meccanico (dodici rotori) secondo una procedura ovviamente segreta.

In questo modo però il cifrario non è più inattaccabile e così fu per la macchina Lorenz che fu forzata dai crittanalisti inglesi del progetto Ultra. Grazie anche a una grossa ingenuità di un cifratore tedesco il 30 agosto 1941; questi aveva appena trasmesso un messaggio in cifra da Vienna ad Atene, quando ricevette la richiesta di ripetere il messaggio perchè non era stato ricevuto bene; il cifratore, forse per pigrizia o forse per impazienza, invece di ritrasmettere lo stesso messaggio identico, lo ritrasmise con alcune abbreviazioni (primo grave errore), dopo aver riposizionato i rotori della macchina alla stessa posizione del messaggio precedente (ancor più grave errore). Così il primo messaggio iniziava con la parola Spruchnummer, il secondo con Spruchnr. (Spruchnummer vuol dire numero del messaggio)
Una vera manna per gli inglesi che avevano intercettato entrambi i messaggi e notato che i primi caratteri erano uguali; fu il crittanalista John Tiltman che con un paziente lavoro riuscì alla fine a ricostruire la sequenza oscurante della Lorenz e quindi il messaggio chiaro.
Una volta ricostruita una sequenza oscurante era necessario comprendere la regola pseudo-casuale che la generava per poter rendere sistematica la decrittazione dei cifrati Lorenz; fu il chimico Bill Totte a completare questo lavoro arrivando a ricostruire completamente la struttura interna della Lorenz, che gli inglesi chiamavano in codice Tunny.
Ma decrittare a mano un cifrato Lorenz richiedeva un lavoro lungo 4-6 settimane, un tempo eccessivo in tempo di guerra. I messaggi decrittati erano spesso superati dagli eventi e di fatto inutili.
Per velocizzare le cose fu dapprima costruita una macchina elettromeccanica la Heath Robinson che però aveva problemi a mantenere la velocità di elaborazione necessaria.
Fu all'inizio del 1943 che il matematico Max Newman e l'ingegnere del Post Office Tommy Flowers ebbero l'idea di simulare le parti meccaniche con circuiti elettronici e iniziarono il progetto del Colosso, un vero e proprio calcolatore elettronico, capace di forzare la Lorenz in poche ore. Il primo Colosso, il Mark 1, fu assemblato alla fine del 1943 e pienamente operativo all'inizio del 1944, cosa di grande importanza nel momento in cui si stava preparando lo sbarco alleato in Francia. I messaggi decrittati mostrarono infatti agli alleati che Hitler aveva preso per buone le false notizie fatte trapelare su uno sbarco alleato a Calais, aveva concentrato le truppe in Belgio e che quindi lo sbarco in Normandia non avrebbe incontrato grossi ostacoli.

Dopo il primo furono costruiti altri nove Colossi; e nell'ultimo anno di guerra, grazie anche al fatto che gli alleati avevano sistematicamente bombardato e danneggiato le linee telefoniche tedesche costringendo i tedeschi a usare sempre di più le comunicazioni radio, quasi tutti i messaggi cifrati tedeschi venivano decrittati fornendo un vantaggio formidabile ai comandanti alleati.

I Colossi che possono considerarsi i primi veri calcolatori elettronici della storia, due anni prima dell'americano ENIAC.
Un'ultima nota sul Colossus: contrariamente a quello che si legge su molti libri e siti web il Colossus non ha niente a che fare con la disfatta della Macchina Enigma che richiese piuttosto le Bombe: dispositivi elettromeccanici molto più semplici. Il Colossus era un computer specificamente progettato per forzare la macchina Lorenz e solo per quello!


ENIAC - STORIA ...


L'ENIAC è l'acronimo di Electronic Numerical Integrator And Computer.

Venne progettato presso la Moore School of Electrical Engineering dell'Università di Pennsylvania da J. Presper Eckert e John Mauchly e presentato ufficialmente il 16 febbraio del 1946. Un anno dopo si assisterà all'invenzione del transistor. Durante la presentazione ufficiale l'ENIAC fu in grado, in meno di un secondo, di moltiplicare il numero 97.367 per sé stesso 5.000 volte.

Lo scopo principale era quello di essere capace di risolvere i problemi di calcolo balistico per il lancio dei proiettili d'artiglieria. In quel periodo, uno dei problemi più pressanti per le forze armate americane era costituito dalle tabelle di tiro per l'artiglieria, il cui calcolo si basa sulla soluzione di equazioni differenziali lineari. Tali operazioni potevano essere svolte da operatori umani (chiamati allora computer) con la sola assistenza di calcolatrici da tavolo, oppure utilizzando una macchina analogica: l'analizzatore differenziale di Vannevar Bush. Con quest'ultimo era possibile compilare una tabella in soli 15 minuti, contro le 20 ore che erano necessarie a un operatore umano, ma di questa macchina esistevano soltanto due esemplari. Si era all'indomani di Pearl Harbor, l'esigenza di aumentare la produzione di tabelle di tiro era diventata pressante. Nell'aprile del 1942 venne iniziata la realizzazione di un 'analizzatore differenziale elettronico'.

 

ENIAC - ... STORIA

Pannello connettori di programmazioneENIAC non fece in tempo a partecipare alla guerra e a svolgere i compiti per i quali era stato costruito. Fu comunque il primo calcolatore elettronico programmabile di uso generale ed ebbe una sua attività postbellica: trasportato ad Aberdeen, fu ripetutamente modificato, dotato delle più recenti memorie a nuclei magnetici e parzialmente riprogettato per eliminare la necessità di spostare i collegamenti. Nel corso della sua vita ENIAC venne utilizzato per svariatissimi tipi di calcolo: dagli studi sui raggi cosmici alla statistica, dall'aerodinamica al progetto della bomba H.

L'ENIAC oltre a sprigionare un gran calore richiedeva una notevole quantità di energia tanto che, alla sua prima messa in funzione, causò un black-out nel quartiere ovest di Filadelfia. Fu spento definitivamente alle 11.45 del 2 ottobre 1955. Per il progetto furono necessarie ben 7.237 ore di lavoro, 18 000 valvole (che portarono l'ambiente ad una temperatura superiore a 50 °C) ed una spesa di $486.804,22 rispetto a quella inizialmente prevista di $61.700 (ben otto volte tanto la spesa inizialmente preventivata).

Benché sia generalmente ritenuto il primo calcolatore elettronico, ENIAC ebbe invece un precedente: negli anni 1939-1942, John Atanasoff, professore di fisica e matematica presso la Iowa State University, e il suo ex studente Clifford Berry avevano costruito l'Atanasoff-Berry Computer (che venne appunto battezzato ABC), che presentava molte interessanti innovazioni nel disegno dei circuiti digitali. Il sistema impiegato si basava sulla matematica binaria e utilizzava un tamburo di memoria che immagazzinava i dati con un metodo simile a quello dei moderni circuiti integrati, ma presentava dei problemi per il sistema di ingresso e uscita dei dati. Dopo che Eckert e Mauchly ebbero brevettato ENIAC come primo 'calcolatore elettronico moderno', fu combattuta una lunga battaglia in tribunale per stabilire quale fosse stato in realtà il primo computer. Nel 1973, un giudice federale annullò il brevetto di ENIAC riconoscendo il primato alla macchina di Atanasoff e Berry.

 

 ENIAC - ARCHITETTURA ...
Era un 'mostro' pesante 30 tonnellate, che occupava una superficie di 200 metri quadrati e le cui 19.000 valvole (tubi a vuoto) dissipavano 150.000 watt di potenza. Era in grado di compiere circa 5000 operazioni al secondo, ovvero era almeno 10.000 volte più lento di un moderno personal computer

L'ENIAC era composto da 30 unità separate, e disponeva di unità addizionali di raffreddamento e di alimentazione: venti accumulatori fungevano da registri di memoria, memorizzando i calcoli intermedi e finali dei processi di elaborazione, mentre altre unità servivano per le operazioni di moltiplicazione e divisione, di estrazione di radice, di input e output. Ogni accumulatore poteva contenere fino a dieci cifreENIAC infatti usava un sistema aritmetico decimale, a differenza degli odierni computer, che funzionano in base al sistema binario.

Oggi le prestazioni di ENIAC sembrerebbero ridicole: la memoria interna era di soli 20 numeri di 10 cifre e la velocità era di circa 200 microsecondi per una addizione, 2800 per una moltiplicazione e 24.000 per una divisione. Si trattava comunque di velocità da 100 a 1000 volte superiori a quella di qualunque calcolatore elettromeccanico allora esistente. Una tabella di tiro poteva essere elaborata in soli 30 secondi (contro i due giorni necessari per un calcolo manuale).

 

 ENIAC - ... ARCHITETTURA
La sua memoria poteva contenere solo 20 numeri di 10 cifre, era di tipo flip-flop, l'input era consentito da schede di carta perforate. La programmazione avveniva tramite cavi elettrici di collegamento sui pannelli, che dovevano essere ogni volta scollegati e ricollegati, ed ogni configurazione consentiva al computer di risolvere un diverso problema. Quando ENIAC terminava un'operazione, segnalava il risultato accendendo una sequenza di spie luminose, oppure perforando una determinata serie di schede. Nonostante fosse stato progettato per eseguire calcoli in modo continuo, giorno e notte, i numerosi tubi a vuoto, che tendevano a bruciarsi con facilità, rendevano necessari costanti interventi di manutenzione, abbassando di circa un terzo l'efficienza del calcolatore.

All'inizio, gli scienziati programmavano e inserivano i dati nel calcolatore manualmente, azionando le connessioni fra le varie parti dell'elaboratore mediante l'introduzione di spinotti e l'accensione di interruttori: in seguito, la funzionalità fu migliorata grazie all'uso di due lettori di schede perforate messi a punto da IBM, uno per l'ingresso dei dati e uno per la loro conservazione.

 

 ENIAC - SCHEMA

La struttura dell'ENIAC è suddivisa in 5 parti:


a) Unità di calcolo,
b) Unità di I/O,
c) Unità di controllo
d) Unità di programmazione
e) 3 tabelle di memoria mobili
 

Le unità descritte funzionano in parallelo e vengono sincronizzate mediante un apposito bus (Control  bus).

L'unità di calcolo è composta:
- 20 accumulatori che possono memorizzare un numero positivo o negativo rappresentato con 10 cifre. Un numero che arriva in un accumulatore viene sempre sommato al contenuto.
- un'unità per la sottrazione. E' ottenuta semplicemente sommando il complemento a 10n-digit [si ricorda che complemento di un numero B a 10n = dove n è il nr massimo di cifre rappresentabili è ottenuto come differenza  (10n-B): . Ad esempio: 77 − 17 = 77 + (10000000000 − 17) = 77 + 9999999983 = 1000000060 = 60] al numero che si intende sottrarre.
- un'unità di moltiplica
-
un'unità per la divisione e per la radice quadrata.

I dispositivi presenti nell'unità di I/O sono:
- un pannello a spinotti (Constant Transmitter
- un lettore schede perforate. Le costanti possono essere inserite utilizzando il pannello a spinotti  oppure tramite questo lettore.
- una stampante.

.L'unità di controllo principale è composta:
- l'unità di sincronizzazione
(cycling unit). Questo dispositivo, tramite l'invio di un impulso ciclico, consentiva la sincronizzazione  dei dispositivi (è l'equivalente del segnale di clock dei moderni computer).
- L'unità di inizializzazione permetteva il reset dei circuiti allo stato iniziale e l'avvio o lo stop di una esecuzione. L'unità principale di programmazione consentiva l'implementazione di loop ol'avvio di due esecuzioni in parallelo su distinte porzioni della macchina.

L'Eniac era caratterizzato da due bus distinti:
- il bus dei dati dove transitavano i numeri espressi in base decimale che venivano spediti alle varie unità per essere rielaborati. Sul cavo (composti da 10 fili) transitavano contemporaneamente 10 tipologie di segnale (una per ogni cifra) consentendo quindi la trasmissione in parallelo di un dato elaborato su uno degli accumulatori
- il bus di controllo: tramite questo canale un'unità che aveva completato un certo lavoro comandava lo start di un'altra unità che avrebbe dovuto proseguire il lavoro. Sempre su questo canale transitava il "tam-tam" ciclico prodotto dalla cycling unit.

L'ultima unità è è rappresentata da 3 tabelloni di memoria mobili. Rappresentano la memoria dove i dati vengono temporaneamente salvati. Successivamente nel 1948 vennero registrate in questa unità anche una serie di funzioni il cui uso era frequente consentendo un risparmio nel tempo di caricamento di un programma.

L'ENIAC non ha una memoria per immagazzinare il programma. Programmare l'ENIAC consiste fisicamente nel connettere le unità con dei cavi e e posizionare degli interruttori con appropriate configurazioni. Questo donne vennero scelte tra un gruppo di 80 donne che si dedicavano al calcolo balistico delle traiettorie a mano. Questo tipo di lavoro era chiamato "Computers"