Home | Search | Help  
Home Page Università di Genova

Seminar Details


Date 3-11-2010
Time 14:30
Room/Location 506
Title Le origini dei linguaggi di programmazione: Charles Babbage, Ada Byron e Konrad Zuse
Speaker Lorenzo Repetto
Affiliation ITIS "Italo Calvino" Genova
Link http://informatica.aulaweb.unige.it/course/view.php?id=244
Abstract Nel 1834 il matematico inglese Charles Babbage (1791-1871) concepì il progetto di una macchina analitica: oggi diremmo un elaboratore meccanico programmabile per ogni genere di calcolo. Due furono le tecnologie che gli permisero di approdare all’idea di memorizzare dati numerici e manipolarli secondo una sequenza possibilmente ripetitiva di operazioni e scelte che, una volta specificate, la macchina potesse compiere in modo del tutto automatico: i cilindri dotati di pioli, già impiegati da Erone di Alessandria e successivamente perfezionati dagli scienziati islamici del Medioevo, e le schede di cartone perforate, all’epoca usate per pianificare i movimenti dei telai Jacquard al fine di ottenere la ripetizione di certi disegni sul tessuto. Nel 1843 Augusta Ada Byron (1815-1852) pubblicò le sue celebri Note (aggiunte alla traduzione delle memorie di Menabrea), nelle quali intuì la portata innovativa di quel progetto e mise in luce le potenzialità della macchina analitica – peraltro mai costruita – esemplificandone alcune applicazioni che culminavano nel calcolo dei numeri di Bernoulli. Vedremo per quali aspetti il suo diagramma può essere giudicato un “programma” e dove invece esso difetta di un’adeguata formalizzazione. Comunque sia, trascorse ancora un secolo esatto prima che si giungesse alla specifica di un vero linguaggio di programmazione… Tra il 1935 e il 1941 l’ingegnere civile tedesco Konrad Zuse (1910-1995) progettò e costruì i suoi primi calcolatori. In particolare, quello a relé elettromagnetici conosciuto come 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 von Neumann sull’architettura di un computer – era dotato di unità aritmetica e di controllo separate dalla memoria (che aveva indirizzi numerici). Inoltre, in linea di principio, può essere considerato – e vedremo per quale ragione – la prima macchina Turing-completa [Rojas, 1998]. Tra il 1942 e il 1945, mentre realizzava il successivo modello Z4, Zuse si dedicò pure allo sviluppo del Plankalkül che, per tante sue caratteristiche, può ritenersi 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 [Zuse, 1949] e nel 1959 [Zuse, 1959]; il corpus, completato tra il 1945 e il 1946, fu divulgato soltanto nel 1972 [Zuse, 1972]. In questo stesso anno apparve un articolo sulle Communications of the ACM [Bauer,1972], 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 [Rojas, 2000]. Vedremo i costrutti essenziali del Plankalkül, servendoci pure di alcuni esempi e della loro traduzione in C++ o in ML.
Back to Seminars