La storia dei computer

Prima dell'età dell'elettronica, la cosa più vicina a un computer era l'abaco, anche se, a rigor di termini, l'abaco è in realtà una calcolatrice poiché richiede un operatore umano. I computer, invece, eseguono i calcoli automaticamente seguendo una serie di comandi integrati chiamati software.

Nel 20esimo secolo, le innovazioni tecnologiche hanno consentito alle macchine per computer in continua evoluzione da cui ora dipendiamo così totalmente, che praticamente non ci pensiamo mai più. Ma anche prima dell'avvento dei microprocessori e dei supercomputer, c'erano alcuni importanti scienziati e inventori che hanno contribuito a gettare le basi per la tecnologia che da allora ha drasticamente rimodellato ogni aspetto della vita moderna.

La lingua prima dell'hardware

Il linguaggio universale in cui i computer eseguono le istruzioni del processore ebbe origine nel XVII secolo sotto forma di sistema binario numerico. Sviluppato dal filosofo e matematico tedesco Gottfried Wilhelm Leibniz, il sistema nacque come un modo per rappresentare i numeri decimali usando solo due cifre: il numero zero e il numero uno. Il sistema di Leibniz è stato in parte ispirato da spiegazioni filosofiche nel testo classico cinese "I Ching", che spiegava l'universo in termini di dualità come luce e oscurità e maschio e femmina. Sebbene all'epoca non vi fosse alcun uso pratico per il suo sistema appena codificato, Leibniz credeva che un giorno una macchina avrebbe potuto usare queste lunghe stringhe di numeri binari.

Nel 1847, il matematico inglese George Boole introdusse un linguaggio algebrico di nuova concezione costruito sul lavoro di Leibniz. La sua "algebra booleana" era in realtà un sistema di logica, con equazioni matematiche utilizzate per rappresentare affermazioni in logica. Altrettanto importante era che utilizzava un approccio binario in cui la relazione tra diverse quantità matematiche sarebbe vera o falsa, 0 o 1. 

Come per Leibniz, all'epoca non c'erano applicazioni ovvie per l'algebra di Boole, tuttavia, il matematico Charles Sanders Pierce impiegò decenni ad espandere il sistema e nel 1886 decise che i calcoli potevano essere effettuati con circuiti di commutazione elettrici. Di conseguenza, la logica booleana alla fine diventerebbe strumentale nella progettazione di computer elettronici.

I primi processori

Il matematico inglese Charles Babbage ha il merito di aver assemblato i primi computer meccanici, almeno tecnicamente parlando. Le sue macchine dell'inizio del XIX secolo presentavano un modo per inserire numeri, memoria e un processore, oltre a un modo per produrre i risultati. Babbage chiamò il suo primo tentativo di costruire la prima macchina informatica al mondo come "motore di differenza". Il progetto prevedeva una macchina che calcolasse i valori e stampasse automaticamente i risultati su una tabella. Doveva essere manovrato a mano e avrebbe pesato quattro tonnellate. Ma il bambino di Babbage fu uno sforzo costoso. Più di £ 17.000 sterline sono stati spesi per lo sviluppo iniziale del motore differenza. Il progetto fu infine demolito dopo che il governo britannico interruppe i finanziamenti di Babbage nel 1842.

Ciò costrinse Babbage a passare a un'altra idea, un "motore analitico", che aveva una portata più ambiziosa rispetto al suo predecessore e doveva essere usato per il calcolo per scopi generici piuttosto che per l'aritmetica. Sebbene non sia mai stato in grado di seguire e costruire un dispositivo funzionante, il design di Babbage presentava essenzialmente la stessa struttura logica dei computer elettronici che sarebbero entrati in uso negli anni 20esimo secolo. Il motore analitico aveva una memoria integrata, una forma di archiviazione delle informazioni presente in tutti i computer, che consente la ramificazione o la possibilità per un computer di eseguire una serie di istruzioni che si discostano dall'ordine di sequenza predefinito, nonché i loop, che sono sequenze di istruzioni eseguite ripetutamente in successione. 

Nonostante i suoi fallimenti nel produrre una macchina informatica completamente funzionale, Babbage rimase fermamente imperterrito nel perseguire le sue idee. Tra il 1847 e il 1849, elaborò progetti per una nuova e migliorata seconda versione del suo motore differenziale. Questa volta, ha calcolato numeri decimali lunghi fino a 30 cifre, ha eseguito i calcoli più rapidamente ed è stato semplificato per richiedere meno parti. Tuttavia, il governo britannico non pensava che valesse la pena investire. Alla fine, il più grande progresso mai realizzato da Babbage su un prototipo è stato il completamento di un settimo del suo primo progetto.

