di  -  venerdì 18 febbraio 2011

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 Babbage 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 (Instituion of English Electrical Engnieers) 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 revizione dello Z1 (in ottica relè), si dedica alla realizzazione (1939/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 lo 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.

Il nostro viaggio allo scoperta del “papà” del computer elettronico continua la prossima settimana con il secondo ed ultimo post.


15 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Fabio Bonomo
     scrive: 

    Da programmatore mi scende quasi una lacrimuccia… :D
    Bella storia comunque, ottimo lavoro di ricerca Felice! E’ sempre molto bello vedere come senza sforzi pionieristici al di fuori di ogni logica, molte delle conquiste attuali non ci sarebbero…

  • # 2
    Andrea Del Bene
     scrive: 

    E’ incredibile come Zuse, da solo e completamente isolato dalla comunità scientifica anglosassone sia riuscito a realizzare qualcosa che rissume le teorie di due geni come von Neumann e Turing.
    Mi spiace che l’essere “dalla parte dei cattivi” non gli abbia fatto raggiungere l’onore e la fama meritati.
    Casualmente nel primo dopoguerra i suoi brevetti sulle macchine da calcolo furono comprati da una certa IBM :-)

  • # 3
    Marco
     scrive: 

    “Lo step successivo fu quello del passaggio dalla memoria meccanica a quella composta da una struttura a relè […] Così il sistema originale fu letteralmente “invaso” dai tubi a vuoto”

    Relè != tubi a vuoto.

    A parte ciò, da quello che ricordo (ma devo verificare: la mia fonte, che non ho sottomano, è http://mitpress.mit.edu/catalog/item/default.asp?tid=3731&ttype=2, dove un intero capitolo è dedicato ai computer di Zuse) anche lo Z4, installato presso l’ETH a Zurigo, usava relè di tipo telefonico per la parte computazionale e un bizzarro sistema a “barrette metalliche” (non riesco a descriverlo meglio) per la memoria centrale.
    Inoltre, sempre a ricordi, la macchina, nelle intenzioni di Zuse, non implementava istruzioni di salto condizionato (aggiunte dallo stesso Zuse, trasferitosi a Zurigo con la macchina, su pressioni del personale dell’ETH) ed è solo accidentalmente (o, meglio, preterintenzionalmente) Turing-completa (dimostrazione fatta molti decenni più tardi).

    Marco

  • # 4
    Felice Pescatore (Autore del post)
     scrive: 

    @Marco
    hai perfettamente ragione!!! Purtroppo ho perso un pezzo per strada:
    “Lo step successivo fu quello del passaggio dalla memoria meccanica a quella composta da una struttura a relè […] ”
    Schreyer pose però un problema: l’elevato costo dei relè e la scarsità di fondi a disposizione, consigliando all’amico l’utilizzo delle più economiche anche se meno affidabili valvole termoioniche.
    “Così il sistema originale fu letteralmente “invaso” dai tubi a vuoto”

    Per il resto… ottima precisazione

  • # 5
    Marco
     scrive: 

    @Felice
    Figurati, ottimo articolo il tuo invero.
    Ho anche trovato la fonte su google books, per gli interessati:
    http://books.google.it/books?id=nDWPW9uwZPAC&pg=PA237#v=onepage&q&f=false

  • # 6
    Z80Fan
     scrive: 

    Mmh anche io non capisco cosa c’entrino i tubi a vuoto. Lo Z3 era sicuramente elettromeccanico. Secondo Wikipedia il primo computer Zuse a funzionare con tubi a vuoto è stato lo Z22, dopo una serie di 6 computer a relè.

    A parte questo, complimenti per l’articolo, è bene che vengano ricordati questi personaggi importanti, anche perchè di solito si tralasciano per fare spazio ai soliti americani…

  • # 7
    Giovanni
     scrive: 

    Ciao felice e complimenti anche per questo articolo… un bel salto all’indietro!
    Vorrei “spezzare una lancia” a tuo favore, infatti tu, giustamente, NON hai detto che la Z3 fosse a valvole, ma bensì che le utilizzarono versioni successive a quelle a relé… in effetti anche la successiva Z4 (sistema decimale) sarà ancora a relé ed è stata realizzata sul finire della guerra (ed entrata in funzione solo nel 1950) proprio quando era già iniziato l’uso delle valvole da parte degli americani (1946) e degli inglesi.

    Comunque ritengo deprecabile soffermarsi su questi dettagli perché il contributo innovativo di questi geniali scienziati ha una portata che travalica ogni genere di confronto competitivo. Anche il riferimento, fatto in un post, a IBM quale fosse “il male” mi lascia piuttosto perplesso; in questo caso si parla di fatti storici e di scienza. In ogni caso Zuse costituì la sua azienda nel primissimo dopoguerra e già nel 1954 questa venne assorbita addirittura da Siemens! Diciamo che non esiste solo IBM come colosso e soprattutto che all’inizio delle “vicende del computer” c’erano ben altri nomi che facevano ricerca e innovazione, non solo americani e di certo non tanto IBM (che si occupava soprattutto di macchine elettromeccaniche per la contabilità ed è entrata solo in un secondo tempo in questo mercato).

    Saluti

    per un buon Retrocomputer…. http://www.jurassicnews.com !!!

  • # 8
    Giovanni
     scrive: 

    mmmhhh… in effetti rileggendo, temo di aver sbagliato a… spezzare quella lancia. ops!

    Rinnovo i complimenti, comunque!

  • # 9
    Felice Pescatore (Autore del post)
     scrive: 

    @Tutti
    Come sempre grazie a questo portale è possibile approfondire argomenti ed accorgersi dei proprio “strafalcioni”.
    In seguito al dibattito sui “tubi a vuoto :-)” mi sono accorto di aver male interpretato le varie fonti a cui mi sono affidato.

    In buona sostanza la cosa è questa:
    Quando Zuse si mette al lavoro sull’embrione di quello che sarà lo Z2, chiede al collega ed amico Helmut Schreyer di aiutarlo nella creazione di una nuova unità aritmetica basata sui relè. Shreyer che era particolarmente attratto dalla teoria elettromagnetica, 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.

    Grazie a tutti per la segnalazione.

  • # 10
    Sherpa
     scrive: 

    IEEE = Institute of Electrical and Electronics Engineer

  • # 11
    Sherpa
     scrive: 

    sorry,
    IEEE = Institute of Electrical and Electronics Engineers

  • # 12
    Roberto
     scrive: 

    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.

    Ma le V1 nel 1936?!?! Mi sa che il motivo e’ un altro…

    http://en.wikipedia.org/wiki/V-1_(flying_bomb)

  • # 13
    Felice Pescatore (Autore del post)
     scrive: 

    @Roberto
    dal link che tu stesso hai inserito si legge:

    In the autumn of 1936, while employed by the Argus engine company, Fritz Gosslau began work on the further development of remote controlled aircraft; Argus had already developed a remote-controlled surveillance aircraft, the AS 292 (military designation FZG 43).

    Ovviamente erano in realizzazione.

  • # 14
    lakar
     scrive: 

    Anch’io ho qualche dubbio che il nome V1 fu cambiato per assonanza con i terribili missili nazisti. Infatti il vero nome della V1 era Fieseler Fi 103 mentre V1 stava per “Vergeltungswaffe 1″ cioè “arma della rappresaglia n°1″ e venne ribattezzato in questo modo dalla propaganda nazista. Infatti esistevano anche le V2 e V3 che erano ben diverse dalla V1.
    Le V1 e V2 iniziarono le loro operazioni solo nel 1944 e mi sembra strano che già nel 1935-1936 usassero il nome Vergeltungswaffe tanto più che quei progetti erano segretissimi.

  • # 15
    Andrea
     scrive: 

    La questione della V1, nonché quella della segretezza della realizzazione dovute ad un improbabile stop voluto da Hitler sono evidentemente frutto della fantasia dell’autore (o di qualcuno da cui lo stesso ha preso spunto). Sulle V1 è già stato scritto da chi mi ha preceduto… inutile commentare oltre. per quanto riguarda Hitler mi fa davvero pena il tentativo di far passare Zuse per un “oppositore” ante litteram nel tentativo (non necessario) di ripulirne l’immagine. Personalmentee non ritengo importante ai fini della notizia che lui fosse o meno nazista. Probabilmente lo era, come molti tedeschi della sua epoca, o forse no. Nulla toglie alla rilevanza storica del personaggio e alla genialità delle sue intuizioni.

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.