# Z3 (computer)

Lo Z3 è il primo calcolatore totalmente programmabile e totalmente automatico, quindi viene spesso indicato come il primo computer della storia. Il suo creatore è Konrad Zuse.
È il terzo calcolatore realizzato da Zuse, evoluzione dello Z1 e dello Z2.
Lo Z3 è composto da 2.200 relè funzionanti a una frequenza compresa tra i 5 e i 10 hertz. Il sistema utilizzava parole lunghe 22 bit. Le operazioni venivano eseguite da un'unità aritmetica in virgola mobile. La macchina venne completata nel 1941 (il 12 maggio dello stesso anno fu presentata a un pubblico di scienziati a Berlino). Il computer originale venne distrutto dagli alleati nel 1944 durante un bombardamento alleato di Berlino. Una copia perfettamente funzionante venne realizzata negli anni sessanta dalla Zuse KG ed è in esposizione permanente al Deutsches Museum. Nel 1998 è stato dimostrato che lo Z3 è Turing completo.

## Confronto tra lo Z3 e i suoi predecessori
### Lo Z3 confrontato con gli altri progetti

* L'idea, non realizzata, del primo computer programmabile, si deve a Charles Babbage con la macchina analitica del 1837. Prima dello Z3 c'erano state solo macchine da calcolo meccaniche come la Pascalina, di Blaise Pascal nel 1642, lo Stepped Reckoner di Leibniz nel 1671, la macchina calcolatrice di Wilhelm Schickard nel 1623, e persino la stessa tabulatrice di Hollerith del 1890 non era considerabile un computer programmabile. lo Z3 nel 1941 era invece programmabile.
* Lo Z3 è grosso modo contemporaneo all'ABC (Atanasoff-Berry Computer) del 1939, che è considerato il primo computer programmabile digitale elettronico.
* Il successo dello Z3 lo si deve anche all'utilizzo del sistema binario. Questo sistema venne inventato tre secoli prima da Gottfried Leibniz; Boole in seguito lo utilizzo per sviluppare l'algebra di Boole. Nel 1937 Claude Shannon al MIT presentò l'idea di utilizzare l'algebra di Boole per descrivere il funzionamento dei circuiti basati su relè in un seminario sulla progettazione di circuiti digitali. Tuttavia Zuse ha sviluppato le intuizioni teoriche di Shannon e realizzato una macchina funzionante.
* Il primo progetto di un computer programmabile fu la Macchina analitica di Charles Babbage, nel 1800. Il progetto non venne mai realizzato dato che venne sviluppato utilizzando la base decimale e non la più semplice base binaria (tuttavia, nel 1910, Henry P. Babbage, il figlio di Charles Babbage, affermò che una parte della Macchina analitica era stata costruita e utilizzata per calcolare una lista di multipli del pi greco). L'amica di Babbage Ada Lovelace viene usualmente considerata la prima programmatrice della storia anche se lavorò solo su una macchina teorica mentre Zuse fu il primo programmatore a lavorare realmente su una macchina funzionante.
* L'ENIAC venne completato quattro anni dopo lo Z3. L'ENIAC utilizzava valvole termoioniche per implementare le commutazioni, lo Z3 utilizzava dei relè. L'ENIAC era decimale mentre lo Z3 era già binario. Nel 1948 programmare l'ENIAC voleva dire riscrivere il programma mentre lo Z3 poteva caricarlo da nastro perforato. Tutti gli attuali computer sono basati su transistor e non più su relè o valvole termoioniche, ma il disegno ricorda più lo Z3 che l'ENIAC.
* Lo Z3 era dotato di un nastro dove memorizzare il programma. Il Manchester Baby (1948), il Manchester Mark I (1949) e l'EDSAC (1949) furono i primi computer a programma memorizzato della storia, un'idea frequentemente attribuita a un lavoro del 1945 di John von Neumann e colleghi (First draft of a report on the EDVAC). Un brevetto di Konrad Zuse tuttavia menzionava il concetto nel 1936, quasi un decennio prima, ma il brevetto venne respinto.
* Lo Z3 permetteva di eseguire alcune operazioni legate alla gestione delle istruzioni in parallelo riducendo i tempi di elaborazione. È il primo esempio di sistema che sfrutta l'instruction level parallelism.

## Funzionamento rispetto a una macchina di Turing universale

Lo Z3 permetteva di realizzare loop ma non supportava istruzioni di salto condizionato (anche se non sarebbe stato difficile inserirne una). Tuttavia esiste una possibilità di implementare una macchina di Turing universale con lo Z3 (assumendo un nastro di lunghezza infinita e nessuna possibilità di errore), questa possibilità è stata dimostrata nel 1998. Il metodo utilizzato è scomodo, ma la macchina di Turing è un dispositivo scomodo da utilizzare. È nata per essere universale e semplice da utilizzare per dimostrare teoremi, non per essere utilizzata con programmi reali.
* Da un punto di vista pratico lo Z3 forniva delle istruzioni utili a risolvere problemi di ingegneria del 1940 e serviva per facilitare la vita agli ingegneri. Non va paragonata con i moderni computer, destinati a poter assolvere qualsiasi compito.