STORIA DEGLI ELABORATORI (prof. Fulvio Ferroni) LA PREISTORIA L’ABACO E I BASTONCINI DI NEPERO Fin dai tempi più antichi l’uomo ha avvertito l’esigenza di disporre di strumenti che agevolassero lo svolgimento di calcoli ripetitivi e li ha realizzati compatibilmente con le tecnologie di volta in volta disponibili. Il primo di tali strumenti può essere considerato l’ABACO usato fin dal 300 - 200 a.c. e costituito da tavolette su cui venivano disposti sassolini (“calculi” in latino, da cui deriva il termine “calcolare”). Una variante dell’abaco, il PALLOTTOLIERE viene tuttora utilizzato in alcuni paesi orientali al posto delle calcolatrici. Una citazione meritano anche i BASTONCINI DI NEPERO dovuti appunto al matematico scozzese del ‘500 John Napier (Nepero) con i quali si potevano eseguire agevolmente le moltiplicazioni. Un abaco L A P A SCALINA La prima macchina automatica di calcolo che sia stata costruita dall’uomo è la PASCALINA progettata e realizzata dal matematico e filosofo francese Blaise Pascal nel 1642. Era una calcolatrice meccanica in grado di effettuare addizioni e sottrazioni e di calcolare automaticamente il riporto nelle addizioni (con un meccanismo a ruote dentate simile a quello degli attuali contachilometri delle auto). La PASCALINA fu successivamente migliorata dal matematico e filosofo tedesco Gottfried Wilhelm Leibnitz che realizzò nel 1671 il CILINDRO DI LEIBNITZ macchina in grado di eseguire anche moltiplicazioni e divisioni mediante somme e sottrazioni successive. Queste macchine, pur funzionanti, rimasero oggetti di studio e non ebbero gli utilizzi pratici che i loro costruttori speravano. Solo nei primi decenni dell’800 la tecnologia permise la realizzazione di calcolatrici meccaniche abbastanza comode da usare e che quindi ebbero una certa diffusione; la prima fu l’ARITHMOMETER realizzato dall’inglese Thomas De Colmar nel 1820 e che riprendeva i principi di funzionamento del CILINDRO DI LEIBNITZ. Un notevole successo commerciale fu poi ottenuto dalla calcolatrice meccanica MILLIONAIRE (1892), dello svizzero Otto Steiger, in grado di svolgere moltiplicazioni e divisioni in modo diretto e non più come successione di somme o sottrazioni. LA MACCHINA ANALITICA Nel 1833 l’inglese Charles Babbage progettò la cosiddetta Macchina Analitica che era un sistema in grado di suddividere un calcolo in elementi più semplici fino ad ottenere il risultato. Tale macchina prevedeva un “governo”, un “organo aritmetico”, una “memoria” e degli “organi di entrata e uscita” con i quali introdurre i dati su cui operare, ricevere i risultati e introdurre anche le istruzioni relative alle operazioni che la macchina avrebbe dovuto eseguire. Come vedremo tale macchina era concettualmente molto vicina ai moderni elaboratori, ma non poté essere realizzata per i limiti imposti dalla tecnologia di quei tempi. Il suo schema generale era comunque talmente vicino a quello dei moderni computer, che la riscoperta degli scritti di Babbage ha fatto invalidare alcuni brevetti dell’IBM. La mancata realizzazione pratica del progetto di Babbage non impedì alla contessa Lady Ada di Lovelace, sua amica e figlia del poeta Byron, di studiare la macchina e proporre anche dei programmi per il suo funzionamento. Così la contessa, morta nel 1851 a soli 36 anni come il padre, può essere considerata la prima “programmatrice” della storia dell’informatica; per onorarla il suo nome è stato assegnato ad un moderno linguaggio di programmazione (linguaggio ADA). LA MACCHINA A SCHEDE PERFORATE Nel 1889 negli Stati Uniti Herman Hollerith realizzò la MACCHINA PER STATISTICHE A SCHEDE PERFORATE che era un congegno capace di svolgere elaborazioni che andavano al di là dei semplici calcoli e che fu utilizzata per elaborare i dati del censimento del 1890 negli USA. I dati venivano memorizzati mediante fori su schede di cartoncino delle dimensioni della banconota da un dollaro (in modo da usare per il trasporto le stesse cassette utilizzate appunto per le banconote) e venivano elaborati elettricamente dalla macchina mediante degli spazzolini che erano in grado di rilevare la presenza dei fori e convertirli nei corrispondenti valori numerici. La macchina di Hollerith ebbe un grande successo in quanto portò ad un notevole abbassamento dei tempi necessari ad avere i risultati del censimento rispetto ai precedenti elaborati manualmente. Ne furono quindi costruiti altri esemplari, impiegati anche per compiti di tipo diverso e chiamati MACCHINE MECCANOGRAFICHE; vennero inoltre realizzate macchine per la perforazione automatica delle schede, le cosiddette PERFORATRICI DI SCHEDE. Le per che per schede erano primi merito francese le perforate nate ai dell’800 del Jacquard utilizzò comandare i telai di tessitura secondo un metodo tuttora utilizzato e assunsero, con l’avvento delle macchine meccanografiche, una grande importanza. Nell’ambito dell’informatica il loro uso come supporti di ingresso e uscita per i dati si è protratto fino ai primi anni ‘80. Hollerith può dunque essere considerato l’iniziatore del calcolo meccanografico e tra l’altro, nel 1895, fondò una società che nel 1924 assumerà il nome di “Industrial Business Machines” (IBM) e successivamente diverrà la più importante società di informatica e una delle più potenti multinazionali del mondo. I CALCOLATORI ELETTROMECCANICI DEGLI ANNI ‘40 Per avere altri progressi significativi nella storia del calcolo automatico occorre saltare agli anni intorno alla seconda guerra mondiale. Nel 1936 l’ingegnere tedesco Konrad Zuse realizzò con mezzi rudimentali nel salotto di casa lo Z1 il primo calcolatore meccanico della storia che già prevedeva la rappresentazione binaria dei numeri e il concetto di programma. Zuse continuò poi nei suoi studi realizzando altri due calcolatori stavolta elettromeccanici: Z2 nel ‘39 e Z3 nel ‘41. Il calcolatore Z3 in particolare aveva le seguenti caratteristiche: sistema numerico binario, memoria da 1400 bit, comandi forniti con nastro perforato, risultati visualizzati tramite una serie di lampade, velocità di 3 secondi per moltiplicazioni e divisioni. Questi calcolatori erano basati sui relè che sono interruttori comandati da un elettromagnete in grado di aprire o chiudere in pochi centesimi di secondo il circuito in cui sono inseriti; al circuito chiuso (passaggio di corrente) veniva associato il valore 1, al circuito aperto (assenza di corrente) veniva associato il valore 0. In tale modo questi circuiti erano in grado di rappresentare ognuno un BIT (BIT è l’acronimo di BInary digiT, indica la più piccola unità di informazione trattabile singolarmente da un elaboratore e può valere 0 oppure 1). Tale principio di rappresentazione dei bit rimase valido anche negli elaboratori successivi (ed è tuttora valido) con i relè sostituiti da dispositivi elettronici: prima le valvole e poi i transistor. Fu dunque negli anni ’40 che venne definitivamente abbandonata la base di calcolo decimale in favore di quella binaria per quanto riguarda i computer; essi da allora usano internamente l’alfabeto binario costituito dai soli simboli 0 e 1. I fondamenti della logica binaria (e quindi della logica di funzionamento degli elaboratori) si devono al matematico inglese George Boole che li elaborò alla fine del secolo scorso. Sempre negli anni ‘40, negli USA, venivano portati avanti studi analoghi a quelli di Zuse e, nel 1944, fu realizzato dal professor Howard Aiken dell’università di Harward il calcolatore MARK1 soprannominato BESSIE, lungo 18 metri ed alto quasi 3, basato anch’esso sui relè ed in grado di sommare due numeri di 23 cifre in 3/10 di secondo e moltiplicarli in 6 secondi. Nel 1946 lo scienziato Ungherese emigrato negli USA Jhon Von Neumann propose, insieme a A. W. Burks e H. H. Goldstine in un celebre studio dal titolo “Preliminar discussion of the logical design of an electronic computing instrument”, lo schema logico di una nuova macchina (la MACCHINA DI VON NEUMANN) riconosciuta da tutti il vero prototipo dei moderni elaboratori elettronici. Da quel momento iniziò la vera e propria storia dei computer la cui evoluzione viene spesso suddivisa in GENERAZIONI. LE GENERAZIONI DI ELABORATORI ELETTRONICI PRIMA GENERAZIONE (1946 - 1956) Nel 1946 presso l’Università della Pennsylvania fu realizzato il primo elaboratore elettronico della storia, l’ENIAC (Electronical Numerical Integrator and Calculator) commissionato qualche anno prima dal ministero della difesa degli USA per scopi bellici. Alla base del suo funzionamento erano le valvole termoioniche che sostituivano i relè dei calcolatori precedenti ma erano molto più veloci nell’aprire e chiudere i circuiti nei quali erano inserite (tempi dell’ordine di qualche milionesimo di secondo per commutare un circuito). Per questo l’ENIAC era molto più veloce del MARK1: svolgeva 300 moltiplicazioni al secondo e impiegava un’ora a svolgere il lavoro che l’altro svolgeva in una settimana. Per la sua costruzione furono usate 18.000 valvole, aveva una memoria di 20 parole, era lungo 30 metri, pesava 30 tonnellate, emanava una grande quantità di calore e si guastava in media una volta al giorno. L’ingresso e l’uscita dei dati avvenivano tramite un lettore ed un perforatore di schede mentre le “istruzioni” sulle operazioni da svolgere venivano fornite alla macchina tramite connessioni meccaniche effettuate manualmente su dei pannelli. L’ENIAC continuò a funzionare fino al 1955. Molto importante fu poi la realizzazione dell’EDSAC (Electronic Delayed Storage Automatic Computer) presso l’Università di Cambridge nel 1949 e dell’EDVAC (Electronic Discrete Variable Automatic Computer) negli USA nel 1950, in quanto essi furono i primi elaboratori progettati seguendo lo schema logico della MACCHINA DI VON NEUMANN ed anche i primi che prevedevano la memorizzazione del programma in memoria centrale, come proposto ancora da Von Neumann. L’EDSAC e l’EDVAC possono quindi essere considerati i veri capostipite dei moderni elaboratori elettronici. Dopo questi prototipi, frutto di ricerche e studi isolati, nel 1951 Eckert e Mauchly, che già avevano costruito l’ENIAC, realizzarono l’UNIVAC I, il primo calcolatore concepito per scopi commerciali. Iniziò in quel momento lo sviluppo dell’industria informatica con la produzione di macchine sempre più potenti ed affidabili, i cosiddetti MAINFRAME (ad esempio l’IBM 704 del 1955) destinati ad essere acquistati dapprima da centri di ricerca, università istituzioni statali e poi anche aziende private di grosse dimensioni. Tutti i calcolatori della prima generazione avevano però in comune un grande problema che riguardava la loro programmazione: le istruzioni che costituivano i programmi dovevano essere scritte con il cosiddetto LINGUAGGIO MACCHINA cioè in alfabeto binario e quindi solo pochi specialisti erano in grado di utilizzarli correttamente. SECONDA GENERAZIONE (1957 - 1963) La seconda generazione è caratterizzata principalmente dalla nascita dei LINGUAGGI di programmazione e dall’avvento dei transistor. I LINGUAGGI di programmazione furono creati con lo scopo di permettere una comunicazione tra uomo e macchina più agevole di quella possibile fino a quel momento con il linguaggio macchina. I primi linguaggi ad essere definiti ed utilizzati furono il FORTRAN nel 1957 per le applicazioni scientifiche e il COBOL nel 1960 per quelle gestionali. Essi sono tuttora utilizzati ma sono stati affiancati da moltissimi altri linguaggi nati per gli scopi più diversi. Il transistor, realizzato nel 1954 nei laboratori della Texas Instruments, è un dispositivo semiconduttore costituito da silicio e germanio in grado di chiudere o aprire un circuito in qualche decimo di milionesimo di secondo ed è molto più piccolo, economico ed affidabile della valvola. Grazie all’adozione dei transistor in sostituzione delle valvole i calcolatori aumentarono di potenza ed affidabilità e poterono essere impiegati (tra l’altro) per i calcoli relativi all’invio dei primi satelliti nello spazio. In questo periodo anche in Italia l’informatica muoveva i suoi primi passi: è del 1961 infatti l’inaugurazione all’Università di Pisa della CEP (Calcolatrice Elettronica Pisana) una macchina “ibrida”, cioè con circuiti realizzati sia con valvole sia con transistor, il cui progetto era iniziato nel 1954 e che era costata l’equivalente di circa 3.000 miliardi di oggi. Era una macchina molto valida dal punto di vista della logica di realizzazione e poteva svolgere 70.000 addizioni o 7.000 moltiplicazioni al secondo. Essa fu oggetto di ammirazione in tutta Europa e fu importante anche per motivi non prettamente scientifici in quanto rappresentò un segno della volontà del nostro paese di risollevarsi in anni in cui erano ancora presenti le cicatrici della guerra. Per la città e l’Università di Pisa la CEP fu poi fondamentale: per decenni l’idea dell’informatica in Italia è stata infatti associata alla città toscana; essa fu anche uno dei pochi luoghi dove si svolgessero ricerche teoriche sulla materia e, nel 1969, vi fu anche attivato il primo corso di laurea specifico. Alla realizzazione della CEP aveva partecipato anche l’azienda italiana OLIVETTI, grazie all’intuito dell’ingegnere Adriano OLIVETTI che aveva compreso l’importanza strategica di questo settore; egli stipulò una convenzione con l’Università di Pisa e fondò la Divisione Elettronica della sua azienda. Alla sua morte, nel 1960, purtroppo nessuno colse l’importanza di ciò che era stato realizzato e dopo pochi anni la Divisione Elettronica venne venduta alla Honeywell, mentre l’OLIVETTI sceglieva di dedicarsi quasi interamente alle macchine da scrivere ed alle calcolatrici da tavolo .......! Da allora l’OLIVETTI ed in generale il nostro paese, non hanno più recitato, se non saltuariamente (ad esempio con il Personal Computer M24 che a metà degli anni ’80 fu il più venduto in Europa), un ruolo importante nel campo della ricerca e della realizzazione dei sistemi di elaborazione. TERZA GENERAZIONE (1964 - 1974) Come abbiamo detto gli elaboratori della seconda generazione furono essenziali per l’invio in orbita dei primi satelliti; i grandi viaggi nello spazio e lo sbarco sulla Luna non sarebbero però stati possibili senza l’aiuto di calcolatori ancora più potenti. Nel 1964 l’IBM lanciò sul mercato gli elaboratori della serie /360 con lo slogan “The third generation begins” coniando quindi per l’occasione il termine di “generazione” riferito ai computer. Tale serie di macchine costituì davvero un salto qualitativo in quanto in essa furono usati per la prima volta i circuiti integrati. Un circuito integrato era costituito da un cristallo di silicio della grandezza di pochi millimetri quadrati (il “chip”) nel quale venivano stampate direttamente oppure solo saldate decine di componenti elettroniche elementari. Con tali dispositivi si ottenne una notevole diminuzione del consumo di energia e delle dimensioni dei componenti dei computer e un incremento dell’affidabilità e delle prestazioni (si scendeva a qualche miliardesimo di secondo per lo svolgimento di operazioni elementari). La terza generazione fu anche caratterizzata dall’uso sempre maggiore di memorie ausiliarie di tipo disco magnetico che permettevano un veloce reperimento delle informazioni in esse immagazzinate e quindi rendevano praticabile e conveniente la gestione di archivi tramite computer. Questo allargò il campo di applicazione degli elaboratori che iniziarono ad essere usati anche per problemi di tipo gestionale e non più solo scientifico. Altri elementi importanti furono da un lato l’avvento dei terminali, con i quali si aveva la possibilità di utilizzare l’elaboratore anche da distanze considerevoli dal luogo dove esso era installato, dall’altro la nascita di molti altri linguaggi di programmazione tra i quali il BASIC (1965) che ha avuto molto successo grazie alla sua facilità d’uso. QUARTA E QUINTA GENERAZIONE (1975 - anni ‘90) Nel 1971 il fisico italiano Federico Faggin alla testa di un gruppo di progettazione della Intel, realizzò il primo microprocessore, chiamato 4004, basandosi su studi teorici di ingegneri americani. Le successive evoluzioni furono i microprocessori Intel 8008, 8080, 8088 (in grado di svolgere più di 300.000 operazioni al secondo). Tali dispositivi contenevano in un unico chip un’intera unità centrale di elaborazione di un computer costituita da molti circuiti integrati. Le dimensioni delle macchine poterono quindi ulteriormente diminuire mentre la velocità e la potenza aumentavano ancora. Nell’aprile del 1976 due studenti americani, Steve Jobs e Stephen Wonziak, costruirono, nel garage di casa a Cupertino in California, il primo Personal Computer (P.C.) e fondarono la APPLE. Due anni dopo con il modello APPLE II iniziò la diffusione di massa di queste macchine. Nell’agosto del 1981 anche l’IBM immise sul mercato il suo Personal Computer, “pilotato” dal microprocessore Intel 8088, imprimendo una svolta molto importante nel mercato dell’informatica. P.C. Apple Alla base di questi elaboratori di dimensioni ridotte e di prezzo abbordabile c’erano e ci sono anche oggi microprocessori sempre più perfezionati che vengono utilizzati anche come componenti per la realizzazione dei moderni MAINFRAME dal costo di molti miliardi e dei MINI computer che stanno a metà strada per prestazioni e prezzo tra i personal ed i grandi sistemi. In questi ultimi venti anni si è poi assistito al grande sviluppo della telematica e cioè delle reti di elaboratori che permettono la trasmissione e l’elaborazione a distanza di dati e informazioni ed il collegamento tra utilizzatori di computer di tutte le parti del Mondo (si pensi al grande successo attuale di INTERNET). Rimane da citare la “quinta generazione” degli elaboratori elettronici della quale fanno parte macchine che dovrebbero avere la capacità di trattare l’informazione organizzata secondo le sue proprie caratteristiche, in maniera simile a quanto avviene nel cervello umano. Questo implica la capacità di elaborare direttamente informazioni come simboli, parole, immagini, voce umana e soprattutto di comprendere il significato delle stesse e i problemi da risolvere. Tali aspetti costituiscono i campi di azione e di studio della cosiddetta “informatica sensoriale” e della “intelligenza artificiale” ed hanno ricevuto una grande attenzione a partire soprattutto dal 1981 quando il governo giapponese annunciò un progetto per la realizzazione degli “elaboratori della quinta generazione” che dovrebbero avere, tra le altre, le caratteristiche ora illustrate. Occorre dire che la fase di realizzazione di tali macchine è stata meno veloce rispetto alle aspettative, sia per alcuni limiti della tecnologia, sia soprattutto per la difficoltà di comprendere a fondo e simulare artificialmente (anche solo in parte) i meccanismi della mente umana. In alcuni settori comunque ci sono già risultati promettenti ed applicazioni concrete come nel campo dei riconoscitori e sintetizzatori vocali, in quello del controllo numerico delle macchine utensili o ancora in quello dei “sistemi esperti”. Questi ultimi sono sistemi che memorizzano una grossa mole di informazioni su un certo argomento (ad esempio in campo medico) in modo da formare la cosiddetta “base delle conoscenze”; essi sono poi capaci grazie ad un insieme di regole prestabilite, il cosiddetto “motore inferenziale”, di svolgere elaborazioni logiche simili alle deduzioni umane per fornire risposte a determinati quesiti e contemporaneamente arricchire la propria base delle conoscenze. Occorre infine notare che con gli elaboratori della quinta generazione si dovrebbe superare il concetto di “architettura di Von Neumann”, che come vedremo è rimasto valido fino ad oggi, in modo da rendere possibile un forte parallelismo nel trattamento delle informazioni e da rendere praticabile la “programmazione funzionale”. Questa è basata sul fatto che le elaborazioni da svolgere sono viste solo come applicazioni di funzioni e ignorano la reale rappresentazione dei dati nella memoria dell’elaboratore contrariamente a quanto avviene con la programmazione “classica”. Concludiamo con una tabella riassuntiva delle caratteristiche delle cinque generazioni degli elaboratori elettronici: Generazione Prima Seconda Terza Quarta Quinta Anni Elaboratori 1946-56 1957-63 1964-74 1975-oggi 1990-oggi ENIAC EDSAC UNIVAC1 IBM 704 IBM 7090 CDC-6600 IBM 360,370 PDP-11 HONEYWELL 2.000 CRAY XMP IBM 308 AMDAHL 580 P.C. IBM e APPLE Tecnologia Valvole elettroniche. Tamburi magnetici Transistor. Memorie a nuclei magnetici. Memorie a semiconduttori. Dischi magnetici. Minielaboratori. LSI Software Programma memorizzato. Codice macchina. Linguaggi ad alto livello. COBOL ALGOL FORTRAN Prestazioni Memorie di 2 Kb. 10.000 istruz. al sec. Memorie di 32 Kb. 200.000 istruz. al sec. PASCAL Programm. strutturata. Timesharing. Computer Graphics. Basi di dati. Memorie di 2 Mb. 5 megaistruz. al sec. Sistemi a elaborazione distribuita. VLSI Microprocessori Microelaboratori (P.C.). ADA Sviluppo estensivo della elaborazione distribuita. Fusione di tecnologie per l’informatica e la telecomunicazione. Architetture parallele. Componenti ottiche. Scala di integrazione ultra grande. Sistemi esperti. Linguaggi concorrenti. Programm. funzionale. Informatica sensoriale. Memorie da 4 Mb a 4Gb. Da 1 gigaistruz. al sec. a 1 30 megaistruz. al sec. tetraistruz. al sec. e con una comparazione tra l’ENIAC ed un moderno (1996) P.C. per dare un’idea, sia pure sommaria, dell’evoluzione tecnologica che si è avuta nella realizzazione dei sistemi di elaborazione. ENIAC Costo Memoria centrale Alcuni miliardi Poche decine di caratteri PERSONAL COMPUTER 2 - 10 milioni 8 - 32 milioni di caratteri Dimensioni Peso Affidabilità Potenza di calcolo 30 metri di lunghezza, 180 mq 30 tonnellate Un guasto al giorno 300 moltiplicazioni al secondo Alcune decine di cm Pochi kg Quasi assoluta Alcuni milioni di operazioni al secondo