Sistemi Operativi, Applicazioni, Giochi e tutte le altre tipologie di software con cui quotidianamente interagiamo, sia se stiamo seduti davanti ad un PC che se utilizziamo il nostro smartphone, hanno un minimo comun denominatore: sono scritti utilizzando un linguaggio di programmazione.
Oggi esistono decine di linguaggi più o meno complessi, ognuno con i propri punti di forza e i propri punti di debolezza che lo rendono più o meno adatto ad un contesto specifico.
Ma qual è stato il primo linguaggio di programmazione della storia? Ebbene, questa domanda si intreccia in modo diretto con una seconda questione: qual è stato il primo computer elettronico (a relè) della storia?
Per rispondere a queste domande dobbiamo ritornare alla prima metà del secolo scorso, e se il viaggio è temporalmente lungo vi sorprenderà scoprire che non lo è dal punto di vista spaziale poiché ci proiettiamo in Germania.
E’ infatti qui che, nel 1935, Konrad Zuse, ingegnere civile tedesco, inizia i suoi esperimenti informatici con lo scopo di realizzare strumenti in grado di eseguire velocemente i complessi calcoli necessari alla progettazione dei velivoli, attività a cui si dedicava per l’aviazione tedesca.
Konrad Zuse
In realtà si trattava di una strada già percorsa dal matematico inglese Charles Baggage quasi un secolo prima che, però, si rilevò senza sbocchi per l’assenza delle tecnologie necessarie a realizzare i progetti.
Tornando a Zuse, il primo sistema su cui l’ingegnere tedesco comincia a lavorare è lo Z1 (dove la “Z” sta per Zuse), realizzato nella casa di famiglia a Berlino in modo segreto, visto che gli anni erano quelli del terzo reich, dove ogni diritto poteva essere soppresso in funzione delle volontà del Fuhrer. Ad essere precisi il nome originale era V1, con “V” abbreviazione di Versuschmodell (modello sperimentale), ma fu subito cambiato per evitare l’assonanza con i terribili missili nazisti.
Lo Z(V)1 durante la sua realizzazione
Al progetto contribuirono molte persone: dalla famiglia ai compagni di studi, in particolare Herber Weber, passando per semplici conoscenti che diedero il proprio contributo nella realizzazione fisica del calcolatore.
Lo Z1 era un calcolatore programmabile, comandato attraverso un insieme di levette azionate da un motore elettrico. Il sistema era basato sulla rappresentazione binaria (numeri sekundal) e su una netta separazione tra memoria e processore, esattamente in sintonia con la definizione di calcolatore data da John von Neumann dieci anni dopo (1946) e fatta propria dall’ENIAC e dal Mark1. Zuse introduce, inoltre, la rappresentazione dei numeri in virgola mobile basati su segno, esponente e mantissa, praticamente lo standard dell’IEEE (Institute of Electrical and Electronics Engineers) per il calcolo in virgola mobile.
Spaccato della ricostruzione dello Z1 conservato presso il Deutsche Technik Museum di Berlino
La memoria era di tipo meccanico e organizzata in 64 parole da 22 bit, mentre i dati e le istruzioni venivano caricate tramite un nastro perforato, simile a una pellicola cinematografica.
I tempi di elaborazione erano eccezionali: circa 1/2 secondo per un’addizione, 1 secondo per una sottrazione, 3 secondi per una moltiplicazione e 6 secondi per una divisione, nulla rispetto alle potenze attuali, ma stratosferici per il periodo.
Nonostante ciò, l’importanza dei risultati non fu compresa e solo il supporto di colleghi e amici spinse l’ingegnere tedesco a non abbandonare il proprio lavoro.
Lo step successivo fu quello del passaggio dalla memoria meccanica a quella composta da una struttura a relè, ma Zuse non era un esperto e si affidò al collega Helmut Schreyer che aveva una certa dimestichezza con la teoria elettromagnetica. Shreyer ipotizza, inoltre, la possibilità di introdurre nei calcolatori unità aritmetiche basate sui tubi a vuoto, in modo da diminuire fortemente i tempi di elaborazione. Così, mentre supporta Zuse nella revisione dello Z1 (in ottica relè), si dedica alla realizzazione (11939/1940) di un prototipo di sommatore a 10bit che usa tubi a vuoto ed un prototipo di memoria che usa lampi al neon. Quanto realizzato da Schreyer, però, non venne mai utilizzato direttamente da Zuse per i suoi calcolatori.
Dopo circa sei mesi di lavoro il nuovo Z1-b era in grado di eseguire addizioni, sottrazioni e negazioni con tempi decisamente migliori, rendendo più evidenti i possibili sviluppi. Inoltre il nuovo sistema permette a Zuse di ottenere un finanziamento di 7.000 Reichsmark da parte di Kurt Pannke, proprietario di un’azienda di macchine da calcolo.
A questo punto entra in gioco la logica e l’algebra, in particolare quella Booleana che venne approfonditamente studiata dall’ingegnere e fruttò la formulazione dei principi base del Plankalkül (in tedesco “calcolo dei programmi”), il primo linguaggio di programmazione ad alto livello della storia.
Un esempio, in pseudo-codice, di algoritmo Plankalkül, per il calcolo del massimo di tre variabili attraverso la funzione max, è il seguente:
P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END
Il Plankalkül si può ritenere il “papà” dell’ALGOL (58), tant’è che Heinz Rutishauser, uno dei suoi creatori affermò:
“The very first attempt to devise an algorithmic language was undertaken in 1948 by K. Zuse. His notation was quite general, but the proposal never attained the consideration it deserved.”
[“Il primo tentativo di creare un linguaggio algoritmico è stato intrapreso nel
1948 da K. Zuse. La sua formulazione era piuttosto generica, ma la proposta non hai mai
ottenuto la considerazione che meritava.”]
Zuse era arrivato alla conclusione che grazie ad esso lo Z1 fosse in grado di analizzare le relazioni tra i numeri inseriti e, persino, effettuare una partita a scacchi. Per quanto la cosa possa sembrare incredibile (e all’epoca era semplicemente un’idea folle), nel 2000 il professore Rojas della Technische Universität Berlin in Germania è riuscito a realizzare un gioco degli scacchi proprio attraverso la prima implementazione concreta del Plankalkül, realizzata in java.
Plankalkül Java Applet
Il linguaggio di Zuse conteneva già i concetti di modularità e scope (locale o globale) delle variabili, anche se quest’ultime non erano “tipizzate”, ovvero non era possibile distinguere il tipo di numero rappresentato (reale o intero). Erano inoltre presenti: le operazioni di assegnazione, gli stati condizionali (if-then-else), i loop, la gestione delle operazioni logiche, la gestione delle eccezioni sulle operazioni aritmetiche, l’abolizione del GOTO. Il Plankalkül venne completato, a livello concettuale, tra il 1943 ed il 1945, e reso pubblico solo nel 1972.
Nel frattempo lo scoppio della seconda guerra mondiale porta all’arruolamento obbligatorio di Zuse e solo l’influenza di Pannke gli permette di ottenere alcuni privilegi che gli consentono di continuare i suoi studi, anche se l’ingegnere non riesce inizialmente ad ottenere il congedo. Viene presto trasferito a Berlino, presso una divisione che faceva capo all’industria aereonautica per cui aveva lavorato in precedenza, dove ha l’occasione di applicare le proprie teorie, e, soprattutto, dove è libero, nel fine settimana, di dedicarsi allo sviluppo delle evoluzioni del Z1.
Nel 1940 nasce così lo Z2, un nuovo prototipo sperimentale che riesce a catturare l’interesse dell’Istituto Tedesco per la Ricerca Aereonautica (DVL) guidato da Teichmann. Il nuovo calcolatore dimezza praticamente i tempi del suo predecessore ed introduce la possibilità di effettuare la radice quadrata. I risultati vengono visualizzati da una serie di lampadine in grado di rappresentare anche la virgola mobile.
Rete polifunzionale per eseguire la somma e il prodotto di due bit realizzata mediante due relè, simile (concettualmente) a quella utilizzata per lo Z2.
L’istituto tedesco decide di finanziare il lavoro di Zuse e di utilizzare per scopi militari il nuovo Z3, che sarà poi distrutto durante il blitz areo del 1944. L’ingegnere tedesco aveva appena terminato la sua nuova “creatura” che la guerra comincia ad assumere risvolti negativi per la Germania, stravolgendogli di nuovo la vita.
Viene prima riarruolato e poi ricongedato, ma il problema maggiore è la mancanza di fondi per continuare le proprie attività di ricerca, nonostante abbia fondato la Zuse Apparatebau con l’intento di commercializzare i propri sistemi.
La ricostruzione dello Z3 in mostra al Deutsche Museum di Monaco
Il lavoro di Zuse va comunque avanti e nel 1949 riesce a completare lo Z4, con una memoria di 1024 parole ed in grado di elaborare istruzioni condizionali. La sua realizzazione avvenne con pezzi dei modelli precedenti e materiale fortuito recuperato per strada durante i bombardamenti.
Appena terminato, però, lo Z4 dovette essere smontato per una evacuazione di emergenza che lo portò, insieme al creatore e a gran parte del team di lavoro, pima a Göttingen (sempre in Germania) e poi in Baviera. Qui il lavoro dell’ingegnere tedesco continua attraverso la creazione della ZUSE KG e l’inizio della commercializzazione dello Z4, unico computer digitale in Europa in quel periodo ed il primo computer commerciale al mondo.
ZUSE KG logo
La società di Zuse sviluppa altri computer, tra i quali si segnalano lo Z11, acquistato da aziende e università, e lo Z22, uno dei primi a utilizzare le valvole termoioniche (tubi a vuoto). Nel 1965 l’ingegnere viene insignito del “Werner von Siemens Award”, il più importante riconoscimento tecnologico tedesco, anche se la cosa ha il sapore di una sorta di ipoteca da parte di Siemens che acquista la Zuse KG nel 1967 per problemi economici, dopo che quest’ultima ha realizzato ben 251 computer.
Dopo la vendita, Zuse si dedica alla pittura, suo grande amore, e a scrivere la propria autobiografia, non senza lasciare al mondo un’ultima invenzione: la “Helix Tower”, ovvero una struttura ad altezza variabile per generare energia “catturando” il vento.
Zuse vicino al prototipo (in miniatura) dell'Helix-Tower
L’ingegnere muore nel dicembre del 1995 all’età di 85 anni ma le sue memorie rivivono nel sito realizzato dalfiglio Hörst, docente di informatica alla Technische Universität Berlin, interamente dedicato alla sua vita ed al suo lavoro.
Nel 1998 il Convegno Internazionale di Informatica ha ufficialmente riconosciuto a Konrad Zuse il merito di aver realizzato il primo computer programmabile "funzionante" della storia (“Z1”).
Commemorazione della Guinea-Bissau (Africa) del 2009 (Zuse in basso a sinistra)
Il francobollo tedesco per i 100 anni dalla nascita di Zuse