Durante questa prima era dell'informatica, ci furono alcuni risultati notevoli: la macchina per la previsione delle maree, inventata dal matematico, fisico e ingegnere scozzese-irlandese Sir William Thomson nel 1872, fu considerata il primo moderno computer analogico. Quattro anni dopo, suo fratello maggiore, James Thomson, elaborò un concetto per un computer che risolveva problemi matematici noti come equazioni differenziali. Ha definito il suo dispositivo una "macchina integrata" e negli anni successivi sarebbe servito come base per sistemi noti come analizzatori differenziali. Nel 1927, lo scienziato americano Vannevar Bush iniziò lo sviluppo della prima macchina da nominare come tale e pubblicò una descrizione della sua nuova invenzione in una rivista scientifica nel 1931.

Alba dei computer moderni

Fino all'inizio del 20esimo secolo, l'evoluzione dell'informatica è stata poco più che gli scienziati che si dilettano nella progettazione di macchine in grado di eseguire in modo efficiente vari tipi di calcoli per vari scopi. Fu solo nel 1936 che una teoria unificata su ciò che costituisce un "computer per scopi generici" e su come dovrebbe funzionare fu finalmente presentata. Quell'anno, il matematico inglese Alan Turing pubblicò un documento intitolato "Numeri calcolabili, con un'applicazione al problema di Entscheidungs", che delineava come un dispositivo teorico chiamato "macchina di Turing" potesse essere utilizzato per eseguire qualsiasi calcolo matematico concepibile eseguendo le istruzioni . In teoria, la macchina avrebbe memoria illimitata, leggere dati, scrivere risultati e memorizzare un programma di istruzioni.

Mentre il computer di Turing era un concetto astratto, era un ingegnere tedesco di nome Konrad Zuse che avrebbe continuato a costruire il primo computer programmabile al mondo. Il suo primo tentativo di sviluppare un computer elettronico, lo Z1, fu un calcolatore binario che leggeva le istruzioni da un film perforato da 35 millimetri. La tecnologia era inaffidabile, tuttavia, quindi la seguì con la Z2, un dispositivo simile che utilizzava circuiti a relè elettromeccanici. Mentre era un miglioramento, fu nell'assemblare il suo terzo modello che tutto si unì per Zuse. Presentata nel 1941, la Z3 era più veloce, più affidabile e in grado di eseguire calcoli complicati. La più grande differenza in questa terza incarnazione era che le istruzioni erano memorizzate su un nastro esterno, permettendogli così di funzionare come un sistema completamente operativo controllato da programma. 

La cosa forse più straordinaria è che Zuse ha svolto gran parte del suo lavoro da solo. Non era a conoscenza del fatto che la Z3 fosse "Turing completa", o in altre parole, in grado di risolvere qualsiasi problema matematico calcolabile, almeno in teoria. Né aveva alcuna conoscenza di progetti simili in corso nello stesso periodo in altre parti del mondo.

Tra i più importanti di questi vi fu Harvard Mark I, finanziato dall'IBM, che debuttò nel 1944. Ancora più promettente, tuttavia, fu lo sviluppo di sistemi elettronici come il prototipo di calcolo della Gran Bretagna del 1943 Colossus e l'ENIAC, il primo sistema elettronico pienamente operativo computer per uso generale che fu messo in servizio presso l'Università della Pennsylvania nel 1946.

Dal progetto ENIAC è emerso il prossimo grande salto nella tecnologia informatica. John Von Neumann, un matematico ungherese che aveva consultato il progetto ENIAC, avrebbe gettato le basi per un computer programmato. Fino a questo punto, i computer operavano su programmi fissi e modificando la loro funzione, ad esempio dall'esecuzione di calcoli all'elaborazione di testi. Ciò ha richiesto il lungo processo di dover ricollegare e ristrutturare manualmente. (Ci sono voluti diversi giorni per riprogrammare l'ENIAC.) Turing aveva proposto che idealmente, avere un programma in memoria avrebbe permesso al computer di modificarsi ad un ritmo molto più veloce. Von Neumann era incuriosito dal concetto e nel 1945 redasse un rapporto che forniva in dettaglio un'architettura fattibile per l'elaborazione di programmi memorizzati.   

Il suo articolo pubblicato sarebbe ampiamente diffuso tra i team concorrenti di ricercatori che lavorano su vari progetti di computer. Nel 1948, un gruppo in Inghilterra introdusse la Macchina sperimentale su piccola scala di Manchester, il primo computer a eseguire un programma memorizzato basato sull'architettura Von Neumann. Soprannominato "Baby", il Manchester Machine era un computer sperimentale che fungeva da predecessore del Manchester Mark I. L'EDVAC, il design del computer per il quale era originariamente previsto il rapporto di Von Neumann, non fu completato fino al 1949.