La storia dell'informatica è molto antica, in quanto meccanismi per automatizzare il trattamento dei dati e delle operazioni aritmetiche erano noti già ai babilonesi intorno al X secolo a.C., in India e in Cina forse addirittura prima. In senso moderno, però, l'informatica nasce soprattutto dal lavoro di precursori quali Pascal e Leibniz, iniziatori come Babbage, Lovelace, Zuse, Atanasoff, Turing e Aiken, creatori dei primi progetti computazionali di vasto respiro come de Finetti, von Neumann e Wiener.
Antichità
Il più antico strumento conosciuto usato per la computazione fu l'abaco che, presso gli antichi popoli (babilonesi, cinesi, greci, romani), era una tavoletta con scanalature numerate contenenti pietruzze mobili, opportunamente disposte per poter eseguire i calcoli. Dai tipi più antichi e da quelli medievali deriva l'abaco a palline infilate su bacchette di legno o fili metallici, detto pallottoliere, che serve per conteggi elementari. Il suan-pa, o abaco cinese, è ancora in uso presso i popoli dell'Estremo Oriente.
Nel I millennio a.C. vennero inventati in Cina i primi sistemi con differenziale.Joseph Needham (1986). Science and Civilization in China: Volume 4, Part 2, page 298. Taipei: Caves Books, Ltd. Sono stati ritrovati nei carri risalenti a questo periodo.
Nel V secolo a.C., nell'antica India, il grammatico Pāṇini formulò la grammatica del sanscrito in 3959 regole nell'opera Aṣṭādhyāyī, che è altamente sistematizzata e tecnica. Pāṇini impiegò metaregole, trasformazioni e ricorsioni.
La macchina di Anticitera, nota anche come meccanismo di Antikythera, è il più antico calcolatore meccanico conosciuto, datato tra il 150 e il 100 a.C. o, secondo ipotesi più recenti, al 250 a.C. Fu ritrovata in un relitto al largo della Grecia. Si trattava di un sofisticato planetario, mosso da ruote dentate, che serviva per calcolare il sorgere del sole, le fasi lunari, i movimenti dei cinque pianeti allora conosciuti, gli equinozi, i mesi, i giorni della settimana e ‒ secondo uno studio pubblicato su Nature ‒ le date dei giochi olimpici.
Medioevo Il contributo medievale islamico Dispositivi analogici meccanici per la computazione apparvero di nuovo un millennio dopo, nel mondo medievale islamico grazie agli astronomi arabi, come l'astrolabio meccanico di Abū Rayhān al-Bīrūnī, e il torqueto di Jabir ibn Aflah. Secondo Simon Singh, i matematici arabi diedero anche importanti contributi alla crittografia, basti pensare allo sviluppo della crittoanalisi e dell'analisi delle frequenze da parte di Al-Kindi. Furono inventate dagli ingegneri arabi anche alcune macchine programmabili, come il flauto automatico dei fratelli Banū Mūsā, o gli automi e l'orologio che usava la perdita di peso di una candela accesa per tenere traccia del tempo, da parte di Ibn al-Razzas al-Jazari. Manufatti tecnologici di complessità simile apparvero nell'Europa del XIV secolo, come gli orologi astronomici meccanici.
XVII, XVIII e XIX secolo Le prime calcolatrici meccaniche
Da quando i logaritmi vennero introdotti all'inizio del XVII secolo (quando lo scozzese Nepero pubblicò le prime Tavole dei logaritmi), seguì un periodo di considerevole progresso nella strumentazione per il calcolo automatico, grazie a inventori e scienziati.
Nel 1623 lo scienziato tedesco Wilhelm Schickard progettò una macchina calcolatrice, ma abbandonò il progetto quando il prototipo che aveva iniziato a costruire venne distrutto da un incendio nel 1624. Verso il 1640 il matematico e filosofo francese Blaise Pascal costruì la Pascalina, un dispositivo meccanico basato su un progetto del matematico greco Erone di Alessandria. In seguito, nel 1672, il matematico tedesco Gottfried Wilhelm Leibniz inventò una calcolatrice, nota anche con il nome inglese "Stepped Reckoner", che completa nel 1694.
Nel 1702 Leibniz sviluppò la logica come disciplina matematica e formale, con i suoi scritti sul sistema numerico binario. Nel suo sistema, l'uno e lo zero rappresentano i valori vero e falso. Ma ci volle più di un secolo prima che George Boole pubblicasse la propria algebra booleana nel 1854, creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche. Le operazioni (come l'addizione, la sottrazione e la moltiplicazione) vengono sostituite da operazioni logiche con valori di congiunzione, disgiunzione e negazione, mentre gli unici numeri utilizzati, 1 e 0, assumono rispettivamente i significati di vero e falso.
Da questo momento furono inventati i primi dispositivi meccanici guidati da un sistema binario. La Rivoluzione industriale spinse in avanti la meccanizzazione di molte attività, e fra queste vi era la tessitura. Le schede perforate controllavano il telaio di Joseph-Marie Jacquard nel 1801, dove un buco nella scheda indicava un uno binario e di conseguenza un punto non perforato indicava lo zero binario. Il telaio di Jacquard era molto distante da un moderno calcolatore, ma dimostrava che le macchine potevano essere guidate da sistemi binari.
Charles Babbage e Ada Lovelace
Charles Babbage è spesso riconosciuto come uno dei primi pionieri della computazione automatica. Babbage ideò una macchina per il calcolo automatico di grande complessità, la macchina differenziale, che riuscì a realizzare tra mille difficoltà, anche per i limiti della meccanica del tempo. Grazie a un metodo detto delle differenze, particolarmente adatto ad essere espresso in termini meccanici, Babbage creò un sistema per l'esecuzione automatica dei calcoli necessari per la compilazione delle tavole matematiche.
Ideò poi, partendo dalle schede perforate del francese Jacquard, una nuova macchina, la macchina analitica: per essa, identificò un'unità di calcolo numerico (noi diremmo un processore), un'unità di controllo dell'esecuzione, una memoria per conservare i risultati intermedi e un dispositivo di uscita per visualizzare il risultato del calcolo.
La sua assistente, Ada Lovelace Byron, figlia del poeta inglese George Byron, ideò un metodo per la programmazione della macchina, almeno a livello teorico, ed è per questo considerata la prima programmatrice della storia (l'articolo fu pubblicato nel 1843). In suo onore, negli anni Ottanta del XX secolo, fu creato un linguaggio di programmazione chiamato Ada.
La macchina analitica di Babbage, estremamente grande e costosa da costruire, non fu mai completata per mancanza di fondi. Una strada, però, era stata aperta, anche se sarà solo con l'avvento dell'elettronica che la rivoluzione del calcolo automatico, iniziata 2300 anni prima, diventerà un fenomeno planetario.
XX secolo Alan Turing e la macchina di Turing
Alan Turing è celebre per aver contribuito in modo decisivo, durante la Seconda Guerra Mondiale, all'impresa di decifrare i messaggi in codice utilizzati dai tedeschi con la loro macchina Enigma.Ma questa sua attività ha finito per mettere in ombra il suo fondamentale ruolo di padre dell'informatica, in un periodo in cui questa disciplina non aveva ancora un nome e gli elaboratori eseguivano compiti appena superiori a quelli di una calcolatrice da tavolo.
Concentrando le sue ricerche sulla "computabilità", cioè la valutazione della possibilità di far eseguire determinate operazioni a una macchina, a poco più di vent'anni definì i confini teorici dell'informatica presente e futura. Le sue ricerche successive non potevano non investire il campo di quella che in seguito si sarebbe chiamata intelligenza artificiale: il famoso test che porta il suo nome è ancora al centro del dibattito, quanto mai aperto, sulla capacità delle macchine di competere con la mente umana.
Ma le fondamenta matematiche dell'informatica moderna furono gettate da Kurt Gödel con i suoi teoremi di incompletezza del 1931. Il primo afferma l'indimostrabilità della coerenza di qualunque sistema matematico che abbia nella sua formalizzazione anche i numeri naturali e cioè l'infinito, ovvero l'impossibilità di costruire all'interno della matematica sistemi i cui principi, o assiomi, siano non-contraddittori tra loro. Insieme al secondo, del 1930, che afferma la completezza semantica della logica dei predicati, dimostrando che, se una formula è valida, allora la si può provare in un numero finito di passi, i due teoremi rappresentano un caposaldo di portata storica nel campo della logica matematica, con importanti implicazioni anche di ordine filosofico. In ogni caso, condussero alla definizione e alla descrizione di questi sistemi formali, includendo concetti come le funzioni ricorsive, il lambda calcolo, la macchina universale di Turing, i sistemi di Post.
Nel 1936 Alan Turing e Alonzo Church introdussero la formalizzazione di un algoritmo, con i limiti su ciò che poteva essere calcolato, oltre a un modello «puramente meccanico» per la computazione. Questo divenne la tesi di Church-Turing, un'ipotesi circa la natura dei dispositivi di calcolo meccanici, come i calcolatori elettronici. Questa tesi dichiara che ogni calcolo (che sia possibile), può essere eseguito attraverso un algoritmo installato su un calcolatore, assunto che vi sia sufficiente tempo e spazio di archiviazione disponibile.
Nello stesso anno, Turing pubblicò anche il suo seminario sulla «macchina di Turing», ovvero una macchina calcolatrice digitale astratta che oggi è semplicemente chiamata «macchina universale di Turing». Questa macchina consacrò il principio del moderno calcolatore e rappresentò il luogo di nascita del concetto di "computer a programma memorizzato", il quale oggi è praticamente impiegato da ogni computer moderno. Queste macchine ipotetiche erano progettate per determinare in modo formale, matematicamente, cosa potesse essere calcolato, tenendo in considerazione le limitazioni sulla capacità di calcolo. Se una macchina di Turing può completare un'attività, è considerata «Turing computabile» o più comunemente «Turing completa».
Akira Nakajima e la teoria del circuito a switch A partire dagli anni Trenta del XX secolo, gli ingegneri elettrici furono capaci di costruire circuiti elettronici per risolvere problemi logici e matematici, ma molti lo fecero ad hoc, trascurando qualunque rigore teoretico. Questo cambiò con la teoria del circuito a switch dell'ingegnere della NEC Akira Nakajima, pubblicata proprio in quegli anni. Dal 1934 al 1936, Nakajima pubblicò una serie di documenti che mostravano che l'algebra booleana a due valori, che scoprì in maniera indipendente (conobbe il lavoro di George Boole solo nel 1938), può descrivere l'operatività dei circuiti a switch. Questo concetto di utilizzo delle proprietà degli switch elettrici per ottenere risultati logici, è il principio base che sottostà a tutti i computer digitali elettronici. La teoria dei circuiti a switch fornì i fondamenti matematici e gli strumenti per la progettazione di sistemi digitali in quasi ogni area della moderna tecnologia.
Il lavoro di Nakajima fu in seguito citato e rielaborato nella tesi di master del 1937 di Claude Elwood Shannon, intitolata A Symbolic Analysis of Relay and Switching Circuits. Mentre seguiva una lezione di filosofia, Shannon fu messo a conoscenza del lavoro di Boole, e riconobbe che quell'algebra poteva essere utilizzata per ordinare i relè elettromeccanici in modo da risolvere problemi logici. La sua tesi divenne il principio su cui poggia la progettazione dei circuiti digitali quando divenne ampiamente nota presso la comunità degli ingegneri elettrici durante e dopo la Seconda guerra mondiale.
I primi componenti hardware del computer