Home | Search | Help  
Home Page Università di Genova

Seminar Details


Date 17-11-2010
Time 14:30
Room/Location Sala Conferenze, 3 piano
Title Il Plankalkül e i primi calcolatori di Konrad Zuse
Speaker Lorenzo Repetto
Affiliation ITIS "Italo Calvino"
Link http://informatica.aulaweb.unige.it/course/view.php?id=244
Abstract In questa seconda parte del discorso iniziato due settimane fa, riprenderemo in esame le principali caratteristiche del Plankalkül, lo schema formale per la pianificazione di qualsiasi procedimento di computazione (numerica o simbolica), ideato verso la metà degli anni ’40 dall’ingegnere (civile) tedesco Konrad Zuse (1910-1995). Il Plankalkül può essere considerato un moderno linguaggio di programmazione di alto livello (imperativo, ma con “parallelismi”): in esso si fondono diverse idee estremamente importanti e interessanti (programmi intesi come funzioni richiamabili, con parametri per valore e variabili locali; tipi strutturati in record, array e liste; cicli e guarded command, con espressioni riprese dalla logica dei predicati e dalle teorie della calcolabilità e degli insiemi), ma troppo avanzate sia per l’hardware sia per le possibilità di sviluppo del software in quel tempo. Fu tuttavia privo di quello “zucchero sintattico” necessario per un’agevole scrittura e lettura dei programmi, ed ebbe così una scarsa influenza sui linguaggi successivi (i cui progettisti partirono dal realizzabile, piuttosto che dallo scrivibile). Ciò fu anche dovuto al fatto che due soli brevi estratti dai ponderosi manoscritti di Zuse furono pubblicati, in tedesco e per giunta con parecchio ritardo, alla fine del 1948 e nel 1959; il corpus, completato tra il 1945 e il 1946, fu divulgato soltanto nel 1972, sempre in lingua tedesca. In questo stesso anno apparve un articolo sulle Communications of the ACM, basato sulle precedenti pubblicazioni di Zuse, che portò finalmente il Plankalkül all’attenzione dei lettori di lingua inglese. Un’implementazione di un suo sottoinsieme è stata messa a punto soltanto all’inizio del 2000. Per illustrare i costrutti peculiari del Plankalkül, ci serviremo pure di alcuni esempi significativi di funzione già proposti da Zuse (ordinamento di un array con insertion-sort, controllo della sintassi di una proposizione logica, calcolo dell’out-degree di un nodo in un grafo diretto, decisione circa la possibilità di muovere legalmente il Re bianco) e della loro traduzione in C++ o in ML. Assai più che per il Plankalkül, Zuse è tuttavia conosciuto per i suoi calcolatori, che iniziò a progettare e costruire a partire dal 1935-36. In particolare, quello a relé elettromagnetici noto col nome “Z3” – funzionante nel 1941 e andato distrutto in un bombardamento su Berlino dopo neppur tre anni – operava su rappresentazioni binarie in floating point (con hidden bit), leggeva le istruzioni da una pellicola perforata (che avrebbe potuto anche essere chiusa a formare un anello) e – come già concepito da Babbage, e con anni di anticipo rispetto alle raccomandazioni di Johann von Neumann sull’architettura di un computer – era dotato di unità aritmetica e di controllo separate dalla memoria (che aveva indirizzi numerici). Per questo, in Germania, Zuse è reputato l’inventore del computer, e certamente uno degli inventori lo è stato; tanto più che, almeno in linea di principio, lo Z3 può essere considerato la prima macchina Turing-completa: vedremo infatti come si può simulare una qualsiasi Macchina di Turing con un unico loop di sole operazioni aritmetiche, ammesso di disporre di un’operazione che può causare l’arresto (ad esempio, 0/0 nello Z3) e di un sufficiente numero di parole di memoria indirizzabili. Se ce ne sarà il tempo, vedremo anche l’algoritmo – un vero gioiellino! – usato nello Z3 per calcolare la radice quadrata.
Back to Seminars