Storia dell'informatica

Lastoria dell'informaticaè molto antica, in quanto meccanismi per automatizzare il trattamento dei dati e delle operazioniaritmeticheerano noti già aibabilonesiintorno alX secolo a.C., inIndiae inCinaforse addirittura prima. In senso moderno, però, l'informaticanasce soprattutto dal lavoro di precursori qualiPascaleLeibniz, iniziatori comeBabbage,Lovelace,Zuse,Atanasoff,TuringeAiken, creatori dei primi progetti computazionali di vasto respiro comede Finetti,von NeumanneWiener.
Il più antico strumento conosciuto usato per la computazione fu l'abacoche, presso gli antichi popoli (babilonesi,cinesi,greci,romani), era una tavoletta con scanalature numerate contenenti pietruzze mobili, opportunamente disposte per poter eseguire icalcoli.Dai tipi più antichi e da quelli medievali deriva l'abaco a palline infilate su bacchette di legno o fili metallici, dettopallottoliere, che serve per conteggi elementari.Ilsuan-pa, o abaco cinese, è ancora in uso presso i popoli dell'Estremo Oriente.
NelI millennio a.C.vennero inventati inCinai primi sistemi condifferenziale.Sono stati ritrovati nei carri risalenti a questo periodo.
NelV secolo a.C., nell'antica India, ilgrammaticoPāṇiniformulò la grammatica delsanscritoin 3959 regole nell'operaAṣṭādhyāyī, che è altamente sistematizzata e tecnica. Pāṇini impiegòmetaregole,trasformazioniericorsioni.
Lamacchina di Anticitera, nota anche come meccanismo di Antikythera, è il più anticocalcolatore meccanicoconosciuto, datato tra il150e il100 a.C.o, secondo ipotesi più recenti, al 250 a.C.Fu ritrovata in un relitto al largo della Grecia. Si trattava di un sofisticatoplanetario, mosso daruote dentate, che serviva per calcolare il sorgere delsole, lefasi lunari, i movimenti dei cinquepianetiallora conosciuti, gliequinozi, imesi, i giorni della settimana e ‒ secondo uno studio pubblicato suNature‒ le date deigiochi olimpici.
Dispositivi analogici meccanici per la computazione apparvero di nuovo un millennio dopo, nelmondo medievale islamicograzie agli astronomi arabi, come l'astrolabiomeccanico diAbū Rayhān al-Bīrūnī, e iltorquetodiJabir ibn Aflah. SecondoSimon Singh, i matematici arabi diedero anche importanti contributi allacrittografia, basti pensare allo sviluppo dellacrittoanalisie dell'analisi delle frequenzeda parte diAl-Kindi.Furono inventate dagli ingegneri arabi anche alcune macchine programmabili, come il flauto automatico dei fratelliBanū Mūsā, o gliautomie l'orologioche usava la perdita di peso di una candela accesa per tenere traccia del tempo, da parte diIbn al-Razzas al-Jazari. Manufatti tecnologici di complessità simile apparvero nell'Europa del XIV secolo, come gli orologi astronomici meccanici.
Da quando ilogaritmivennero introdotti all'inizio del XVII secolo (quando lo scozzeseNeperopubblicò le primeTavole dei logaritmi), seguì un periodo di considerevole progresso nella strumentazione per il calcolo automatico, grazie a inventori e scienziati.
Nel 1623 lo scienziato tedescoWilhelm Schickhardprogettò 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 franceseBlaise Pascalcostruì laPascalina, un dispositivo meccanico basato su un progetto del matematico grecoErone di Alessandria.In seguito, nel 1672, il matematico tedescoGottfried Wilhelm Leibnizinventò unacalcolatrice, 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 sulsistema numerico binario. Nel suo sistema, l'unoe lozerorappresentano i valoriveroefalso. Ma ci volle più di un secolo prima cheGeorge Boolepubblicasse la propriaalgebra booleananel 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. LaRivoluzione industrialespinse in avanti la meccanizzazione di molte attività, e fra queste vi era latessitura. Leschede perforatecontrollavano iltelaiodiJoseph Marie Jacquardnel 1801, dove un buco nella scheda indicava ununobinario e di conseguenza un punto non perforato indicava lozerobinario. Il telaio di Jacquard era molto distante da unmoderno calcolatore, ma dimostrava che le macchine potevano essere guidate da sistemi binari.
Charles Babbageè spesso riconosciuto come uno dei primi pionieri della computazione automatica. Babbage ideò una macchina per il calcolo automatico di grande complessità, lamacchina differenziale, che riuscì a realizzare tra mille difficoltà, anche per i limiti dellameccanicadel 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 delletavole matematiche.
Ideò poi, partendo dalle schede perforate del francese Jacquard, una nuova macchina, lamacchina analitica: per essa, identificò un'unità di calcolo numerico (noi diremmo unprocessore), un'unità di controllodell'esecuzione, unamemoriaper conservare i risultati intermedi e un dispositivo di uscita per visualizzare il risultato del calcolo.
La sua assistente,Ada Lovelace Byron, figlia del poeta ingleseGeorge Byron, ideò un metodo per laprogrammazionedella macchina, almeno a livello teorico, ed è per questo considerata la prima programmatrice della storia (l'articolo fu pubblicato nel 1843).In suo onore, neglianni Ottantadel XX secolo, fu creato unlinguaggio di programmazionechiamatoADA.
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'elettronicache la rivoluzione del calcolo automatico, iniziata 2300 anni prima, diventerà un fenomeno planetario.
Alan Turingè celebre per aver contribuito in modo decisivo, durante laSeconda Guerra Mondiale, all'impresa di decifrare i messaggi in codice utilizzati dai tedeschi con la loromacchina 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 chiamataintelligenza 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'informaticamoderna furono gettate daKurt Gödelcon i suoiteoremi di incompletezzadel 1931. Il primo afferma l'indimostrabilità della coerenza di qualunque sistema matematico che abbia nella sua formalizzazione anche inumeri naturalie cioè l'infinito, ovvero l'impossibilità di costruire all'interno della matematica sistemi i cui principi, oassiomi, siano non-contraddittori tra loro.Insieme al secondo, del 1930, che afferma lacompletezzasemanticadellalogicadeipredicati, 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 dellalogica matematica, con importanti implicazioni anche di ordinefilosofico.In ogni caso, condussero alla definizione e alla descrizione di questi sistemi formali, includendo concetti come lefunzioni ricorsive, illambda calcolo, lamacchina universale di Turing, isistemi di Post.
Nel 1936Alan TuringeAlonzo Churchintrodussero la formalizzazione di unalgoritmo, con i limiti su ciò che poteva essere calcolato, oltre a un modello «puramente meccanico» per la computazione. Questo divenne latesi di Church-Turing, un'ipotesi circa la natura dei dispositivi di calcolo meccanici, come icalcolatori elettronici. Questa tesi dichiara che ogni calcolo (che sia possibile), può essere eseguito attraverso un algoritmo installato su un calcolatore, assunto che vi sia sufficientetempoespazio di archiviazionedisponibile.
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».
A partire daglianni TrentadelXX secolo, gli ingegneri elettrici furono capaci di costruirecircuiti elettroniciper risolvere problemi logici e matematici, ma molti lo feceroad hoc, trascurando qualunque rigore teoretico. Questo cambiò con la teoria delcircuito a switchdell'ingegnere dellaNECAkira Nakajima, pubblicata proprio in quegli anni. Dal 1934 al 1936, Nakajima pubblicò una serie di documenti che mostravano che l'algebra booleanaa due valori, che scoprì in maniera indipendente (conobbe il lavoro diGeorge Boolesolo 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 icomputerdigitalielettronici. La teoria dei circuiti a switch fornì i fondamenti matematici e gli strumenti per la progettazione di sistemi digitali in quasi ogni area della modernatecnologia.
Il lavoro di Nakajima fu in seguito citato e rielaborato nella tesi di master del 1937 diClaude Elwood Shannon, intitolataA 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'algebrapoteva essere utilizzata per ordinare irelè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 laSeconda guerra mondiale.
Nel 1941Konrad Zusesviluppò il primocomputerfunzionale controllato attraverso programmi, loZ3. Nel 1998 fu qualificato come macchina «Turing completa».Zuse sviluppò inoltre l'S2, considerata la prima macchina per il controllo industriale. Ha fondato uno dei primissimi business informatici nel 1941, producendo loZ4, che divenne il primo computer commerciale al mondo. Nel 1946 progettò il primolinguaggio di programmazione ad alto livello,Plankalkül.
Nel 1948 ilManchester Babyvenne completato; era il primo calcolatore elettronico digitale per uso generale che eseguiva programmi memorizzati come la maggior parte dei computer moderni.L'influenza suMax Newmandel documento datato 1936 sullemacchine di Turing, e i suoi contributi logico-matematici al progetto, sono stati entrambi cruciali per il successivo sviluppo delManchester SSEM.
Nel 1950 il britannicoNational Physical Laboratorycompletò ilPilot ACE, un computer di piccola taglia programmabile, basato sulla filosofia di Turing. Con una velocità operativa di 1 MHz, il Pilot Model ACE fu per qualche tempo il computer più veloce al mondo.Il design di Turing per l'ACE aveva molto il comune con le odierne architettureRISCe si appellava per una memoria ad alta velocità di circa la stessa capacità di un primo computerMacintosh, che era immensa per gli standard di quel tempo. Se l'ACE di Turing fosse stato costruito come previsto e completamente, avrebbe vantato un rapporto diverso dagli altri primi computer.
Nel 1948Claude Shannonpubblicò il saggioA Mathematical Theory of Communication(Una teoria matematica della comunicazione), uno dei pilastri della modernateoria dell'informazionee dell'informatica, dove compare per la prima volta il termine «bit», da lui coniato per designare l'unità elementare diinformazione, e dove vengono introdotti il concetto dientropia dell'informazionee l'identità tra i duevalori di verità(veroefalso) della logica simbolica e i valori binari 1 e 0 deicircuiti elettronici.Con i suoi lavori dedicati alla teoria dell'informazione, all'affidabilità dei circuiti, al problema dellasicurezzadellacomunicazionee allacrittografia, Shannon ha profondamente cambiato la teoria e la pratica della comunicazione.
Dopo il dottorato conseguito all'età di 18 anni allaHarvard University, con una tesi di logica matematica,Norbert Wienerstudiò inEuropaconBertrand RusselleDavid Hilbert. Insegnò, a partire dal 1919, alMITdiCambridge(Massachusetts).Diede fondamentali contributi nel campo della teoria matematica deiprocessi stocastici, della previsione e delcalcolo delle probabilità, e a partire dai suoi lavori sulla statistica elaborò con il suo allievoClaude Shannon, la modernateoria dell'informazione.
Negli anni dellaSeconda guerra mondiale, si occupò dei problemi delcontrollo automaticodellearmibelliche.Stimolato da queste ricerche, elaborò il progetto di una scienza generale della regolazione del controllo, da lui battezzata «cibernetica», e presentata in un libro di grande successo, intitolatoCybernetics or control and communication in the animal and the machine(La cibernetica, ovvero il controllo e la comunicazione negli animali e nelle macchine, 1948).Da allora, pur continuando a occuparsi di matematica generale, si dedicò prevalentemente allo sviluppo e alla divulgazione della nuova disciplina.
Ininformatical'architettura di von Neumannè una tipologia diarchitettura hardwarepercomputerdigitaliprogrammabilia programma memorizzatola quale condivide i dati delprogrammae leistruzionidel programma nello stesso spazio dimemoria. Per tale caratteristica l'architettura divon Neumannsi contrappone all'architettura Harvardnella quale invece i dati del programma e le istruzioni del programma sono memorizzati in spazi di memoria distinti. Von Neumann propose una struttura molto semplice, che è poi quella che troviamo rispecchiata, in linea di principio, nei nostri PC.
SecondoJohn von Neumann, gli elementi essenziali di un calcolatore programmabile sono: