La storia della nascita dei computer è una storia interessante che coinvolge diverse persone. In questo breve articolo vengono riportate alcune notizie sulla nascita dei computer.
La macchina analitica di Babbage
Sto pensando che tutte queste tabelle potrebbero essere calcolate da macchinari. (cit Charles Babbage)
Charles Babbage nacque in Inghilterra nel 1791. Studiò matematica presso l’Università di Cambridge e successivamente divenne professore nella stessa università, una posizione ricoperta anni prima da Isaac Newton. Da studente, Babbage propose la costruzione della macchina differenziale, un dispositivo per il calcolo e la stampa automatica di tabelle matematiche. Nel 1830, con una sovvenzione del governo britannico, iniziò la costruzione della macchina. Mentre lavorava sulla macchina differenziale, sviluppò l’idea di una macchina calcolatrice ancora più ambiziosa, che chiamò macchina analitica. Abbandonò il progetto della macchina differenziale nel 1834 per dedicarsi a questa nuova idea. Secondo il progetto di Babbage, la macchina analitica doveva avere una memoria di 1.000 numeri di 50 cifre decimali ciascuno. I numeri dovevano essere memorizzati su ruote, ognuna con 10 posizioni.
Schede perforate simili a quelle usate da Jacquard dovevano contenere le sequenze di istruzioni da eseguire e i dati da inserire nella macchina. La macchina analitica doveva avere quattro unità:
1. Lo store (memoria), che avrebbe contenuto dati e risultati dei calcoli.
2. Il mulino, che sarebbe stato il meccanismo centrale per eseguire operazioni matematiche.
3. Un sistema di ingranaggi e leve per trasferire dati avanti e indietro tra lo store e il mulino.
4. L’unità di input/output, che avrebbe letto i dati esterni al motore analitico nel suo store e visualizzato i risultati dei calcoli.
È notevole come la descrizione della macchina analitica corrisponda così strettamente all’organizzazione degli attuali sistemi informatici. Babbage era davvero avanti di cento anni rispetto al suo tempo nel proporre questa macchina!
Sfortunatamente, Babbage non completò mai la macchina analitica. La tecnologia dell’epoca era inadeguata per produrre i componenti meccanici necessari con la precisione richiesta. Inoltre, non vi era una reale necessità di una macchina così potente: i dispositivi di calcolo già disponibili erano più che sufficienti per soddisfare le esigenze di calcolo dalla metà alla fine del 1800. Grazie alla macchina analitica, Babbage è ricordato come il padre del computer; se l’avesse completata, sarebbe stato il primo computer multiuso completamente automatico. Altre persone, invece, continuarono il suo lavoro.
Lady Lovelace: Il primo programmatore di computer
Possiamo dire molto giustamente che il motore analitico tesse motivi algebrici proprio come il telaio Jacquard intreccia fiori e foglie. (Ada Lovelace)
Nel 1842 Augusta Ada Byron, contessa di Lovelace e figlia del poeta Lord Byron, tradusse un articolo sulla macchina analitica di Babbage dal francese all’inglese.
Durante il suo lavoro di traduzione, prese note abbondanti e, a un certo punto, incluse una sequenza dettagliata di istruzioni per eseguire alcuni calcoli complessi sulla macchina analitica. Questo è generalmente considerato il primo programma per computer, e Lady Lovelace è riconosciuta da molti come il primo programmatore di computer al mondo. Uno dei linguaggi di programmazione, utilizzato alcuni anni fa, Ada, prende il nome da Lady Lovelace.
L’eniac
L’ENIAC occupava circa 140 metri quadrati di pavimento e pesava 30 tonnellate.
La macchina era interamente elettronica, composta da 19.000 tubi a vuoto e decine di migliaia di altri componenti elettronici. Aveva 500.000 giunti saldati e nessuna parte mobile. A differenza dell’ABC e dei computer binari di oggi, l’ENIAC utilizzava il sistema decimale. Ogni numero sulla macchina poteva contenere qualsiasi numero decimale da zero a nove. Il conteggio procedeva da 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 e poi “0 con riporto di 1” per formare il numero 10. In binario, vengono utilizzati solo i numeri zero e uno, e si utilizza anche la tecnica del riporto. I numeri binari sono scomodi per gli esseri umani ma convenienti per i computer. Un numero binario (o bit, come vengono chiamati) può essere costruito con un interruttore che può essere aperto o chiuso (off o on). I numeri binari all’interno del computer devono essere convertiti in decimale per comodità degli utenti umani. Poiché l’ENIAC era completamente elettronico, i calcoli venivano eseguiti molto più velocemente rispetto al computer elettromeccanico dell’epoca, il Mark I. ENIAC poteva eseguire 5000 addizioni o 300 moltiplicazioni di 10 numeri al secondo, rendendolo più veloce di oltre mille volte rispetto al Mark I. (È interessante notare che molti dei computer domestici di oggi sono almeno cento volte più veloci dell’ENIAC, pesano meno di 14 chilogrammi, consumano circa un millesimo di potenza, costano circa un millesimo e possono memorizzare migliaia di volte più informazioni.) Durante una convention sui computer, J. Presper Eckert, Jr., ha raccontato una storia interessante sul debugging. Poiché i tubi a vuoto utilizzati nell’ENIAC avevano una durata relativamente breve, i tubi di backup erano tenuti a portata di mano. Un bug particolare è stato scoperto su un certo pannello di questi tubi. L’ingegnere era sicuro che questo bug fosse la causa del problema e ha sostituito il pannello difettoso con il pannello di backup, ma quasi immediatamente è sorto lo stesso problema. Gli ingegneri hanno passato giorni a controllare l’intera ENIAC dall’alto verso il basso. Come ultimo tentativo, il pannello di ricambio è stato controllato ed aveva esattamente lo stesso bug hardware del pannello originale, un’incredibile coincidenza. Questa esperienza ha dimostrato quanto fosse difficile mantenere queste macchine giganti in funzione. I computer di oggi sono progettati con funzionalità di autocontrollo che esaminano continuamente i problemi.
La macchina di Turing
Il lavoro più noto di Turing è “On Computable Numbers” del 1936, nel quale il matematico presenta la sua macchina di calcolo logico, poi definita macchina di Turing. Una macchina di Turing non è una macchina fisica ma un modello di una macchina ideale consistente in:
A) un nastro infinito in entrambe le direzioni, diviso in caselle ciascuna delle quali può contenere il simbolo 0 oppure il simbolo 1. Il nastro rappresenta la memoria della macchina;
B) una testina che può leggere il simbolo, 0 oppure 1, contenuto in una casella e scrivere un simbolo in una casella, e può muoversi lungo il nastro, una casella per volta.
Si tratta soltanto di un modello teorico, poiché prevede un tempo e uno spazio (cioè il nastro) infiniti.
Secondo Turing sarebbe stato possibile inventare una macchina che potesse essere utilizzata per qualsiasi sequenza computabile. La novità di questa teoria, secondo Dyson, è che si dimostrava che una macchina poteva essere codificata come un numero e viceversa, introducendo il concetto di ciò che oggi chiameremmo software.

Macchina di Von Neumann
L’espressione “architettura di Von Neumann” o “macchina di Von Neumann” si riferisce allo schema progettuale ideato dal matematico ungherese John Von Neumann intorno alla metà del Novecento. Il computer, così come lo conosciamo oggi, è stato realizzato grazie a questo schema. I concetti di base dell’architettura di Von Neumann sono presenti anche nei moderni microprocessori. Lo schema si fonda su quattro componenti fondamentali:

- CPU
- RAM
- Interfaccia di I/O (Input/Output)
- Bus di sistema
- CPU
La CPU (Central Processing Unit) è l’unità centrale di elaborazione, considerata il “cervello” del computer. La CPU esegue istruzioni di calcolo e controllo, coordinando le altre componenti nell’esecuzione delle istruzioni stesse. La CPU, anche nota come processore, si suddivide in diverse unità funzionali.
La CPU coordina le altre componenti del sistema utilizzando un circuito temporizzatore, chiamato clock di sistema o semplicemente clock. Utilizzando una metafora, si può dire che il clock detta il ritmo nell’esecuzione delle istruzioni così come il tempo detta il ritmo in una canzone.
Per quanto riguarda la memoria del computer, una prima distinzione si fa tra memoria principale e memoria secondaria. La RAM (Random Access Memory) è la memoria centrale e può essere considerata una delle memorie principali insieme ai registri e alla cache. La RAM riveste un ruolo fondamentale nell’architettura di Von Neumann: tutte le istruzioni e i dati devono risiedere in RAM per essere utilizzati dalla CPU. Tuttavia, la RAM è volatile, quindi le informazioni in essa contenute si perdono quando il computer è spento. Anche i registri sono memorie volatili, tra cui MAR, MDR, PC, IR e PSW, che assumono un ruolo fondamentale nel ciclo delle istruzioni macchina, discusso in questo post. La ROM (Read Only Memory) è classificata come memoria principale ed è una memoria persistente a sola lettura. La ROM contiene il programma di bootstrap, che permette al sistema di avviarsi e caricare il software principale, tipicamente il sistema operativo. Per quanto riguarda la memoria secondaria, citiamo il disco rigido (hard disk) e i dischi a stato solido (SSD), sui quali vengono conservati dati e programmi in maniera persistente. Essendo persistenti, i dati su questi dischi si mantengono anche dopo lo spegnimento del computer. Gli hard disk, insieme a lettori CD/DVD, tastiere, mouse e webcam, possono essere considerati dispositivi di input nell’architettura. Dispositivi di output sono invece stampanti e schermi. I dispositivi di input servono per inserire dati e/o dare comandi al sistema, mentre i dispositivi di output servono a comunicare all’utente i dati elaborati dalla macchina. I vari dispositivi, detti anche periferiche, sono diversi tra loro e necessitano quindi di un’interfaccia comune per comunicare con gli altri componenti dell’architettura. Questa interfaccia è l’interfaccia di I/O. Infine, il bus è il canale di comunicazione che permette di collegare tra loro i componenti dell’architettura, consentendo il transito delle informazioni. Nell’architettura di Von Neumann distinguiamo diverse linee nel bus di sistema.
Una caratteristica dell’architettura di Von Neumann è che istruzioni e dati viaggiano senza distinzione all’interno dell’unico bus di sistema presente. Questo non accade nell’architettura Harvard, su cui sono basati i più famosi microcontrollori moderni.
Architettura Harvard
Il modello Harvard è un tipo di architettura hardware per computer digitali in cui vi è separazione tra la memoria contenente i dati e quella contenente le istruzioni. Il termine inizialmente indicava l’architettura del computer Harvard Mark I, un computer basato su relè che memorizzava le istruzioni su un nastro perforato mentre i dati venivano memorizzati in un contatore elettromeccanico a 23 cifre. Questa macchina non era dotata di un’unità di immagazzinamento dei dati, questi erano interamente memorizzati dalla CPU e il loro caricamento e salvataggio era un processo eseguito in modo manuale agendo sui contatori.
