SlideShare a Scribd company logo
1 of 66
Download to read offline
S. Giglio
Origine dei metalinguaggi sintattici
per l’informatica: Backus Naur Form
AIN EDIZIONI OPEN ACCESS 2023
Artigianato Informatico Napoletano Edizioni
Giugno 2023
Questa pubblicazione è Copyleft ed è basata sul
principio di Open Access
E’ consentita la piena fruizione, copia, modifica
a patto che sia senza scopi di lucro e per pure
finalità di studio e divulgazione
S. Giglio
Origine dei metalinguaggi sintattici
per l’informatica:
Backus Naur Form
Introduzione
La vicenda della notazione BNF è strettamente collegata alla fase preliminare e iniziale
di sviluppo del linguaggio ALGOL in essa sono intrecciate le storie di diversi personaggi
ed organizzazioni legate all’informatica degli anni ’50 e ’60. Si tratta di persone ed isti-
tuzioni che vanno guardate con rispetto e che devono essere considerate a tutti gli effet-
ti pioniere dell’informatica perché hanno gettato le basi della computer science con-
temporanea.
La storia dell’ALGOrithmic Language affonda le sue radici sia nell’Europa centrale che
negli USA. Due continenti ciascuno con le sue organizzazioni di studio e ricerca sull’al-
lora nascente informatica che, partendo da motivazioni diverse, ad un certo punto deci-
dono di unire le forze e dare inizio allo sviluppo di un progetto internazionale. Un’idea
scientifica stupenda, considerando che da pochissimo tempo era finita la seconda guer-
ra mondiale e che alcuni paesi implicati nel progetto erano stati nemici.
Alla fine degli anni '50, negli Stati Uniti e in Europa, la rapida proliferazione dei com-
puter, unitamente ad un notevole potenziamento dell’elettronica, espansero la necessi-
tà di scambiare esperienze e tecniche tra i vari centri di calcolo universitari, militari e
istituzionali. Questa esigenza si avvertì forte su entrambe le sponde dell'Atlantico e, sul
finire degli anni ’50, fece sì che si tenessero diversi appuntamenti preliminari tra i rap-
presentanti delle organizzazioni informatiche sia americane che europee.
L’obiettivo era quello di determinare un "Linguaggio di Programmazione Universale",
da utilizzare su tutti i tipi di elaboratori elettronici e per tutti gli scopi. Il risultato di
questi incontri è stato la prima definizione del Linguaggio Algebrico Internazionale,
successivamente ribattezzato ALGOL.
Lo sviluppo di ALGOL, come vedremo più innanzi, non fu lineare anzi, di fatto è stato
basato su diversi malintesi e su di un dilemma tecnico iniziale che ha generato una si-
tuazione di confusione babelica con altri linguaggi a causa dell'incapacità delle diverse
comunità informatiche di concordare un unico linguaggio di programmazione univer-
sale.
Questa percezione dell’ALGOL, questa sua immagine, per così dire, di “evoluzione cao-
tica” rende ancora oggi alquanto difficile elaborare una sintesi storiografica sufficiente-
mente chiara, anche per la mancanza di quella prospettiva così necessaria per analizza-
re i fatti costituenti un determinato fenomeno storico. Del resto dalla nascita dell’AL-
GOL non è ancora passato un secolo.
Sommario
Capitolo 1
§ 1.1 - USA anni ‘50, il background storico ……………………………………………………………………………………………. 1
§ 1.2 - SHARE ed il progetto UNCOL ………………………………………………………………………………………………… 3
§ 1.3 - Il MIT realizza il super computer Whirlwind ……………………………………………………………………………… 4
§ 1.4 - Il Lab. di Charles W. Adams ………………………………………………………………………………………………………. 4
§ 1.5 - Association for Computing Machinery ACM ……………………………………………………………………………….. 5
§ 1.6 - I rapporti tra ACM e le associazioni di utenti negli anni ‘50 …………………………………………………………. 6
§ 1.7 - La conferenza di Los Angeles del maggio 1957 …………………………………………………………………………….. 6
§ 1.8 - Europa: il GAMM lo ZDM …………………………………………………………………………………………………………. 8
§ 1.9 - Il gruppo di studio FAP …………………………………………………………………………………………………………….. 9
§ 1.10 - Lo scenario informatico in Europa negli anni ‘50 ……………………………………………………………………… 10
§ 1.11 - I primi contatti tra USA ed Europa per un Linguaggio Algebrico Internazionale ………………………….. 12
§ 1.12 - La lettera del 19 ottobre 1957 dello ZMD all’ACM ……………………………………………………………………….. 13
§ 1.13 - Come si organizzò l’ACM dopo la lettera dello ZMD ……………………………………………………………………. 14
§ 1.14 - Le reazioni di SHARE alla lettera dello ZMD ……………………………………………………………………………… 14
§ 1.15 - Il primo incontro tra ACM e GAMM a Zurigo …………………………………………………………………………….. 15
§ 1.16 - Da IAL ad ALGOL: i motivi di una scelta ………………………………………………………………………………… 16
§ 1.17 - Incontri successivi a Zurigo e il crescente interesse per il fenomeno ALGOL …………………………………. 17
§ 1.18 - Traduzione dell’introduzione de: “Report on the Algorithmic Language ALGOL 60” ……………………. 17
Capitolo 2
§ 2.1 - Le iniziative dell’UNESCO per l’informatica ………………………………………………………………………………... 19
§ 2.2 - La nascita della BNF …………….………………………………………………………………………………………………… 19
§ 2.3 - Avvertenze sulla traduzione de: “The syntax and semantics of the proposed International
Algebraic Language” di John Backus ……………………………………………………………………………………
20
Traduzione de: “The syntax and semantics of the proposed International
Algebraic Language” di John Backus………………………………………………………………………………………
21
§ 2.4 - La lettera di Donald Knuth per ribattezzare la BNF ……………………………………………………………………... 33
appendice
Nota biografica di John W. Backus ……………………………………………………………………………………………………….. 35
Nota biografica di Peter Naur ………………………………………………………………………………………………………………. 36
La sede UNESCO di Parigi, descrizione del progetto………………………………………………………………..…………….. 37
Riferimenti ………………………………………………………………………………………………………………………………………… 39
ELLIOTT 803 il primo computer per ALGOL ……………………………………………………………………………………….. 40
ELLIOTT, la prima computer factory inglese ………………………………………………………………………………………... 42
Composizione e principio di funzionamento di un Elliott 803 ………………………………………………………………... 44
Collezione di modelli 3D ELLIOTT 803 ed accessori ……………………………………………………………………………... 46
Altri lavori di traduzione scaricabili ……………………………………………………………………………………………………... 51
CAPITOLO I
Background storico e
motivazioni per lo sviluppo di un
nuovo linguaggio di
programmazione universale
S. Giglio
§ 1.1 - USA anni ‘50, il background storico
A
ll’inizio degli anni ‘50 il numero di compu-
ter negli USA cominciava ad aumentare,
anche come conseguenza della pressante
richiesta, da parte del governo federale, di
centri di calcolo sempre più potenti, necessari per
servire il crescente impegno militare e di intelligence
legato alla guerra fredda.
I protagonisti principali di quel momento storico,
sulla scena informatica statunitense, erano le azien-
de produttrici dei grandi sistemi di calcolo automati-
co, le università, i militari, il governo federale e alcu-
ni grandi utenti commerciali.
Lo sviluppo di questi nuovi computer, tutti diversi
fra loro, comporterà però anche la modifica/
creazione di altrettanti linguaggi di programmazione
necessari al loro utilizzo, cosa questa abbastanza de-
leteria, essendo questi non universali e con campi
d’impiego molto specifici.
Tutti questi aspetti, alla lunga, finiranno con il:
• ledere la flessibilità d’impiego delle macchine;
• far levitare i costi della programmazione;
• far aumentare fortemente la dipendenza
dell’utenza con i produttori.
Questa situazione, poi avrà anche una grave riper-
cussione sulla perdita di posti di lavoro e sulla di-
sponibilità stessa delle macchine da calcolo.
In questo sviluppo di fatti, i primi tentativi di au-
tomatizzare la programmazione negli Stati Uniti
risalgono proprio a quel periodo in cui l’utenza,
sulla base di una stringente logica economica, co-
minciava giustamente a pretendere l’efficienta-
mento dei computer e il miglioramento dell'intero
processo di programmazione.
Tutto ciò accadeva a metà degli anni ’50, quando
aziende e data center sponsorizzati dallo stato
cominciano a costituirsi come organizzazioni di
utenti per tutelare i propri diritti, ridurre la dipen-
denza dai produttori e favorire la cooperazione tra
utenze aventi lo stesso tipo di computer.2
Nascono così:
• DUO, associazione d’utenti dei computer Da-
tatron della ElectroData Corporation.
1946
Inizia il progetto Whirlwind al MIT
1950
ERA/Remington-RandUNIVAC 1101
Durante la seconda guerra mondiale, la Mari-
na degli Stati Uniti si rivolge al MIT per realiz-
zare un simulatore di volo destinato all’adde-
stramento degli equipaggi dei bombardieri.
Uno dei primi computer commerciali, il primo
cliente dell'azienda fu la US Navy. Il 1101, fu
progettato da ERA e costruito da Remington-
Rand, effettuava calcolo ad alta velocità e
memorizzava 1 milione di bit sulla sua memo-
ria a tamburo magnetico.
2. Cfr.: ; Lehmann, N. Joachim , “ALGOL im Ostblock und der Weg zu Systemen von
Programmiersprachen”, in Hans Dieter Hellige (ed), Geschichten der Informa-
tik: Visionen, Paradigmen, Leitmotive (Springer: 2004), 255-273, p. 257. Artico-
lo consultabile al seguente link di Springer link
3. Cfr.: Akera Atsushi , “Calculating a natural world. Scientists, engineers, and
computers during the rise of the US cold war research” (MIT: 2007), pagg. 251-
255. Consultabile al seguente link del MIT Press direct Cfr.: “Fletcher Jones to
SHARE members”, 9 agosto 1955, pag. 1. SHARE Inc. Records (CBI 21), box 1,
folder 1.
4. Cfr.: “Fletcher Jones to SHARE members”, 9 agosto 1955, pag. 1. SHARE Inc.
Records (CBI 21), box 1, folder 1.
1
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
• SHARE, fondata nell'agosto del 1955 da diri-
genti della difesa e appaltatori dei centri infor-
matici (come, ad esempio, la Lockheed o i
think tank della guerra fredda quali la Rand
Corporation.), di istituzioni di sicurezza na-
zionale e di società che utilizzavano tutti i com-
puter IBM 701. SHARE è il più noto tra questi
gruppi di utenti nonché un influente protagoni-
sta nel mondo informatico americano che, all’e-
poca, incarnava la caratteristica alleanza di quel
periodo tra l'industria, il mondo accademico e
l'esercito.3 La sua ascesa è stata determinata dal
ruolo strategico che ha avuto nella promozione
dello scambio di informazioni tra centri di cal-
colo, grazie al sostegno attivo del colosso IBM.4
I centri di calcolo SHARE avevano rapidamente
creato un ampio catalogo di programmi e con-
cordato una serie di standard5 forniti dal De-
partment Publication and Distribution di
IBM6. Come affermerà il capo del DPD Franz
Ross, che insieme, “IBM e SHARE riuscirono
a creare un servizio clienti completo che forni-
va ai centri di calcolo una vasta gamma di
programmi pronti per essere implementati”.7
• USE, associazione di utenti dei computer UNI-
VAC prodotti dalla Remington Rand.
Le attività principali di queste associazioni erano:
• lo scambio di informazioni tecniche sui lin-
guaggi di programmazione, sistemi operativi,
sistemi di database e di esperienze utente;
• lo scambio e la diffusione di programmi per
computer;
• la standardizzazione delle tecniche di pro-
grammazione;
• l’abbattimento dei costi della programmazio-
ne.8
Sul finire del 1950, ad aggravare ulteriormente la
situazione fu la scelta infelice di alcuni centri di
calcolo su larga scala di far funzionare simultanea-
mente macchine diverse fra loro, fatto questo che
determinò ben presto seri problemi di comunica-
zione all'interno dell'aviazione della California me-
ridionale e finì col minare la collaborazione tra le
svariate imprese cresciute con i contratti d’appalto
militari.9
Le problematiche appena citate ingenerarono tra
gli utenti informatici un certo malcontento che
diede luogo ad un animato dibattito quasi del tutto
incentrato sul dilemma tra l’adottare un nuovo
1951
Ferranti Mark I
Ferranti Mark I è il primo computer generico
disponibile in commercio, un perfezionamento
dei computer sperimentali Manchester "Baby"
e Manchester Mark 1, sempre all'Università di
Manchester. Il costruttore inglese vende il suo
primo computer Mark I all'Università di Man-
chester. Dopo la perdita di fondi il secondo e
unico altro Mark I è stato venduto, con una
grave perdita, all'Università di Toronto, dove fu
ribattezzato FERUT.
1952
Grace Hopper completa A-0 system
La matematica Grace Hopper completa A-0,
un programma ad alto livello che consentiva
all’utente di usare termini inglesi, invece dei
numeri per dare istruzioni al compu-
ter. Possedeva numerose caratteristiche di un
compilatore moderno scritto per il computer
UNIVAC I, il primo sistema informatico azien-
dale commerciale negli Stati Uniti.
5. Akera (2007), op. cit., p. 272.
6. Cfr.: “A proposal relative to cataloguing 704 programs distributed by SHARE”,
24 febbraio 1956. SHARE Inc. Records (CBI 21), box 1, folder 2.
7. Cfr.: “Verbatim Transcript of the 9th Meeting, October 1 1957”, pag.36.SHARE
Inc. Records(CBI21), box3,folder13.
8. Per gli inizi di SHARE cfr.: Akera Atsushi, op. cit., capitolo 7.
9. Cfr.: Ceruzzi, Paul E. “A history of modern computing”. (MIT: 2003), Cap. II
2
S. Giglio
3
linguaggio di programmazione universale, che gi-
rasse su tutte le macchine allora esistenti miglio-
rando così anche la trasportabilità dei programmi,
o il preservare la diversità dei linguaggi di pro-
grammazione e le costose macchine ad essi asso-
ciate.
§ 1.2 - SHARE ed il progetto UNCOL
S
HARE, rispetto a tutta questa situazione,
decise di istituire, nel 1958, un proprio
comitato ad hoc per lo studio di un Lin-
guaggio Universale per computer formato
da sei persone.10 Risulta emblematico un docu-
mento prodotto dal comitato di studio ad hoc” che
ho deciso di tradurre e riportare integralmente in
questa ricerca per far comprendere meglio le pro-
blematiche dell’utenza dell’epoca che, per molti
aspetti, non sono poi così diverse da quelle dei no-
stri giorni.
The problem of programming communica-
tion with changing machines: a proposed
solution
• Autori:
J. Strong, J. Wegstein, A. Tritter, J. Olsztyn, O.
Mock, T. Steel
• Pubblicato su:
Communications of the ACM, Volume 1, Issue
8, 01 Aug. 1958, pp 12–18
• Consultabile e scaricabile gratuitamente
sul sito ACM Digital Library al link:
https://dl.acm.org/
doi/10.1145/368892.368915#
• Lettura online documento tradotto su
Calaméo:
https://www.calameo.com/
read/0060866642dd3d3b38abf
• Lettura e download documento tradotto
in formato PDF da Google drive dal seguente
link
• Lettura e download documento tradotto
in formato docx da Google drive dal seguente
link
La traduzione comprende anche l’Appendice C, nel
documento tradotto sono stati riportati tutti i dise-
gni del documento originale. Questo documento
mostra chiaramente quale fosse l’orientamento di
SHARE in quegli anni che, del resto, era quello an-
che di altre associazioni di utenti. Al di la di questo
negli USA, in quel periodo, prendevano vita altri
studi anche di più ampio respiro.
1951
Completato il progetto Whirlwind
Una foto emblematica: 1951, Whirlwind appe-
na completato, sulla destra, Joe Thompson,
18enne neo diplomato e addestrato come uno
dei primi due operatori di computer.
1952
Whirlwind e il sistema di difesa SAGE
Il Whirlwind fu completato nel 1951 e i costi di
realizzazione furono elevatissimi. La US Navy
perse l’interesse per il progetto che però resta-
va ricco di preziose potenzialità. Si decise così
di integrare Whirlwind nell’ambito di un nuovo
progetto dell’aviazione militare USA: il SAGE
(da Semi Automatic Ground Environment);
l’idea era quella di far gestire a Whirlwind i dati
provenienti da diversi siti radar, attraverso ap-
parecchiature di rete associate per fargli poi
produrre un'immagine unificata dello spazio
aereo di una vasta area, su un grande scher-
mo di una control room (foto in alto a destra) in
modo da poter seguire eventuali intrusioni ne-
miche nei cieli USA. Whirlwind fece da prototi-
po fino a che la IBM, ottenuto l'appaltato, svi-
luppò i computer mainframe AN/FSQ-7, che
avevano un'architettura basata proprio su
Whirlwind. SAGE ha diretto e controllato la
risposta del NORAD contro un possibile attac-
co aereo sovietico, operando in questo ruolo
dalla fine degli anni '50 agli anni '80. Nella foto
sopra un tipico fortino SAGE.
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
§ 1.3 - Il MIT realizza il super computer
Whirlwind
C
on finalità strettamente legate al secondo
conflitto mondiale vedeva la luce il proget-
to del computer Whirlwind. Durante la se-
conda guerra mondiale, la marina militare
americana chiese al MIT di realizzare un simulatore
di volo con cui far addestrare i propri piloti di bom-
bardieri come parte del progetto ASCA (Airplane
Stability and Control Analyzer).
Il team del MIT, guidato da Jay Forrester e Gordon
Brown, dopo aver costruito prima un piccolo simu-
latore analogico, che risultò impreciso e poco flessi-
bile, decise di realizzarne uno digitale, in cui le va-
riabili di volo potevano essere programmate rapida-
mente attraverso il software.
Whirlwind è stato il primo computer in grado di vi-
sualizzare testo e grafica in tempo reale, utilizzando
lo schermo CRT di un oscilloscopio di grandi dimen-
sioni. Successivamente, Whirlwind viene integrato
nel sistema di difesa SAGE (vedi riquadri a centro
pagina).
La costruzione del super computer iniziò nel 1948 e
richiese uno sforzo che impiegò 175 persone, tra cui
70 ingegneri e tecnici. Il budget annuale del proget-
to era di un milione di dollari. Il computer fu
completato il 20 aprile 1951
Questa macchina, straordinaria per l’epoca, intro-
duceva oltre il concetto del real time anche la possi-
bilità di inserire formule matematiche in modo di-
retto.
§ 1.4 - Il Lab. di Charles W. Adams
Nel contesto di questo progetto di calcolo su larga
scala, un team di programmatori, guidati dai mate-
matici Charles W. Adams e John W. Carr III, ela-
borò nuove tecniche di programmazione per miglio-
rare l’efficienza dei computer Whirlwind.11
Nelle parole di Adams, infatti, l’obiettivo finale del
team era quello di creare una procedura in cui un
problema matematico poteva “essere semplicemen-
te impostato in parole e simboli e poi risolto diret-
tamente da un computer senza ulteriore program-
mazione.”.12
Nel contesto del progetto SAGE Robert Everett
progetta un dispositivo di input, chiamato pisto-
la luminosa, per dare agli operatori un mezzo
per richiedere informazioni di identificazione su
di un aereo rilevato. Quando la pistola lumino-
sa (foto sopra) veniva puntata sul simbolo
dell'aereo sullo schermo (foto in basso), si ge-
nerava un evento in Whirlwind, che inviava
rapidamente un feedback testuale con l'identifi-
cazione, la velocità e la direzione dell'aereo.
1955
Whirlwind precursore per i dispositivi di I/O
10. Si trattava di: J. Strong, NAA; J. H. Wegstein NIST; A. L. Tritter, Lincoln
Laboratory; J. Olsztyn, General Motors; O. Mock, NAA; T. Steel, SD
Corp.
11. Per il progetto Whirlwind, cfr.: Kent C. Redmond, Thomas M. Smith,
“Project Whirlwind: the history of a pioneer computer” (Digital Press:
1980).
12. Charles W. Adams, “Small problems on large computers”, Proceedings of
the 1952 ACM national meeting, Pittsburgh, Pennsylvania (1952), pagg.:
99 – 102; John W. Carr, “Progress of the Whirlwind computer towards an
automatic programming procedure”, Proceedings of the 1952 ACM na-
tional meeting, Pittsburgh, Pennsylvania (1952), pagg.: 237-241.
4
S. Giglio
§ 1.5 - Association for Computing Machi-
nery ACM
U
n grandissimo collettore di conoscenze e
promotore di importantissime iniziative
in campo informatico negli USA, sin dalla
sua fondazione, è sicuramente l’ACM, la
Association for Computing Machinery che, nella vi-
cenda dell’ALGOL e della BNF, ha avuto un ruolo
fondamentale.
Nata il 15 settembre 1947, col nome di Eastern
Association for Computing Machinery, in una
riunione alla Columbia University di New York, co-
me conseguenza logica del crescente interesse per i
computer. La sua creazione, infatti, scaturì da diver-
si eventi, tra cui:
• un simposio del gennaio 1947 all'Università di
Harvard sulle macchine da calcolo digitale su lar-
ga scala;
• sei incontri, nel 1946-47, sulle macchine infor-
matiche digitali e analogiche condotte dal capito-
lo di New York dell'American Institute of Electri-
cal Engineers (AIEE);
• sei incontri, nel marzo e aprile 1947, sulle mac-
chine informatiche elettroniche condotte dal Di-
partimento di Ingegneria Elettrica del Massachu-
setts Institute of Technology.
Nel gennaio 1948, la parola "orientale" fu elimina-
ta dal nome dell'Associazione, mentre nel settem-
bre 1949, fu creato uno statuto con l'approvazione
dei membri.
Un brano della convocazione originale per la riunio-
ne fondativa dell'organizzazione, del 15 settembre
1947, così recitava:
"Lo scopo di questa organizzazione sarebbe quello
di far progredire la scienza, lo sviluppo, la costru-
zione e l'applicazione del nuovo congegno per il cal-
colo, il ragionamento e la gestione delle informa-
zioni".
Il primo e i successivi statuti dell'Associazione han-
no elaborato questa dichiarazione, anche se la so-
stanza del significato resta la stessa. L'attuale costi-
tuzione, infatti, afferma:
"L'Associazione è un'organizzazione scientifica ed
educativa internazionale dedicata a far progredire
l'arte, la scienza, l'ingegneria e l'applicazione della
tecnologia dell'informazione, servendo sia gli inte-
ressi professionali che pubblici promuovendo lo
scambio aperto di informazioni e promuovendo i
più alti standard professionali ed etici".
Dal The New York Times Magazine
La storia segreta delle donne nella pro-
grammazione
La programmazione informatica una volta ave-
va un equilibrio di genere molto migliore rispet-
to a oggi. Che cosa è andato storto?
Di Clive Thompson,13 febbraio 2019
L’articolo si apre con la testimonianza di Mary
Allen Wilkes (foto sopra) che, dopo la laurea in
filosofia al Wellesley College, nel 1959, si fece
accompagnare dai suoi genitori al MIT, ove si
rivolse all'ufficio di collocamento universitario,
chiedendo se ci fosse lavoro per programmato-
ri di computer. Fu assunta subito!
Scrive Thompson che oggi potrebbe sembrare
strano che il MIT assumesse un candidato qua-
lunque senza alcuna esperienza nella pro-
grammazione di computer, ma all’epoca po-
chissimi avevano esperienza nella scrittura di
codice.
L’informatica non esisteva ancora, c'erano po-
chissimi corsi universitari e nessuna specializ-
zazione. (Stanford, ad esempio, ha creato un
dipartimento di informatica solo nel 1965.) Le
Anni
‘50/ ‘60
Donne e programmazione negli anni ‘50 e ‘60
5
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
§ 1.6 - I rapporti tra ACM e le associazioni
di utenti negli anni ‘50
L
’ACM è sempre stata in stretto contatto con
le associazioni di utenti statunitensi pur
mantenendo un suo orientamento di più
ampio respiro in ambito internazionale. A
tal proposito, per lo storico Atsushi Akera,
SHARE affonda le sue radici nell’ACM con cui con-
divide tradizioni, obiettivi e caratteristiche.13
Sostanzialmente le associazioni di utenti, formate
dalla base operativa delle macchine da calcolo, ve-
devano in ACM una guida “colta” e di livello più ele-
vato, essendo questa per lo più composta da docenti
e ricercatori universitari, da esperti informatici del-
le aziende che producevano computer nonché da
figure chiave dell’intellighenzia americana dell’epo-
ca.
Ciò che poteva rappresentare un’ideale linea di de-
marcazione tra queste due realtà erano le tematiche
affrontate in seno ad esse: da una parte, l’ACM, che
in quegli anni si dedicava prevalentemente allo stu-
dio delle tecniche di programmazione e della mate-
matica applicata; dall’altra, le associazioni impe-
gnate nella ricerca di nuovi hardware sempre più
convenienti e performanti.
Queste differenze non si sono affatto rivelate come
un ostacolo alla collaborazione, tanto che un esem-
pio significativo di cooperazione tra queste organiz-
zazioni sono stati proprio i meeting svoltisi nella
primavera del 1957.
§ 1.7 - La conferenza di Los Angeles del
maggio 1957
I
l 9 e 10 maggio 1957 si tenne a Los Ange-
les una conferenza a cui parteciparono rap-
presentanti delle organizzazioni USE, SHARE
e DUO e dell'ACM allo scopo di esaminare
modi e mezzi per facilitare lo scambio di tutti i tipi
di dati tra i diversi computer.
C’è da dire che, prima di questo meeting, le tre as-
sociazioni di utenti avevano lavorato molto per mi-
gliorare il flusso di informazioni tra le loro macchi-
ne e favorire lo scambio di programmi per la risolu-
zione di determinate problematiche comuni, anche
se questi sforzi si limitavano, ovviamente, all’ambi-
to di competenza di ciascuna di esse.
Durante il meeting il successo dello scambio di pro-
grammi tra SHARE e USE, che si era rivelato molto
prezioso per le installazioni su computer diversi, fu
presentato come un valido esempio sulla possibilità
di realizzare un «unico linguaggio informatico uni-
versale» o, almeno, di ridurre il numero dei
13. Atsushi Akera solo nel 2007 ha corretto le sue opinioni su SHARE prima
da lui descritta solo come un’estensione di IBM con un ruolo di semplice
intermediaria con i clienti del colosso informatico americano.
istituzioni che avevano bisogno di programma-
tori usavano solo test attitudinali per valutare la
capacità dei candidati di pensare in modo logi-
co. Wilkes diventò rapidamente un mago della
programmazione.
Il suo primo lavoro fu sull'IBM 704, che richie-
deva di scrivere in "linguaggio assem-
bly". Inserire il programma nell'IBM 704 era
una faccenda laboriosa, poiché non c'erano
tastiere o schermi; bisognava scrivere un pro-
gramma su carta e darlo a un dattilografo, che
lo traduceva in buchi di una scheda perforata.
Finita la trascrizione si portavano scatole con
centinaia di schede a un operatore, che le in-
seriva in pila (non a caso ancora oggi si ricor-
re a questo termine, N.d.R.) in un lettore. Il
computer eseguiva il programma e produceva
risultati che erano trascritti su di una stampante.
Quando il computer non produceva il risultato
desiderato, bisognava esaminare attentamen-
te tutte le righe di codice, cercando di dedurre
l’ errore. Era necessario rileggere mentalmente
ogni riga immaginando come la macchina l'a-
vrebbe eseguita, trasformando così la propria
mente nel computer.
Trovato l’errore si riscriveva il programma e si
provava a farlo girare nuovamente fino al per-
fetto funzionamento. Si consideri che la capa-
cità della maggior parte dei computer all'epoca
era piuttosto limitata; l'IBM 704 poteva gestire
solo circa 4.000 "parole" di codice nella sua
memoria.
Ecco perché un buon programmatore doveva
essere conciso ed elegante. All’epoca si presu-
6
S. Giglio
''linguaggi universali'' allora impiegati.14
È molto importante sottolineare che, in questo con-
testo, l'aggettivo ''universale'' indicava la capacità
di lavorare con qualsiasi macchina e per qualsiasi
scopo computazionale, ma non aveva alcuna ambi-
zione internazionale: questo tentativo era squisita-
mente americano.
Conseguenza del felice esito del meeting fu una ri-
chiesta ufficiale, formulata dalle tre associazioni al
Consiglio Nazionale ACM, di istituire un comitato
di studio per:
• creare un linguaggio di programmazione uni-
versale,
• identificare possibili aree di standardizzazio-
ne,
• sviluppare la ricerca sulla programmazione.15
Il Consiglio Nazionale ACM, con piena approva-
zione del suo presidente entrante John W. Carr III
(proprio quello del progetto Whirlwind), decise di
fondare nel giugno del ‘5716 un comitato ad hoc
composto da quindici membri in rappresentanza
dell'industria, delle università, degli utenti e del
governo federale. Si trattava di:
1. Università
 Bruce Arden (University of Michigan),
 Harry Huskey (University of California),
 J. McCarthy (MIT),
 Alan J. Perlis (Carnegie Institute of Technology),
 R. Rich (Johns Hopkins University).
2. Industria e istituzioni
 John W. Backus (IBM),
 P. H. Desilets (Remington Rand),
 D. C. Evans (Bendix Aviation Corp.),
 R. Goodman (Westinghouse),
 Saul Gorn (ACM),
 C. Katz (Remington Rand),
 A. Orden (Burroughs Corp.),
 Saul Rosen (Burroughs Corp.),
 William J. Turansky (Remington Rand),
 Joseph H. Wegstein ( of Standards)
Dal 24 gennaio 1958, sino alla fine di febbraio, il
comitato tenne tre riunioni discutendo fittamente su
come dovesse essere il nuovo linguaggio di program-
mazione, senza però ottenere alcun risultato specifi-
co.
Ciò che emerse da questi incontri fu solo una bozza
di un linguaggio orientato più alla risoluzione mate-
matica di determinati problemi che alla reale condi-
14. Cfr.: “Recapitulation of the May, 1957, Los Angeles Meetings on Infor-
mation Exchange.“. Una copia di questo atto è inclusa, come “Appendix
A”, nel seguente documento: “UNCOL Committee, Report Universal
Language Committee, UNCOL (Universal Computer Oriented Language)”.
8 aprile, 1958, SHARE Inc. Records (CBI 21), box 1, folder 3. D’ora in poi
“Report UNCOL”.
15. Ibidem pag. 3
16. Ibidem pag. 4
meva che fossero le donne a possedere quel
tipo di mentalità. Del resto avevano già svolto
un ruolo fondamentale nella preistoria dell'in-
formatica: durante la seconda guerra mondiale,
erano proprio delle donne a gestire alcune del-
le prime macchine computazionali utilizzate per
decifrare i codici al Bletchley Park in Gran Bre-
tagna.
Negli Stati Uniti, nel 1960, secondo le statisti-
che del governo, più di un programmatore su
quattro era donna. Ai Lincoln Labs del MIT ne-
gli anni '60, dove Mary lavorava, la maggior
parte di coloro che il governo classificava come
"programmatori in carriera" erano donne. Non
era ancora un lavoro di alto rango.
Nel 1961, la Wilkes fu assegnata a un nuovo
importante progetto, la creazione del LINC che,
essendo uno dei primi personal computer inte-
rattivi al mondo, sarebbe stato un dispositivo
rivoluzionario in grado di adattarsi a ogni ufficio
o laboratorio.
Il LINC essendo munito di tastiera e schermo,
poteva essere programmato più rapidamente,
senza schede perforate o scomode stampan-
ti. I suoi progettisti avevano bisogno di Wilkes
per scrivere il software che avrebbe permesso
all’utente di controllare la macchina in tempo
reale.
Per due anni e mezzo, lei e il team hanno lavo-
rato duramente sui diagrammi di flusso, riflet-
tendo su come consentire alle persone di co-
municare con la macchina. Due anni di lavoro
folle fatto di giornate lunghissime mangiando
cibo spazzatura, subendo il sessismo con la
disparità nel modo in cui uomini e donne veni-
vano pagati e promossi, anche se l’atmosfera
Anni
‘50/ ‘60
Come si programmava negli anni ‘50 e ‘60
7
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
visione di dati tra macchine diverse. Fu così che, il
18 aprile del ’58, il comitato nominò un sottocomi-
tato per formulare le specifiche tecniche necessarie
alla creazione di un nuovo linguaggio universale.
Nel frattempo anche dall’altra parte dell’Oceano, il
crescente sviluppo informatico in ambito scientifico
e tecnologico, esigeva nuovi approcci con le macchi-
ne da calcolo e attraeva irresistibilmente i migliori
computer scientists del momento. Saranno proprio
loro a dare agli Stati Uniti quella scossa vivificante e
necessaria per realizzare il primo vero linguaggio di
programmazione internazionale.
§ 1.8 - Europa: il GAMM lo ZDM
I
n Europa la Germania, ancora devastata dalle
assurdità della seconda guerra mondiale e
divisa tra i vincitori del tremendo conflitto, fu
tra i primi paesi del continente ad investire
sulla ricerca scientifica e tecnologica e che trovò in
Josef Heinhold, matematico e pioniere dell’infor-
matica, una figura emblematica di questa voglia di
riscatto.
Il 1955 fu un anno significativo per la Repubblica
Federale Tedesca dato che il 9 maggio aderì alla
NATO e nell’arco di pochi mesi presero vita alcuni
eccellenti centri di calcolo universitari nazionali.
Ma fu un evento in particolare che contribuì a rom-
pere definitivamente l’isolamento della comunità
informatica della Germania ovest e a celebrare la
sua realizzazione di procedure di programmazione
in notazione algebrica.17
Fu proprio sotto l’egida di Heinhold, della
GAMM18, della NTG19 e della VDE20 che Alwin
Walther organizzò, dal 25 al 27 ottobre 1955, a
Darmstadt il primo Simposio sulle macchine calco-
latrici elettroniche e l'elaborazione delle informa-
zioni 21
Tra i relatori c'erano le più belle menti dell’epo-
ca: Heinz Unger, Klaus Samelson, Sergei Alexeye-
vich Lebedev, Bruno Thüring e Nikolaus Joachim
Lehmann che, nel suo discorso, affermò che il tema
centrale della Conferenza doveva essere il proposi-
to di "creare una notazione rigorosa e universale
che consentisse la conversione automatica in
istruzioni per la macchina".
dei Lincoln Labs era cordiale e la sensazione
era quella, nonostante il trattamento economi-
co, di essere tra pari intellettuali. "Eravamo un
gruppo di secchioni", dice seccamente Mary e
poi narra l’aneddoto di quando lei risolse per
un cliente biologo, che aveva da poco acqui-
stato la macchina, un diabolico problema di
elaborazione dei dati, tanto da farlo ballare
felice attorno al computer.
Dopo tanta fatica, nel 1963, Mary Wilkes si
concesse un viaggio in giro per il mondo per
un anno; al suo ritorno le fu chiesto di finire di
scrivere il sistema operativo del LINC, ma il
laboratorio era stato trasferito a St. Louis e lei
non aveva alcun desiderio di trasferirsi lì. Così
l’azienda decise di spedire e installare un LINC
a casa dei suoi genitori a Baltimora.
Una presenza alquanto incombente (foto a
sinistra), lì nell'atrio, ai piedi delle scale, un
armadietto alto con ronzanti nastri magnetici e,
di fronte, un box delle dimensioni di un frigori-
fero pieno di circuiti: era quello il primo assag-
gio di un futuro fantascientifico. Wilkes fu una
delle prime persone sul pianeta ad avere un
personal computer a casa sua.
Suo padre, un sacerdote episcopale, era elet-
trizzato; "Se ne vantava e, a chiunque incon-
trava, diceva: «Scommetto che non hai un
computer in salotto.»”.
Grazie al lavoro di Mary, rapidamente gli utenti
di LINC, in tutto il mondo, hanno utilizzato il
suo codice per programmare analisi mediche e
persino per creare chatbot in grado d’intervi-
stare i pazienti circa i loro sintomi.
Anche se Wilkes si era affermata come pro-
grammatrice, desiderava ancora una vita da
avvocato, così nel 1972, entrò alla Harvard
Law School e, dopo la laurea, trascorse i suc-
cessivi quarant’anni come avvocato.
17. Cfr.: Hartmut Petzold, “Eine Informatiktagung vor der Gründung der
Informatik. Die Darmstädter Konferenz von 1955“, in R. Seising, M. Fol-
kerts, U. Hashagen (eds.), “Form, Zahl, Ordnung. Studien zur Wissen-
schafts- und Technikgeschichte” (Franz Steiner Verlag: 2004), pagg. 759-
782.
18. Gesellschaft für Augewandte Mathematik und Mechanik (Ass. per la
Matematica e la Meccanica Applicata )
19. Nachrichten Technische Gesellschaft (Società di Ingegneria delle Comu-
nicazioni)
20. Verband der Elektrotechnik, Elektronik und Informationstechnik
(Associazione di ingegneria elettrica, elettronica e tecnologia dell'informa-
zione)
21. Fachtagung Elektronische Rechenmaschinen und Informationsverarbei-
tung Cfr.: https://link.springer.com/article/10.1007/BF02808623
8
S. Giglio
Più in particolare, quella conferenza rafforzò anche i
legami tra i gruppi informatici della Germania ovest,
della Svizzera e degli Stati Uniti. A tal riguardo, la
presenza Alston Scott Householder, all’epoca presi-
dente di ACM, risultò essere determinante per av-
viare i successivi scambi tra le varie comunità che
infine giungeranno ad ALGOL.22
Su questa scia Alwin Walther suggerì la formazione
di un apposito gruppo di lavoro che nascerà, nel
1956, sempre in seno alla GAMM, denominato
(Programmierungsausschuß) Comitato tecnico
per la programmazione (FAP).
Ovviamente anche il gruppo europeo era ben consa-
pevole dell'esistenza dei tanti linguaggi di program-
mazione in circolazione.
C’è da dire che in Germania l’idea di adottare una
notazione matematica per programmare i computer
era stata presa in considerazione sin dal 1940 e con-
tinuò ad essere perseguita fino alla Conferenza di
Darmstadt.
Anche Eduard Stiefel e Heinz Rutishauser presso
l'Istituto di matematica applicata all’ingegneria
dell'ETH di Zurigo avevano sviluppato, tra 1949 e il
1952, alcune idee in questo senso.23
§ 1.9 - Il gruppo di studio FAP
C
omposto da otto membri, questo gruppo
avrebbe dovuto ideare, al pari del suo
omologo statunitense, un nuovo linguag-
gio di programmazione algebrico capace
di girare sul maggior numero di macchine possibi-
le.
Anche il FAP, dopo poche riunioni, giunse alla
conclusione che piuttosto che crearne un altro era
necessario fare uno sforzo verso l'unificazione.
Mi preme di sottolineare che, al pari di alcuni
componenti del gruppo di studio nominato
dall’ACM negli USA, anche per il FAP su taluni di
loro non esistono notizie in rete nonostante ore e
ore di ricerche passate su browser e motori di ri-
cerca diversi
Sono così giunto alla conclusione, visto il particolare
periodo storico trattato, che quei personaggi che qui
riporto col solo cognome (che forse era anche di
fantasia), senza alcun link (verso Wikipedia o altri
siti storico biografici per l’informatica), o erano delle
spie infiltrate da istituzioni governative dell’epoca o
che siano stati talmente inetti da non riuscire a pro-
durre risultati scientifici tali da dover esser ricordati
ai posteri, anche se ciò sembra essere alquanto im-
Anni
‘50/ ‘60
Come si programmava negli anni ‘50 e ‘60
Mary Wilkes oggi (foto sopra con la tastiera del
LINC tra le mani) è in pensione, vive a Cam-
bridge, nel Massachusetts, ha i capelli bianchi
e ancora i modi gentili con quel sorriso pronto e
raggiante che si può vedere nelle foto degli
anni '60, quando posava accanto al LINC.
Occasionalmente tiene discorsi per studenti di
informatica e, quando parla con loro, percepi-
sce tutto il loro stupore nell’apprendere che le
donne sono state le prime imponenti innovatrici
del settore aziendale statunitense.
Attraverso questi incontri si è resa anche conto
che il mondo informatico attuale è, sorprenden-
temente, meno popolato di donne e, per molti
versi, meno accogliente nei loro confronti ri-
spetto a quello dei suoi tempi.
Infatti, secondo i dati del governo federale
USA, la percentuale di donne impiegate nelle
professioni informatiche e matematiche dopo
aver raggiunto il picco del 35% nel 1990 ha
subito una flessione tanto che, nel 2013, la
presenza femminile è calata al 26 percento,
cioè molto al di sotto della quota nel 1960.
Estratto tradotto e riassunto dall’articolo:
The Secret History of Women in Coding - Compu-
ter programming once had much better gender
balance than it does today. What went wrong?
Di Clive Thompson, pubblicato sul The New
York Times il 13 febbraio 2019 consultabile
gratuitamente, una sola volta, al seguente link
23. Cfr.:JeanSammet,“Programminglanguages.Historyandfundamentals”(Prentice-
Hall:1969),pag.132-172.Cfr.:DonaldKnuth,LuisTrabbPardo,“Theearlydevelopment
ofprogramminglanguages”,inJackBelzer,AlbertG.Holzman,AllenKent(eds.),Ency-
clopediaofComputerScienceandTechnology,vol.7(MarcelDekker:1977),pag. 66
-73.
9
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
probabile.
Detto questo ecco gli aderenti al FAP:
 Friedrich L. Bauer,
 Hermann Bottenbruch,
 ? Graeff,
 Peter Läuchli,
 ? Paul,
 ? Penzlin,
 Heinz Rutishauser,
 Klaus Samelson
§ 1.10 - Lo scenario informatico in Euro-
pa negli anni ‘50
L
e grandi novità in ambito informatico, che
gravitavano sempre di più anche in terri-
torio europeo, non furono accolte con lo
stesso slancio degli Stati Uniti e questo,
anzitutto, per una differenza di scala:
• A quel tempo il numero di computer in Euro-
pa era alquanto esiguo se confrontato con
quello degli USA e della Gran Bretagna, e ciò
rese meno critico il bisogno di una collabora-
zione tra i vari paesi europei.24
• I programmi di ricerca militare dei paesi eu-
ropei, erano di scala molto ridotta sempre se
confrontati con quelli degli USA, e ciò fece
esercitare meno pressione sullo sviluppo del-
la programmazione.
Un’altra grande differenza sussisteva anche nel
contesto istituzionale dei gruppi informatici euro-
pei, spesso integrati negli istituti matematici uni-
versitari,25 cosa questa che li rendeva, probabil-
mente, meno desiderosi di implementare la pro-
grammazione informatica dedicata prettamente al
calcolo scientifico, con la gestione di tecniche tipi-
che dell’ambiente commerciale, industriale e mili-
tare.
Infine, la prima priorità dei centri di calcolo euro-
pei dell’epoca era soprattutto quella di stabilire
saldi rapporti con i loro omologhi americani e bri-
tannici invece di una semplice collaborazione for-
male, e questo prim’ancora che con gli stessi grup-
pi scientifici dei propri paesi.
Nonostante questa tendenza molto diffusa, possia-
mo trovare alcuni importanti esempi di collabora-
zione europea nell'informatica di quel periodo26
come, ad esempio, quella del gruppo di Stiefel e
24. Suquest’argomentoaffrontatoda Rutishausercfr.:Knuth,Pardo,op.cit.,pag.24-29;
inoltrecfr.:HarmutPetzold,“RechnendeMaschinen.EinehistorischeUntersuchung
ihrerHerstellungundAnwendungvomKaiserreichbiszurBundesrepublik“(VDIVerlag:
1985),p.484-487.
25. Nel1955nonc'eranessunpaeseeuropeonelcontinentecon10computerallavoro.In
confronto,gliStatiUnitineavevanopiùdi80eilRegnoUnitopiùdi25.Fonte:William
Asprey,DonaldD.Beaver“MarketingtheMonster:AdvertisingComputerTechnology”,
July1986AnnalsoftheHistoryofComputing8(2):127-143
Bruce Arden John W. Backus A. Householder
Harry Huskey J. McCarthy Alan J. Perlis
Saul Rosen
Eduard Stiefel Heinz Unger Alwin Walther
F. L. Bauer
N. J. Lehmann H. Rutishauser Klaus Samelson
Josef Heinhold Peter Läuchli S. A. Lebedev
1955
Personaggi storici ACM GAMM
ACM
GAMM
10
S. Giglio
Rutishauser all'ETH di Zurigo con quello di Alwin
Walther del Politecnico di Darmstadt e quello
composto da Robert Sauer, Hans Piloty, Friedrich
L. Bauer e Klaus Samelson dell'Università di Mo-
naco.
Questa collaborazione si rafforzò ulteriormente
dopo l'ormai noto simposio di Darmstadt che fu
un evento cruciale per la Comunità informatica
della Germania occidentale.27 In quella conferenza
Heinz Rutishauser infatti spiegò la necessità di
favorire una futura «notazione algoritmica unifi-
cata».28
Su quest’idea, Walther suggerì d’iniziare ad unifi-
care il design per la notazione dei programmi
scritti nei rispettivi centri di calcolo e, nel maggio
del 1956 con il presidente della GAMM, fece isti-
tuire una commissione per la programmazione
orientata allo studio sulla fattibilità di unificazione
(Comitato Tecnico Programmazione GAMM).29
Non ci sono prove riguardo all’attività di questo
comitato. Secondo i resoconti retrospettivi, esso si
concentrò inizialmente solo sulla terminologia, le
tecniche di traduzione e la notazione algebrica.30
I resoconti suggeriscono anche la possibilità che i
rappresentanti di Zurigo, Monaco, e Darmstadt (o
gruppo ZMD) non abbiano condiviso tutte le in-
formazioni con i colleghi del comitato GAMM del-
la DDR, specialmente in relazione alle comuni
tecniche di traduzione e notazione algebrica.31 Ec-
co perché forse oggi è così difficile conoscere il li-
vello di sviluppo raggiunto dal gruppo ZMD quan-
do propose di realizzare un linguaggio comune
con l'ACM nell'ottobre 1957.
Luoghi
& loghi
I luoghi del IAL in Europa
26. MinaRees,“AppliedmathematicsinWesternEurope”,ONRReport,1948,p.1.International
ComputingCollection(CBI62),box3,folder11,CharlesBabbageInstitute,Univ.ofMinnesota,
Minneapolis(d’orainpoi,CBI).
27. Attipubblicaticome:J.Wosnik(ed.),“ElektronischeRechenmaschinenundInformationsverar-
beitung.ElectronicDigitalComputersandInformationProcessing”.Nachrichtentechnische
Fachberichte,Bd.4(Vieweg&Sohn:1956).
28. Sull’amiciziafraF.L.BauereA.S.Householder,cfr.:Petzold(1985),op.cit.,pag.488;cfr.:F.L.
Bauer,“MemoriesofAlstonHouseholder(1904-1993)“.In:http://www3.math.tuberlin.de/
householder_2008/Cleve.html(15dicembre2009).Cfr.:J.Wosnik,op.cit.,pag.143.Klaus
SamelsonespresseopinionisimiliinunsimposioaDresda.Cfr.:KlausSamelson,“Problemeder
Programmierungstechnik”,BerichtüberdasInternationaleMathematikerKolloquium.Aktuelle
ProblemederRechentechnik,Dresden,22.bis27.November1955(VEBDeutscherVerlagder
Wissenschaften:1957),pag.61-68.
29. Wosnik,op.cit.,p.143.
30. Lehmann,op.cit.,p.257.
31.F.L.BauereN.JoachimLehmanhannospiegatobrevementeleattivitàdiquestocomitato.
Cfr.:Bauer,op.cit.;Leman,op.cit.
Il Politecnico di Darmstadt
Il Politecnico di Monaco
Il Politecnico di Zurigo
11
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
§ 1.11 - I primi contatti tra USA ed Europa per
un Linguaggio Algebrico Internazionale
L
a collaborazione tra USA ed Europa per il
progetto comune di un innovativo linguag-
gio di programmazione internazionale non
nasce dal nulla. Infatti, dalla lettera32 che
scrissero i rappresentati del gruppo ZMD a Carr, di
cui parleremo più innanzi, emerge che erano in con-
tatto con gli USA almeno dall'agosto del 1957, cioè
da quando Friedrich L. Bauer e Hermann Bot-
tenbruch avevano visitato diversi centri di calcolo
americani.33
Bauer, a tal proposito, racconta che il loro tour era
stato sponsorizzato dall'Office of Naval Re-
search, un ente governativo degli Stati Uniti, e reso
possibile anche dai contatti del suo capo, Robert
M. F. Sauer, con la NATO.
Durante il loro tour, Bauer e Bottenbruch incontra-
rono Alan Jay Perlis (foto a lato), vennero a cono-
scenza del linguaggio informatico MATH-
MATIC sviluppato dal team capitanato da Charles
Katz con la supervisione di Grace Hopper e pro-
dotto dalla Remington Rand nonché delle diverse
iniziative di SHARE nell’ambito della programma-
zione.
I due informatici europei, in cambio, illustrarono ai
loro colleghi americani il proprio progetto di un tra-
duttore per formule. C’è anche da aggiungere che il
tour dei due studiosi faceva parte di una più ampia
iniziativa di Walther per rafforzare i legami con il
mondo informatico americano.
Alla base di questi contatti c’era anche una propo-
sta presentata dal National Joint Computer
Committee, una umbrella organization,34
all'UNESCO nel novembre 1956 per indire una
conferenza internazionale sull'elaborazione delle
informazioni.35 Questo progetto dell’NJCC era fo-
riero di altre importanti iniziative dell'ammini-
strazione Eisenhower come il progetto Atoms
for Peace (1955) e quello dell’Anno geofisico
internazionale (1957–1958).
Lo scopo finale era comunque quello di servire da
una parte la scienza e dall’altra la politica estera
americana, rafforzando nel contempo la cooperazio-
Nella foto in alto, l’imponente edificio sede
dall’ACM, i cui uffici sono situati al decimo piano
del 1601 Broadway Street in New York, di cui si
vede l’ingresso nella foto in basso. Nel cerchietto
rosso, la targa dell’ACM posta all’ingresso dello
stabile
32. H. Rutishauser, K. Samelson, F. Penzlin, P. Läuchli, F. Bauer, H. Bottenbruch lettera a
JohnW.CarrIII,19ottobre1957.CopiatradottainingleseJ.W.Carr,inclusacomeAppen-
dixAinReportUNCOL.IldocumentoèconsultabilesulsitoComputerHistoryMuseum's
Software Preservation Group all’indirizzo: Proposal for a Universal Language for
the Description of Computing Processes (softwarepreservation.net) (Il sito
è http ma non ha contenuti pericolosi scansione con Virus Total).
33. F.L.Bauer,op.cit.
34. Organizzazione ombrello. Serve, in questo caso, a facilitare la cooperazio-
ne tra organizzazioni che operano tra paesi diversi risolvendo eventuali
complicazioni burocratiche.
35.National Joint Computer Committee, “Proposal for an International Confe-
rence on Information Processing Systems”, presentata dal NJCC, il 1 novem-
bre 1956. UNESCO Archives, Box International Conference on Information
Processing 1959 - France, folder Part I.
Luoghi
& loghi
La sede operativa dell’ACM
12
S. Giglio
ne scientifica occidentale.
Della stessa natura erano anche le attività di Wal-
ther, compreso i contatti ACM-GAMM del 1957, che
facevano parte di questo tentativo di costruire una
comunità atlantica di scienziati.36
Finito il tour americano di Bauer e Bottenbruch, il
gruppo ZMD si incontrò a Lugano, appena due setti-
mane dopo il primo lancio dello Sputnik, il 4 ot-
tobre 1957.
Ciò era un primato assoluto per l’URSS dal momen-
to che gli USA non avevano ancora mosso un passo
in questa direzione.37 Per lo storico statunitense
John Krige quest’evento fu un forte impulso che
favorì ulteriormente la cooperazione tecnologico-
scientificatransatlantica.38
È molto probabile, quindi, che quella notizia abbia
agito da catalizzatore per ACM - GAMM, tanto che
da quel momento, gli eventi cominciarono a svolger-
si rapidamente.
§ 1.12 - La lettera del 19 ottobre 1957 del-
lo ZMD all’ACM
A
ppena quindici giorni dopo il lancio del-
lo Sputnik I, infatti, e cioè il 19 ottobre
1957, F. Bauer, H. Bottenbruch, P.
Läuchli, F. Penzlin, H. Rutishauser e K.
Samelson, scrissero una lettera indirizzata al Prof.
John W. Carr III, presidente dell'ACM.
In essa proponevano un meeting privato tra l'ACM
e la GAMM per concordare un "linguaggio comune
di formule" e tentare così di fermare la prolifera-
zione dei linguaggi di programmazione sia negli
Stati Uniti che in Europa.39
Più in particolare, suggerivano di creare un
“linguaggio standardizzato di formule” per i calcoli
scientifici, basato su semplici notazioni matemati-
che, e in grado di essere implementato su qualsiasi
computer.40
In effetti questo era sostanzialmente il progetto
del “traduttore di formule” del gruppo ZMD, che
avrebbe dovuto essere esteso ad altri gruppi euro-
pei.
La lettera si concludeva con l’auspicio “di espandere
il cerchio per mezzo dei rappresentanti di Inghilter-
ra, Olanda e Svezia".41 Alla fine, però, all'incontro

Sputnik 1, inizio dell’Era Spaziale
Il radiotelescopio Lovell è il più grande tra quel-
li dell'osservatorio Jodrell Bank, situato nei pressi di
Goostrey, Cheshire, nell'Inghilterra nord-orientale.
Al momento della sua costruzione, nel 1955, era il
più grande radiotelescopio ad antenna orientabile
del mondo, con ben 76,2 m di diametro. È stato ri-
nominato Lovell Telescope nel 1987 in onore
di Bernard Lovell. Il telescopio divenne operativo
nell'estate del 1957, giusto in tempo per il lancio
dello Sputnik 1, ed era l'unico al mondo in grado di
tracciare, tramite radar, il razzo di richiamo del sa-
tellite che localizzò poco prima della mezzanotte
del 12 ottobre 1957.
36. Lettera di Isaac L. Auerbach a Pierre Auger, 22 aprile 1957. UNESCO
Archives, Box International Conference on Information Processing 1959 -
France, folder Part I. In questa lettera Auerbach informa il capo del dipar-
timento scientifico dell'Unesco, Pierre Auger, dei suoi contatti con Alwin
Walther che aveva appena partecipato all'ultima riunione del NJJC a
Chicago.
37. NJCC, op.cit.
38. Ibidem, pag. 9, 10.
39. H. Rutishauser, K. Samelson, F. Penzlin, P. Läuchli, F. Bauer, H. Bottenbruch lettera a
John W. Carr, del 19 ottobre 1957. Copia tradotta in inglese da J. W. Carr, e inclusa
comeAppendixAinReportUNCOL.
40. Ibidem,pag.2
13
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
parteciparono solo americani, tedeschi e svizzeri.
§ 1.13 - Come si organizzò l’ACM dopo la
lettera dello ZMD
S
ubito dopo aver ricevuto la proposta del
gruppo ZMD, Carr inviò una comunicazione
al Consiglio nazionale ACM e alle associazio-
ni di utenti riportante una traduzione della
lettera originale dello ZDM nonché tre proposte:
• una per stabilire la data della prima conferenza,
• una per decidere se invitare alla conferenza anche
i rappresentanti francesi e sovietici.42
• una per la composizione della delegazione ameri-
cana.
Quest’ultima doveva includere sei persone: tre rap-
presentanti dei gruppi di utenti (SHARE, USE e
DUO) e tre delle università (compreso lo stesso
Carr); si dava per scontato che tutti i rappresentanti
avessero familiarità con la ricerca teorica più avan-
zata nella programmazione.43
Fatto questo l’ACM indisse due meeting prepara-
tori di studio sulle caratteristiche che avrebbe dovu-
to avere il nuovo linguaggio e, in una terza riunione
tenutasi a Filadelfia il 18 aprile 1958, invitò F.L.
Bauer, in rappresentanza del sottocomitato GAMM,
che presentò la bozza del concept europeo di lin-
guaggio.44 Entrambi i progetti erano validi ed aveva-
no molte caratteristiche in comune, ma quello ame-
ricano risultò più pratico.45
§ 1.14 - Le reazioni di SHARE alla lettera
dello ZMD
L
a circolare di Carr provocò un dibattito in-
terno all'Executive Board di SHARE in me-
rito alla posizione che l'organizzazione
avrebbe dovuto adottare in relazione alla
prevista conferenza ACM-GAMM; il presidente
Francis V. Wagner e il segretario Herbert S. Bright
rappresentavano le due posizioni principali all'inter-
no del consiglio.46
Wagner era uno dei papaveri dell'industria aeronau-
tica della California meridionale ed era apertamente
contrario all'idea di un linguaggio di programmazio-
ne universale poiché non ne vedeva alcun vantaggio
concreto dal suo sviluppo e pensava, addirittura,
che fosse impossibile realizzarlo. Era invece un fer-
SPAZIO
Scudo termico
anteriore
Scudo termico
posteriore
Batterie allo
zinco
D 200 trasmettitore
radio
Antenna
Lo Sputnik 1, fu il primo satellite artificiale ad essere
stato mandato in orbita intorno alla Terra. Venne
lanciato dal cosmodromo di Bajkonur (Foto grande
in alto) dall'Unione Sovietica raggiungendo un'orbita
ellittica bassa il 4 ottobre 1957; rimase in orbita per
tre settimane prima che le sue batterie si esaurisse-
ro, quindi continuò a orbitare per altri due mesi pri-
ma di rientrare nell'atmosfera distruggendosi. Era
costituito da una sfera levigata in lega
di alluminio (93,8% alluminio, 6% magnesio,
0,2% titanio) del peso di 83,6 kg, avente diametro di
58 cm, con quattro antenne radio esterne per tra-
smettere gli impulsi.
41.Ibidem,pag.3
42. JohnW.CarrtoACMCouncil,26ottobre1957,pag.2.In:ReportUNCOL.
43. Ibidem, pag. 3
44.Cfr.: A. J. Perlis “The American side of the development of Algol” in ACM
SIGPLAN Notices, Volume 13, Issue 8, agosto 1978, pagg. 3 – 14, consul-
tabile liberamente al link: https://doi.org/10.1145/960118.808369
45. Cfr.: Heinz Rutishauser, “Description of ALGOL 60”, ed. F. L. Bauer et al.
in “Handbook for Automatic Computation” (Berlin: Springer-Verlag, 1967)
vol. 1, pag. 5.
46. Per la loro posizione cfr.: Francis V. Wagner to John W. Carr, November
22 1957; H. S. Bright to John W. Carr, November 26, 1957. In: Report
UNCOL. Circa F. V. Wagner, cfr.: Atsushi Akera, op.cit., pag. 253. Circa H.S.
Bright, cfr.: Eric A. Weiss, “Biographies”, in Annals of the History of Com-
puting, 10, 3 (1988): 217-218.
14
S. Giglio
vente sostenitore dell'iniziativa UNCOL e sulla so-
pravvivenza dei molteplici linguaggi di programma-
zione.
Bright era anch’egli una figura di risalto in SHARE
e, a differenza di Wagner, aveva una mentalità
molto più aperta dal momento che lavorava
nell’ambito della ricerca. Bright non pensava ad
un nuovo linguaggio di programmazione, bensì
all'idea di raggiungere "un accordo generale sugli
attributi di base dei linguaggi di origine"47, ne-
cessario a facilitare la compatibilità tra le varie
macchine da calcolo dell’epoca.
Oltre a Bright, all'interno di SHARE, c'erano figu-
re molto influenti, come e J. H. Wegstein, che so-
stenevano la linea di realizzare un nuovo linguag-
gio standardizzato simile al FORTRAN. Altri anco-
ra, invece, erano ugualmente scettici su entrambe
le soluzioni.48
Alla fine il comitato esecutivo di SHARE raggiunse
un compromesso molto delicato: mantenere una
strategia basata sulla prudenza, in relazione all'i-
niziativa ACM- GAMM, per evitare di dare l'im-
pressione sia di un’adesione piena che di un totale
rifiuto.
§ 1.15 - Il primo incontro tra ACM e GAMM
a Zurigo
D
al 27 maggio al 2 giugno 1958, ebbe
finalmente luogo l'incontro congiunto
ACM-GAMM presso l'ETH di Zurigo.49
All’incontro parteciparono:
• per il GAMM
Friedrich L. Bauer, Hermann Bot-
tenbruch, Heinz Rutishauser e Klaus
Samelson;
• per l'ACM
John W. Backus, Charles Katz, Alan
Perlis e Joseph Henry Wegstein
Nel meeting di Zurigo si analizzarono i pro ed i
contro di UNCOL e di IAL e alla fine emersero
quattro punti programmatici inerenti il nuovo lin-
guaggio che sarebbe dovuto essere:
1. il più vicino possibile alla notazione matemati-
ca standard e leggibile con poche ulteriori spie-
gazioni;
2. utilizzabile per la descrizione dei processi infor-
matici nelle pubblicazioni;
3. traducibile meccanicamente in programmi
macchina;
4. indipendente dalla macchina.50
Il primi tre punti fecero sorgere alcuni problemi a
causa delle consistenti differenze tra linguaggio di
pubblicazione e quello di programmazione, senza
contare quelli inerenti ai simboli grafici da impiega-
47. H. S. Bright to John W. Carr, pag. 4. In: Report UNCOL.
48.Per le differenti posizioni interne a SHARE, cfr.: Panel discussion on uni-
versal languages (one set of notes). In: Verbatim Transcript of the SHARE
10th Meeting, 26-28 febbraio 1958, Appendix E. SHARE Inc. Records (CBI
21), box 3, folder 16.
49. Cfr.: A. J. Perlis, K. Samelson, “Preliminary report. International Algebraic Language”,
CommunicationsoftheACM, 1,12(1958):8-22.
50. Ibidem,pag.9

Sedi storiche del GAMM e dell’ETH
15
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
re come, ad esempio, quello per la notazione deci-
male: gli americani erano abituati al punto e gli eu-
ropei alla virgola.51
Raggiunta questa soluzione l'incontro congiunto si
concluse con successo e fu riassunto con la pubblica-
zione del Preliminary Report: International Alge-
braic Language.52
Per risolvere queste problematiche descrittive, Weg-
stein propose di definire il linguaggio su tre diversi
livelli di rappresentazione:
• riferimento,
• hardware,
• pubblicazione.
Già da questo primo incontro comparve il nome AL-
GOL (abbreviazione di ALGOrithmic Language), poi
definitivamente adottato nel 1959, anche se al mo-
mento gli fu preferito ancora IAL
§ 1.16 - IAL → ALGOL: i motivi di una scelta
S
e ci fermiamo un istante a riflettere e poi
consultiamo Bing, Google o Wikipedia ci
rendiamo subito conto che negli anni ’50
negli USA erano presenti sul mercato alme-
no tre linguaggi di programmazione orientati alle
formulazioni algoritmiche: FORTRAN, IT e
MATH-MATIC, ma sia gli americani che gli euro-
pei non li avevano ritenuti una base valida su cui
formulare le loro proposte. Perché? A fornire una
risposta a questa domanda è il Prof. Huub de Beer:
“IT e MATH-MATIC non erano sufficienti o ben co-
nosciuti. FORTRAN, d'altra parte, anche se era ben
noto, ma non piaceva agli americani che volevano
minare il dominio di IBM. Oltretutto, il sottocomi-
tato ACM aveva proposto una nuova lingua. La
combinazione delle due proposte è diventata IAL:
un nuovo linguaggio algoritmico come altri lin-
guaggi algoritmici. Il motivo per cui IAL doveva
diventare il linguaggio algebrico internazionale
non era perché fosse migliore degli altri linguaggi
di programmazione, ma perché era indipendente
dalla macchina e rappresentava un compromesso
tra le due comunità informatiche con tutto il poten-
ziale per diventare parte di uno sforzo veramente
internazionale.”.53
51. Perlis,“TheAmericanSideoftheDevelopmentofAlgol”pag.6
52. A.J.Perlis,K.Samelson,Op.cit.
53. Huub de Beer, “The History of the ALGOL Effort”, 2006, consultabile al link: https://
heerdebeer.org/ALGOL/creation.html
CULTURA
16
S. Giglio
§ 1.17 - Incontri successivi a Zurigo e il
crescente interesse per il fenomeno AL-
GOL
N
on ancora nella quotidianità della popo-
lazione occidentale di quei tempi, ma in
alcune aule e laboratori universitari, in
alcuni centri di ricerca governativi e in-
dustriali il fenomeno ALGOL rappresentava uno di
quei semi fecondi da cui, in pochi lustri, avrebbe vi-
sto la luce l’informatica così come la conosciamo ai
nostri giorni.
Lo sviluppo del nuovo linguaggio internazionale era
diventato una sorta di passaparola tra i cervelloni
dell’epoca e veniva visto da molte università come
una palestra con cui far esercitare i propri iscritti
più talentuosi.
Ogni nuovo incontro, ufficiale e non, tra ACM e
GAMM prima e per presentare poi ALGOL alla co-
munità scientifica internazionale vedeva man mano
aumentare il numero di partecipanti provenienti da
nuovi paesi sempre più interessati al nascente lin-
guaggio informatico.
Lo scopo dei meeting era quello di confermare i tra-
guardi acquisiti, correggere errori, dare nuovi orien-
tamenti alla stesura del linguaggio e preparare i ma-
teriali su cui si sarebbe discusso nel prossimo incon-
tro.
§ 1.18 - Traduzione dell’introduzione de:
“Report on the Algorithmic Language AL-
GOL 60”
N
ell’introduzione di questo prezioso do-
cumento, che rappresenta un’istanta-
nea di quel periodo, si concentra tutta
la vicenda iniziale di ALGOL e della
BNF.
Dedicato alla memoria di William Turanski, il
giovane ricercatore del gruppo americano ucciso
da un’automobile pochi giorni prima della Confe-
renza del Gennaio 1960, il report raccoglie i mate-
riali di:
J. W. Backus, F. L. Bauer, J. Green, C. Katz, J.
McCarthy, P. Naur (come editore), A. J. Perlis, H.
Rutishauser, K. Samelson, B. Vauquois, J. H.
Wegstein, A. van Wyngarden, M. Woodger
Ho tradotto e organizzato l’introduzione del report
perché ci fornisce un’eccellente linea temporale
attraverso cui si può apprezzare il crescendo del
fenomeno ALGOL che, in pochi mesi, riesce a
coinvolgere e conquistare nuovi studiosi di diversi
paesi.
Sfondo. Dopo la pubblicazione del preliminary report su AL-
GOL, stabilito nella Conferenza di Zurigo del 1958, cominciò a
COMMUNICATIONS OF ACM
Sopra la copertina di CACM, del maggio
1960, con la foto di William J. Turanski
alla cui memoria fu dedicato anche il
Report on the Algorithmic Language
ALGOL 60 di cui uno stralcio è riportato
sulla destra.
17
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
svilupparsi un notevole interesse per il nuovo linguaggio di pro-
grammazione.
Infatti, già dopo l’incontro informale tenutosi a Magonza nel
novembre 1958, una quarantina di persone provenienti da diver-
si paesi europei, particolarmente interessate all’argomento, ten-
nero poi una propria conferenza a Copenaghen, nel febbraio
del 1959, circa la realizzazione dell'ALGOL.
In questa conferenza fu formato un apposito "gruppo hardware"
per lavorare in modo cooperativo con gli altri gruppi ACM -
GAMM, fino al livello della scrittura del codice sul nastro di
carta perforato, e si decise di pubblicare, col patrocinio della
Regnecentralen di Copenaghen, un Bollettino ALGOL curato da
Peter Naur, che servì da forum per approfondire ulteriori scambi
di idee.
Durante la Conferenza ICIP del giugno 1959 a Parigi si ten-
nero diversi incontri, sia formali che informali che rivelarono
alcune incomprensioni circa gli intenti del gruppo che era il
responsabile principale della formulazione del linguaggio, pur
riconoscendo allo stesso un ampio apprezzamento per il notevo-
le sforzo richiesto.
Il risultato dei vari dibattiti fu quello di indire un meeting inter-
nazionale nel gennaio 1960 per affinare ALGOL e preparare un
rapporto finale.
Nella Conferenza europea ALGOL di Parigi del novembre
1959, alla quale presero parte una cinquantina di persone, furo-
no selezionati sette rappresentanti europei per partecipare
all’imminente conferenza del gennaio 1960; essi rappresentava-
no le seguenti organizzazioni:
• Association Française de Calculi,
• British Computer Society,
• Gesellschaft für Augewandte Mathematik und Mechanik,
• Nederlands Rekenmachine Genootschap
e tennero un'ultima riunione preparatoria a Magonza nel di-
cembre 1959.
Nel frattempo, negli Stati Uniti, si era stabilito che chiunque vo-
lesse suggerire modifiche o correzioni all'ALGOL era pregato di
inviare i propri commenti alla rivista Comunications ACM, dove
sarebbero stati pubblicati. Questi commenti sarebbero poi diventa-
ti base di attenta valutazione per le successive modifiche di AL-
GOL.
Oltre a questi felici sviluppi, le organizzazioni SHARE e USE, già
rappresentate nel Comitato ACM sui linguaggi di programmazio-
ne, decisero di istituire dei propri gruppi di lavoro ALGOL.
Nel novembre 1959, il Comitato ACM si riunì a Washington ove
analizzò tutti i commenti su ALGOL che erano pervenuti a Comu-
nications ACM e selezionò sette rappresentanti da inviare alla
prossima conferenza internazionale del gennaio 1960. I rappresen-
tanti tennero un incontro preparatorio a Boston nel dicembre
1959.
Uno dei primissimi magazine di informatica
Communications of the ACM è la rivista mensile della
Association for Computing Machinery (ACM). Fu fondata
nel 1958 e Saul Rosen fu il suo primo caporedattore. Il magazi-
ne è a metà strada tra una rivista scientifica e una di nicchia.
ACM pubblica anche una varietà di riviste più teoriche. Il ma-
gazine è inviato a tutti i membri ACM.
L'attenzione si concentra sulle implicazioni pratiche dei pro-
gressi nella tecnologia dell'informazione e sui problemi di ge-
stione ad essa associati.
Il contenuto è soggetto a peer review e gli articoli pubblicati
sono spesso riassunti di ricerche che possono essere pubblica-
ti anche altrove. Il materiale pubblicato deve essere accessibi-
le e rilevante per un vasto pubblico di lettori che abbiano una
certa esperienza in tutte le aree dell'informatica e dei sistemi
informativi.
Dal 1960 in poi, CACM pubblicò anche algoritmi, espressi ini-
zialmente in ALGOL . La raccolta di algoritmi in seguito diven-
ne nota come Collected Algorithms of the ACM.
CULTURA
18
CAPITOLO II
L’UNESCO e le sue iniziative per
l’informatica
John W. Backus e l’idea di un nuovo
metalinguaggio formale per
l’informatica
La lettera di Donald Knuth per ribattezzare la BNF
S. Giglio
ALGOL BULLETIN - Il notiziario ALGOL
Regnecentralen (abbreviato RC, in italiano Centro di calco-
lo) è stata la prima società IT danese, originariamente crea-
ta come istituto di ricerca indipendente sotto l'Accademia
delle scienze tecniche (ATV) il 12 ottobre 1955 con un finan-
ziamento di 900.000 corone danesi ottenute con il Piano
Marshall.
Tre fautori geniali determinarono la fondazione di RC:
• Niels Ivar Bech , che ne divenne anche amministratore
delegato;
• il professor Richard Petersen, che era presidente del
comitato per i calcolatori di ATV;
• Bent Scharøe Petersen (capo progettista di DASK).
Regnecentralen realizzò il computer di prima generazio-
ne DASK (abbreviazione di Danish Arithmetic Sequence Cal-
culator) che fu presentato per la prima volta il 13 feb-
braio 1958.
Dalla fine degli anni '60 RC aveva progettato una serie di
computer per uso personale e commerciale i cui discendenti
sono stati venduti fino agli anni '80.
Regnecentralen ci interessa perché lì mosse i primi passi da
informatico, impegnato nel progetto ALGOL, Peter Naur,
che insieme al Compiler Group, con Jørn Jensen, svolsero
un ruolo decisivo nello sviluppo dei primi traduttori ALGOL e
nel lavoro per lo sviluppo di linguaggi internazionali di alto
livello.
1
§ 2.1 - Le iniziative dell’UNESCO per l’in-
formatica
C
ome ulteriore elemento “probatorio”54 di
questo entusiastico fermento iniziale le-
gato ad ALGOL troviamo il grande inte-
resse che l’UNESCO, (l’Organizzazione
delle Nazioni Unite per l'Educazione, la Scienza e
la Cultura) cominciò a dedicare a quello che non
era un semplice fatto tecnologico, bensì ad un
nuovo fenomeno culturale da assimilare nella sua
interezza e trasformare in una nuova disciplina
scientifica e, per molti versi, umanistica: l’infor-
matica.
I primi passi che mosse l’UNESCO rispetto ad AL-
GOL, e alla nascente informatica, furono:
• La prima ICIP, International Conference
Information Processing, che si tenne a Pari-
gi dal 15 al 20 giugno del 1959 ora consi-
derata come il primo congresso dell’IFIP, di
cui sotto. Tra i vari relatori anche J. W. Bac-
kus che presentò ufficialmente la sua nota-
zione BNF.
• La International Federation of
Information Processing Socie-
ties (IFIPS) ha come fondatore
un nome di eccellenza: Isaac L.
Auerbach (foto a lato) ingegne-
re e informatico statunitense.
Nata nel 1960 come organizzazione globale
per ricercatori e professionisti IT per con-
durre ricerche, sviluppare standard e pro-
muovere la condivisione delle informazioni.
Il suo gruppo, WG 2.1, dal marzo 1959
all'agosto 1988, ha curato i 52 numeri del
Bollettino ALGOL
§ 2.2 - La nascita della BNF
C
ome abbiamo visto in precedenza,
nell’ambito dei lavori della Conferenza
ICIP di Parigi del giugno ’59, John Bac-
kus presentò la sua notazione in un docu-
mentointitolato:
“The syntax and semantics of the proposed inter-
national algebraic language of the Zurich ACM-
GAMM Conference”55
in cui illustrava la formulazione del suo meta-
linguaggio formale applicato alla strutturazio-
ne del nascente Linguaggio Algebrico Internazio-
nale.
Era la prima stesura del suo reference language,56
quella notazione poi così ampiamente utilizzata
per la descrizione degli algoritmi nelle varie pub-
54.Vedi approfondimento al centro delle pagine successive
19
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
Regnecentralen la prima IT factory danese
blicazioni successive, lasciando le specifiche per
l’input/output alle realizzazioni effettive.
È mio pensiero che Backus, da buon matematico,
avesse deciso di realizzare la sua notazione per di-
panare qualunque equivoco espositivo tra i parteci-
panti al progetto, riflettendo sulle molteplici cause
che avrebbero potuto generare incomprensioni tra
i formulatori del nuovo linguaggio:
• La differente estrazione culturale in termini
di lingua, formazione, provenienza, esperien-
ze, ambiti operativi, ecc.
• Le diverse aspettative interne agli USA di
ACM, da una parte e di SHARE, DUO e USE
dall’altra.
A rafforzare la mia convinzione è la notizia di un
malinteso che fece accogliere con favore una deli-
bera sull’IAL approvata durante l'undicesima riu-
nione di SHARE.57
L’equivoco fu originato da una lettura imprecisa
del contenuto e del contesto della delibera dovuto
al linguaggio impiegato che era intenzionalmente
ambiguo.
Ad aumentare la comicità del fatto è che nel corso
degli anni certa storiografia ha spesso interpretato
quella delibera come una piena adesione di
SHARE ad ALGOL come linguaggio di program-
mazione universale! Sic.
Invece ora sappiamo bene che in realtà SHARE
aveva a stento raggiunto un fragile accordo interno
sulla convenienza di mantenere la molteplicità dei
linguaggi di programmazione.
§ 2.3 - Avvertenze sulla traduzione
N
elle pagine che seguono la traduzione del
documento di presentazione della BNF in
cui sono riportati tutti i simboli che Bac-
kus ritenne opportuno impiegare per de-
scrivere ALGOL in vari ambiti di pubblicazione.Per
non alterare i simboli del documento, ho effettuato
una serie di catture video lì dove comparivano
segni grafici non presenti nel font Times
New Roman con cui è stato redatto questo testo. Il
lettore noterà che la numerazione associata alla de-
scrizione dei vari passi della notazione risulta al-
quanto discontinua; a tal proposito voglio precisare
che mi sono limitato a copiare verbatim il testo ori-
ginale così come riportato nel link di cui sopra, limi-
tandomi a disporre lo scritto su di una sola colonna.
I ricercatori di Regnecentralen furono i primi autori danesi dei
testi di programmazione e informatica; da quest’istituzione
proverranno anche un gran numero di docenti che insegne-
ranno al Technical College danese, all'Università di Aarhus e
anche all'Università di Copenaghen, quando questa istituì nel
1970, il Dipartimento di Informatica.
2
3
4
Vecchie foto da RC.
1) Una copia dell’ALGOL Bulletin del dicembre ‘59.
2) La targa del Centro di Calcolo all’ingresso del n° 5 di Carl-
sberg vej (a ridosso degli stabilimenti della famosa birra
danese).
3) La villa in cui era allocato RC. 4) In primo piano Bent
Scharøe Petersen, Jørn Jensen sulla sinistra e Richard
Petersen a destra. 1958. - Fonte: Datamuseum.dk
Le foto provengono dal blog clausib.blogspot.com
20
55. Il documento è consultabile liberamente al seguente link: https://
www.softwarepreservation.org/projects/ALGOL/paper/Backus-ICIP-
1959.pdf
56. Verbatim Transcript of the SHARE 11th Meeting, September 9-12, 1958,
Appendix C-17, p. 1. SHARE Inc. Records (CBI 21), box 3, folder 17.
57. Verbatim Transcript of the SHARE 11th Meeting, September 9-12, 1958,
Appendix C-17, p. 1. SHARE Inc. Records (CBI 21), box 3, folder 17.
S. Giglio
Questo articolo fornisce un riassunto della sintassi e dell'interpretazione delle regole del linguaggio alge-
brico internazionale proposto dalla Conferenza ACM-GAMM di Zurigo, seguita da una presentazione
formale e completa delle stesse informazioni. Diverse notazioni sono qui proposte per rappresentare nu-
meri, variabili numeriche, variabili booleane, relazioni, array n-dimensionali, funzioni, operatori ed
espressioni algebriche. I procedimenti sono forniti nel linguaggio per eseguire:
• l’assegnazione di valori a variabili,
• l’esecuzione condizionale di enunciati,
• le procedure iterative,
• la formazione di enunciati composti da sequenze di affermazioni,
• la definizione di nuove affermazioni per procedure arbitrarie
• la modifica e il riutilizzo di segmenti di programma.
Il linguaggio proposto ha lo scopo di fornire uno strumento comodo e conciso per esprimere virtualmente
tutte le procedure di calcolo numerico impiegando un numero relativamente basso di regole sintattiche e
tipi di dichiarazione.
1. Sintesi
Nel maggio 1958 una conferenza a Zurigo completò il progetto congiunto dell'ACM (Association for
Computing Machinery) e la GAMM (Association for Applied Mathematics and Meccanica) approvando
una proposta di International Algebraic Language (IAL) o ALGOL. Saranno presentati qui altri materiali
per discutere sia la storia del progetto che i vari aspetti del linguaggio.
Lo scopo del presente documento, invece, è quello di descrivere con precisione sia la sintassi che la se-
mantica di IAL. La descrizione data qui sarà quella del cosiddetto "linguaggio di riferimento" che, per
chiarezza, impiega un insieme specifico di simboli e convenzioni di notazione.
Va tenuto presente, tuttavia, che il linguaggio formale di riferimento di IAL è nato principalmente con lo
scopo di descrivere le regole di costruzione del. linguaggio e dei suoi significati.
Nell'uso effettivo sono previste una varietà di simbolizzazioni e convenzioni di notazione, poiché ogni
rappresentazione è una traslitterazione abbastanza precisa del linguaggio di riferimento avendo in comu-
ne le stesse regole di sintassi e semantica.
Le "rappresentazioni hardware" utilizzeranno generalmente un minor numero di simboli rispetto a quello
impiegato nel linguaggio di riferimento risultando così più consone per la traduzione meccanica in lin-
guaggio macchina per un determinato tipo di macchina.
Le "forme di pubblicazione" del linguaggio, d'altro canto, impiegheranno molte notazioni convenzionali
della matematica (ad es., esponenti, pedici, lettere greche) e saranno utilizzate nella comunicazione in
scrittura umana dei programmi IAL.
La descrizione del linguaggio di riferimento è divisa in due parti. Il capitolo 2 fornisce una breve descri-
zione informale dei principali elementi della lingua in termini di esempio mentre il capitolo 3 fornisce
una descrizione formale della struttura del linguaggio.
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
21
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
2. Descrizione informale
2.1 Sintesi
Un programma IAL è una sequenza di istruzioni che possono essere intervallate da alcune dichiarazioni. Ogni
dichiarazione descrive una regola di calcolo e, esplicitamente o implicitamente, specifica un'istruzione suc-
cessore (il successore è l’istruzione successiva nel programma se non diversamente indicato).
La regola di calcolo data da un programma è, ovviamente, la sequenza di calcoli specificata dalle istruzioni
quando prese nell'ordine previsto dai parenti successori.
Le dichiarazioni affermano alcuni fatti che devono valere in tutto il calcolo. La loro posizione nel programma
è generalmente irrilevante.
I paragrafi seguenti presentano alcuni degli aspetti importanti proprietà di espressioni e proposizioni, con
esempi.
2.2 Espressioni algebriche
a) Le espressioni algebriche sono composte da variabili, costanti, funzioni e operatori per la consueta aritme-
tica operazioni.
b) Nomi di variabili, funzioni e altre entità sono composto da caratteri alfabetici e numerici, il primo essendo
alfabetico. Una sequenza di caratteri può essere di qualsiasi lunghezza.
c) Resta inteso che nelle operazioni aritmetiche, l’espressione in virgola mobile indica una rappresentazione
approssimata dei numeri reali. Alcune variabili possono essere dichiarate per essere di valore intero. L'ef-
fetto di tale dichiarazione è che qualsiasi valore, che deve essere assegnato a tale variabile, è prima arro-
tondato all'intero più vicino.
d) Le dichiarazioni di array (d. 2.5) possono indicare che alcuni nomi sono di array di dati di varie dimensio-
ni. Questi nomi possono apparire nelle espressioni come indici di variabili seguite da una sequenza di pe-
dici racchiusi tra parentesi quadre, dal numero di pedice corrispondente alla dimensionalità della matrice
mentre ogni pedice sarà separato dal successivo da una virgola. Poiché le parentesi sono utilizzate per rac-
chiudere gli argomenti delle funzioni (e sotto espressioni), è facile distinguere tra funzioni e variabili indi-
cizzate. Un pedice può essere un’espressione qualsiasi; il valore del pedice è il numero intero formato
dall'arrotondamento del valore dell'espressione (se non è già da un numero intero).
Esempi di espressioni algebriche
1) significa
2) significa
3) significa
4) significa
In particolare, se i e j hanno entrambi valore 1 (o 1,2) quando l'espressione di cui sopra è incrociata, allora è
equivalente a:R2, 1 × S1, 2
2.3 Espressioni booleane
È possibile dichiarare alcune variabili, o valori di matrici, con valore booleano (ovvero, con il solo valore 0,
"falso", o 1, "vero"). Queste variabili, le costanti 0 e 1, le funzioni con valori booleani e le sotto espressioni
della forma:
(E rE')
possono essere combinate con gli operatori booleani "and", "or", "not" e "equivalent" per formare un'espres-
sione booleana. (In quanto sopra, E ed E' sono espressioni algebriche ed r è una relazione come, ad esempio,
(x/y> 1).)
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
22
S. Giglio
Esempi di espressioni booleane
1)
Questa espressione booleana è vera se, e solo se, X è maggiore di Y o Y è maggiore di Z2 o entrambi. L'opera-
tore è quello "or".
2)
Qui A e B sono due variabili con valori booleani. L'espressione è vera quando A è falsa e B è vera o quando A
è vera e X è uguale a Y + 1.
2.4 Dichiarazioni
2.41
a) Gli enunciati possono essere di base o composti (formati da una sequenza di enunciati racchiusi tra paren-
tesi di enunciato, inizio e fine). Le istruzioni sono separate una dall'altra dal separatore ";".
Esempi di dichiarazioni composte
begin a [i]: = b [i] + c [i]; x: = a [i] end
In generale, se S1, S2, ... Sn sono dichiarazioni allora:
begin S1; S2; ; ; Sn end
è una dichiarazione.
b) Una dichiarazione può essere etichettata, come segue:
L:S
dove L è un nome o un numero intero; L diventa così l'etichetta
della dichiarazione S.
2.42 Dichiarazioni di assegnazione
Le istruzioni di assegnazione indicano che un'espressione deve essere valutata e assegnata come valore di una
variabile.
Esempi di istruzioni di assegnazione
a) x: = a + b
significa: assegnare il valore di a + b come valore di x.
b) alfa: = 4.63
c) r [i, j]: = s [i] + t [j]
d) B: = (x > 0) ˄ A
dove A e B sono variabili booleane e B riceve il valore di vero dell'espressione booleana a destra.
2.43 Dichiarazione go to
a) Un'istruzione go to può specificare un'istruzione, diversa dall'istruzione che la segue, come sua succeditri-
ce nel processo di calcolo descritto dal programma. Questo può essere fatto esplicitamente scrivendo l'eti-
chetta del successore desiderato come segue:
go to A
dove A è l'etichetta di qualche istruzione nel programma. Il successore dell'istruzione go to può essere
creato, oppure già dipende dal valore di qualche altra espressione mediante l'uso di una variabile switch,
il cui pedice è l'espressione desiderata. Il valore di una variabile switch è un'etichetta. Quindi se "branch"
è il nome di una variabile switch, si avrà:
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
23
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
go to branch [i + j]
che ha come successore quella dichiarazione la cui etichetta è il valore del ramo [i + j].
b) Le variabili switch sono definite dalle dichiarazioni switch (Cfr.: 2.53). Pertanto la variabile switch
"branch" potrebbe essere definita dalla seguente dichiarazione:
switch branch (AI, A2, B1, B2)
dove A1, A2, B1, B2 sono etichette di dichiarazioni. Il valore del ramo [i + J] è quindi la (i + j) esima eti-
chetta nella sequenza (o l'n-esima etichetta, dove n è l'intero formato dall'arrotondamento: i + j).
Ad esempio, se i + j è uguale a 3, il valore del ramo [i + j] è B1 e, in tal caso, "go to branch [i + j]" ha lo
stesso significato di "go to B1".
c) Le variabili switch possono essere utilizzate nella definizione di altre variabili switch. Così le seguenti
due dichiarazioni switch potrebbero apparire in un programma:
switch branch (AI, A2, Bl, B2)
switch fork (branch [i], AI, Bl).
In questo caso se i è uguale a 4 e j è uguale a 1, il valore di fork [j] è B2.
d) Una variabile switch, in alcuni casi, potrebbe non avere alcun valore . Ad esempio, il ramo [i] come de-
finito sopra non ha valore se l'intero più vicino a i è minore di 1 o maggiore di 4. In tal caso il successore
di "go to branch [i]" è l'istruzione successiva nel programma.
2.44 clausole if e istruzioni if
La clausola if, "if B", dove B è un'espressione booleana, si combina con l'istruzione S che la segue per forma-
re un'istruzione composta. Questa affermazione composta ha lo stesso effetto di S se B è vera e ha l'effetto di
"nessuna operazione" se B è falsa.
if (a > 0); x: = 1; if (a = 0); begin x: = y; p: = 0 end;
if (a < 0); go to B; S
2.45 clausole for e dichiarazioni for
a) Una clausola for, come una clausola if, si combina con l'istruzione S, che la segue per formare un'istruzio-
ne composta. Un'istruzione for specifica che una data variabile assume una successione di valori e che
l'istruzione governata, S, deve essere eseguita una volta per ogni valore della variabile. Così, ad esempio:
for x: = 1, r + s, k, 6.3, -10; a: = (a + x)/x
fa sì che la dichiarazione governata venga ripetuta cinque volte, una volta per ciascuno dei valori elencati
di x. Dalla dichiarazione composta governata da una clausola for può essere coinvolta un’istruzione che
può includere altre istruzioni for, così procedure ricorsive complesse possono essere facilmente specifica-
te dal loro impiego.
b) Le sequenze di valori possono anche essere date come progressioni aritmetiche:
questa clausola indica che i dovrebbe assumere i valori: a2
, a2
+ b/2, a2
+ b, … , a2
+ nb/2, … finché y + 1
non viene raggiunto, ma non superato. Molte di queste progressioni possono essere incluse in una sola
clausola for; per esempio:
for r: = 1(3)10, 12(4)20, 21(-7)1
fornisce la sequenza di valori r: 1, 4, 7, 10, 12, 16, 20, 21, 14, 7.
2.46 Dichiarazioni convergenti
Un'istruzione di convergenza che precede un'istruzione composta S fa sì che quelle sottodichiarazioni
comprendenti S, che non specificano esplicitamente un successore, abbiano l'affermazione che segue S
come successore comune. Tuttavia, nel caso di una dichiarazione if è solo il successore della dichiarazione
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
24
BNF
S. Giglio
governata ad essere alterato. Il successore di un'istruzione if con un’espressione booleana falsa è l'istruzio-
ne successiva. Così, ad esempio:
converge; begin if B1; S1; if B2; S2; if B3; S3 end; S4
fa eseguire quell'unica istruzione Si che corrisponde alla prima espressione booleana vera Bi; questo Si è
poi seguito da S4. Quindi se B1, B2 e B3 sono tutti veri, l'effetto è eseguire S1 e poi S4.
b) Un'istruzione converge può anche essere usata convenientemente selezionando una singola istruzione per
l'esecuzione così come segue:
converge; begin go to branch [i]; L1; S1; L2 : S2; L3: S3 end; S4
Se "branch [i]" assume i valori L1 , L2 , L3 per i = 1,2,3, allora la dichiarazione che segue converge ha l'ef-
fetto dell'unica dichiarazione Si seguita da S4.
2.47 Istruzione do
a) Un'istruzione do è semplicemente un modo abbreviato per riscrivere il segmento di un programma che
appare altrove. Avremo così:
do A; x: = y + z; A: r: = x + r
che è un modo alternativo di scrivere quanto segue:
B: r: = x + r; x: = y + z; A: r: =x + r
dove all'enunciato copiato è stata assegnata una nuova etichetta, B, semplicemente per evitare di avere due
enunciati con la stessa etichetta. La scelta di nuove etichette nella copia è irrilevante fintanto che la riasse-
gnazione viene eseguita in modo coerente in tutta la copia.
b) Un'istruzione do può specificare una sequenza di istruzioni da essere copiate dando due, o più, etichette.
do R, S
che rappresenta, quindi, la sequenza di istruzioni da quella etichettata R a quella etichettata S.
c) Una istruzione do può richiedere che vengano apportate determinate modifiche alla copia che essa rappre-
senta:
do R, S (x + y → x, a [i] → beta)
che si deve interpretare: per il segmento da R a S, ma con il nome "x", sostituito da "x + y" ovunque ap-
paia e con "beta" sostituito da "a [i]".
2.48 Istruzione stop
Le istruzioni stop non hanno successori, quindi rappresentano il termine operativo del processo descritto da un
programma.
2.49 Istruzione return
Un'istruzione return, scritta "return", è usata solo nei programmi che definiscono il significato delle istruzioni di
procedura. Ciò significa che la procedura definita è stata completata e che il successore dell'istruzione di proce-
dura, che ha invocato il programma di definizione, è l'istruzione successiva nel programma invocante.
2.410 Dichiarazioni procedurali
L'istruzione procedurale indica che un particolare processo deve essere eseguito impiegando quelle entità indica-
te dai parametri di input e producendo risultati che sono designati dai parametri di output. (Alcune istruzioni pro-
cedurali possono anche indicare specifiche istruzioni successive mediante un elenco di etichette o variabili di
commutazione associate a varie condizioni di uscita). Avremo così, ad esempio:
integrate (F(r) , a, b, e) = : (int) : (L)
che potrebbe indicare F(r, x) dx, che deve essere trovato con un errore minore di e (se possibile con la procedura
data), che il risultato deve essere assegnato come valore di "int" e che, se non si ottiene il risultato desiderato, il
successore di quest’istruzione dovrebbe essere quello etichettato con L. Alcune istruzioni procedurali possono
essere aggiunte semplicemente a IAL come primitive (e realizzate da subroutine in linguaggio macchina). Altre
possono fare riferimento, con il nome che le precede (ad esempio, "integrate"), a un programma IAL (cfr.:
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
25
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
dichiarazioni procedurali d 2.56) che rappresenta il processo indicato. Alcune istruzioni procedurali potreb-
bero non avere parametri di input, altre potrebbero non avere parametri di output. Quindi, un'istruzione pro-
cedurale, che produce, ad esempio, l'ottenimento di un numero da un supporto esterno, potrebbe essere:
in = :(a)
indicando che il numero deve essere assegnato come valore di a. Un altro potrebbe essere:
print (r, s, t).
Un'altra dichiarazione procedurale può specificare la sostituzione di una matrice, A, dalla sua inversa:
invert (A [,] = : (A [,])
In generale, si intende che praticamente qualsiasi processo può essere espresso da una dichiarazione procedurale.
2.5 Dichiarazioni
Le dichiarazioni in un programma IAL affermano determinati fatti che devono essere ottenuti durante tutto il
programma. Possono apparire in qualsiasi punto del programma, ma la loro posizione non è significativa.
2.51 Dichiarazioni di tipo
Una dichiarazione di tipo, booleana o intera, afferma che il valore di una variabile o funzione o elemento di un
array sarà sempre del tipo specificato. Avremo così:
boolean (a, b, c)
asserisce che qualsiasi valore assegnato a entità con i nomi a, b o c sarà cambiato in uno 0 o 1 secondo qualche
regola, t, (ad esempio, t (x) = 1 quando x = 1, altrimenti t (x ) = 0). Avremo così:
a: = x
o ancora la comparsa di una funzione b (x) in un'espressione nel programma sarebbe equivalente a t (b (x) ). Allo
stesso modo avremo:
integer (r, s)
vincola le entità con nomi r o s ad avere valori interi arrotondando i valori non interi all'intero più vicino.
2.52 dichiarazioni di array
le dichiarazioni di array specificano i limiti, superiore e inferiore, per i pedici a cui possono essere associati,
in modo significativo, gli array. Avremo così:
array (a, b, c [1: 100], r, s [-10,1: + 10,50])
indica che a, b, c sono array unidimensionali i cui pedici hanno significato solo nell'intervallo da 1 a 100
(inclusi), e che r, s sono array bidimensionali i cui il primo pedice dovrebbe essere compreso tra -10 e + 10 e il
secondo tra 1 e 50 (inclusi).
2.53 dichiarazioni di commutazione
Le dichiarazioni switch sono già state descritte sotto il titolo "Istruzioni go to" (Cfr.: 2.43).
2.54 Dichiarazioni di funzioni
Alcune funzioni possono essere definite per l'uso all'interno di un programma mediante una dichiarazione di
funzione così come segue:
g(x, y): = w + x + f(y, x)
Se nel programma, contenente la suddetta dichiarazione, compare: g (t/v , h (v) ), allora il suo valore è dato
dall'espressione:
w + t/v + f(h (v), t/v)
Si noti, in questo caso, che g (x, y) è sempre una funzione di w anche se non appare come argomento.
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
26
S. Giglio
2.55 Commenti
I commenti non influiscono sul comportamento del programma, forniscono semplicemente la possibilità di
incorporare commenti verbali in un programma. Per esempio:
comment This is the end of Section 1.
Il commento può essere arbitrariamente lungo a condizione che non contenga un separatore di istruzioni, punto
e virgola.
2.56 Dichiarazioni procedurali
Le dichiarazioni procedurali sono uniche tra le dichiarazioni: una sola dichiarazione procedurale deve precede-
re il programma a cui si riferisce. Tale dichiarazione indica che il programma IAL che segue definisce una o
più istruzioni e/o funzioni procedurali. Per esempio:
procedure branch (a): (L1, L2, L3);
begin branch: if (a < 0); go to L1; if (a = 0); go to L2; if (a > 0); go to L3 end
comprende una dichiarazione procedurale seguita da un programma di una dichiarazione composta. L'istruzio-
ne della procedura così definita è quella denominata "branch" che seleziona uno dei tre successori a seconda
che il valore dell'input sia negativo, zero o positivo. Così, dunque, sarà la dichiarazione procedurale:
branch (x - f (y)) : (a [i], BB, MM)
usato in qualsiasi programma significa, in virtù del suo programma che lo definisce: vai all'istruzione indicata
dalla variabile switch a [i] quando x - f (y) è negativo, se è zero, vai a BB, e se è positivo, vai a MM. Un
altro esempio:
procedure root (a, b), ckroot (a, b) = : (c) : (d); begin ckroot: if (a - b < 0); go to d; root: c: = sqrt (a - b);
root: = c; return end
La dichiarazione procedurale, insieme al programma, definisce una funzione, una radice e un'istruzione proce-
durale, denominata "ckroot". Il calcolo della funzione inizia con l'istruzione etichettata root, e il suo valore è
quello della variabile root, quando si incontra return. Il programma per ckroot inizia dalla prima istruzione,
denominata ckroot. Il processo corrispondente a:
ckroot (x, y/z) = : (a) : (GL)
quindi o fornisce a del valore sqrt (x - y/z) oppure, se x-y/z è negativo, specifica l'istruzione etichettata GL
come suo successore. D'altro canto
v : = r + root (m, n)
3 Descrizione formale
3.1 Generale
La Conferenza ACM-GAMM di Zurigo ha avuto due motivazioni principali nel proporre IAL:
a) Fornire un mezzo per comunicare metodi numerici, e altre procedure, tra le persone.
e,
b) Fornire un mezzo per realizzare un determinato processo su di una molteplicità di macchine, con le uni-
che differenze tra le esecuzioni di un programma su due macchine diverse essendo queste imposte dalle
differenze di lunghezza delle parole, condizioni di overflow e simili.
Sembra che IAL, come indicato da descrizioni informali qui e altrove [1], sia sufficiente per raggiungere
l'obiettivo (a).
Tuttavia, se i programmi devono essere scritti per una varietà di macchine per tradurre da IAL al linguag-
gio della macchina ospite, in modo tale da soddisfare l'obiettivo (b), devono essere adempiuti due requisi-
ti:
c) Deve esistere una descrizione precisa di quelle sequenze di simboli che costituiscono i programmi IAL
validi. Diversamente accadrà spesso che un programma che è corretto e traducibile per un programma
traduttore non lo sarà rispetto ad un altro.
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
27
Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
d) Per ogni programma valido deve esserci una precisa descrizione del suo "significato", che illustri il suo
eventuale processo o trasformazione. In caso contrario, i programmi in linguaggio macchina ottenuti
da due programmi di traduzione da un singolo programma IAL potrebbero comportarsi diversamente in
uno o più aspetti cruciali.
Finora non è esistita alcuna descrizione formale di un linguaggio indipendente dalla macchina (diversa da
quella fornita implicitamente da un programma di traduzione completo) che soddisfacesse uno dei due
requisiti di cui sopra.
Di conseguenza, come può testimoniare chiunque sia stato effettivamente coinvolto nella stesura di un
programma di traduzione, un gran numero di decisioni che riguardano l'appartenenza alla classe dei pro-
grammi legittimi e il significato dei programmi legittimi devono essere prese durante la costruzione del
programma di traduzione.
Se, quindi, IAL viene lasciato così com’è nel suo stato attuale di incompletezza e di sola descrizione infor-
male, è probabile che trascorreranno molti anni nella produzione di una serie di programmi di traduzione
che comunque non produrranno in modo affidabile programmi macchina equivalenti. In questo caso an-
dranno perduti i grandi potenziali in termini di benefici e risparmi offerti dall'obiettivo (b).
L'autore sperava di completare una descrizione formale dell'insieme dei programmi legittimi IAL, e dei
loro significati, in tempo utile per poterla presentare qui. Tuttavia, è stata completata solo la descrizione
dei programmi legittimi.
Pertanto la trattazione formale della semantica dei programmi ufficiali sarà inclusa in un successivo lavo-
ro. Il lavoro che è già stato fatto in questa direzione indica la necessità di apportare ulteriori modifiche
minori in IAL per facilitarne il completamento. Queste modifiche richiederanno l'approvazione degli ap-
positi gruppi. Poiché alcuni di questi cambiamenti sono presenti in entrambi i capitoli 2 e 3 di questo do-
cumento, non si dovrebbe assumere uno status ufficiale per le descrizioni in esso contenute, sebbene i
cambiamenti siano pochi e, per la maggior parte, lievi.
3.2 Sintassi di IAL
Nella descrizione della sintassi IAL che segue avremo bisogno di alcune convenzioni metalinguistiche per
caratterizzare varie stringhe di simboli. Per cominciare, avremo bisogno di formule metalinguistiche. La
loro interpretazione è meglio spiegata da un esempio:
Le sequenze di caratteri racchiuse tra "< >" rappresentano variabili metalinguistiche i cui valori sono strin-
ghe di simboli. I segni ": ≡" e "or" sono connettivi metalinguistici. Qualsiasi segno in una formula, che
non è una variabile o un connettivo, denota se stesso (o la classe di segni che sono simili ad esso). Giu-
stapposizione di segni e/o variabili in una formula significa giustapposizione delle stringhe denotate. Così
la formula di cui sopra fornisce una regola ricorsiva per la formazione di valori della variabile <ab>. Indi-
ca che <ab> può avere il valore "(" o "[" o quello dato da alcuni valori legittimi di <ab>, se ne può forma-
re un altro, facendolo seguire dal carattere" “(" o facendolo seguire da qualche valore della variabile <d>.
Se i valori di <d> sono le cifre decimali, alcuni valori di <ab> sono:
[(((1(37(
(12345(
(((
[86
3.31 Interi e numeri
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
28
S. Giglio
3.32 Identificatori e variabili
3.33 Sottotitoli, variabili e array
3.34 Parametri, funzioni e funzioni pure
3.35 Espressioni aritmetiche, espressioni booleane ed espressioni
John W. Backus - The syntax and semantics of the proposed International Algebraic Language
BNF
29
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf
Origini della BNF.pdf

More Related Content

More from CADZINE

Il passato intrecciato - Origine dei toponimi Finlandia e Suomi
Il passato intrecciato - Origine dei toponimi Finlandia e SuomiIl passato intrecciato - Origine dei toponimi Finlandia e Suomi
Il passato intrecciato - Origine dei toponimi Finlandia e SuomiCADZINE
 
Traduzione lettera Knuth a CACM.pdf
Traduzione lettera Knuth a CACM.pdfTraduzione lettera Knuth a CACM.pdf
Traduzione lettera Knuth a CACM.pdfCADZINE
 
Traduzione documento Backus ICIP 1959.pdf
Traduzione documento Backus ICIP 1959.pdfTraduzione documento Backus ICIP 1959.pdf
Traduzione documento Backus ICIP 1959.pdfCADZINE
 
CADZINE n° 3, giugno luglio e agosto 2016, ANNO III
CADZINE n° 3, giugno luglio e agosto 2016, ANNO IIICADZINE n° 3, giugno luglio e agosto 2016, ANNO III
CADZINE n° 3, giugno luglio e agosto 2016, ANNO IIICADZINE
 
CADZINE n° 2, maggio 2016, ANNO III
CADZINE n° 2, maggio 2016, ANNO IIICADZINE n° 2, maggio 2016, ANNO III
CADZINE n° 2, maggio 2016, ANNO IIICADZINE
 
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO III
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO IIIChi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO III
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO IIICADZINE
 
CADZINE n° 1, marzo 2016, ANNO III
CADZINE n° 1, marzo 2016, ANNO IIICADZINE n° 1, marzo 2016, ANNO III
CADZINE n° 1, marzo 2016, ANNO IIICADZINE
 
Sommari delle pubblicazioni del 2015
Sommari delle pubblicazioni del 2015Sommari delle pubblicazioni del 2015
Sommari delle pubblicazioni del 2015CADZINE
 
CADZINE n° 7, luglio 2015, ANNO III
CADZINE n° 7, luglio 2015, ANNO IIICADZINE n° 7, luglio 2015, ANNO III
CADZINE n° 7, luglio 2015, ANNO IIICADZINE
 
CADZINE n° 5, maggio 2015, ANNO II
CADZINE n° 5, maggio 2015, ANNO IICADZINE n° 5, maggio 2015, ANNO II
CADZINE n° 5, maggio 2015, ANNO IICADZINE
 
CADZINE n° 6, giugno 2015, ANNO II
CADZINE n° 6, giugno 2015, ANNO IICADZINE n° 6, giugno 2015, ANNO II
CADZINE n° 6, giugno 2015, ANNO IICADZINE
 
CADZINE n° 4, aprile 2015, ANNO II
CADZINE n° 4, aprile 2015, ANNO IICADZINE n° 4, aprile 2015, ANNO II
CADZINE n° 4, aprile 2015, ANNO IICADZINE
 
CADZINE n° 3, marzo 2015, ANNO II
CADZINE n° 3, marzo 2015, ANNO IICADZINE n° 3, marzo 2015, ANNO II
CADZINE n° 3, marzo 2015, ANNO IICADZINE
 
CADZINE n° 2, febbraio 2015, ANNO II
CADZINE n° 2, febbraio 2015, ANNO IICADZINE n° 2, febbraio 2015, ANNO II
CADZINE n° 2, febbraio 2015, ANNO IICADZINE
 
CADZINE n° 1, gennaio 2015, ANNO II
CADZINE n° 1, gennaio 2015, ANNO IICADZINE n° 1, gennaio 2015, ANNO II
CADZINE n° 1, gennaio 2015, ANNO IICADZINE
 
Raccolta sommari delle pubblicazioni 2014 anno i
Raccolta sommari delle pubblicazioni 2014   anno iRaccolta sommari delle pubblicazioni 2014   anno i
Raccolta sommari delle pubblicazioni 2014 anno iCADZINE
 
CADZINE n° 7, dicembre 2014, ANNO I
CADZINE n° 7, dicembre 2014, ANNO ICADZINE n° 7, dicembre 2014, ANNO I
CADZINE n° 7, dicembre 2014, ANNO ICADZINE
 
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzine
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzineIl bromografo inserto speciale allegato al numero di novembre 2014 di cadzine
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzineCADZINE
 
CADZINE n° 6, novembre 2014, ANNO I
CADZINE n° 6, novembre 2014, ANNO ICADZINE n° 6, novembre 2014, ANNO I
CADZINE n° 6, novembre 2014, ANNO ICADZINE
 
CADZINE n° 5, ottobre 2014, ANNO I
CADZINE n° 5, ottobre 2014, ANNO ICADZINE n° 5, ottobre 2014, ANNO I
CADZINE n° 5, ottobre 2014, ANNO ICADZINE
 

More from CADZINE (20)

Il passato intrecciato - Origine dei toponimi Finlandia e Suomi
Il passato intrecciato - Origine dei toponimi Finlandia e SuomiIl passato intrecciato - Origine dei toponimi Finlandia e Suomi
Il passato intrecciato - Origine dei toponimi Finlandia e Suomi
 
Traduzione lettera Knuth a CACM.pdf
Traduzione lettera Knuth a CACM.pdfTraduzione lettera Knuth a CACM.pdf
Traduzione lettera Knuth a CACM.pdf
 
Traduzione documento Backus ICIP 1959.pdf
Traduzione documento Backus ICIP 1959.pdfTraduzione documento Backus ICIP 1959.pdf
Traduzione documento Backus ICIP 1959.pdf
 
CADZINE n° 3, giugno luglio e agosto 2016, ANNO III
CADZINE n° 3, giugno luglio e agosto 2016, ANNO IIICADZINE n° 3, giugno luglio e agosto 2016, ANNO III
CADZINE n° 3, giugno luglio e agosto 2016, ANNO III
 
CADZINE n° 2, maggio 2016, ANNO III
CADZINE n° 2, maggio 2016, ANNO IIICADZINE n° 2, maggio 2016, ANNO III
CADZINE n° 2, maggio 2016, ANNO III
 
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO III
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO IIIChi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO III
Chi è Bruno Munari? inserto speciale allegato a CADZINE n° 1 marzo 2016 ANNO III
 
CADZINE n° 1, marzo 2016, ANNO III
CADZINE n° 1, marzo 2016, ANNO IIICADZINE n° 1, marzo 2016, ANNO III
CADZINE n° 1, marzo 2016, ANNO III
 
Sommari delle pubblicazioni del 2015
Sommari delle pubblicazioni del 2015Sommari delle pubblicazioni del 2015
Sommari delle pubblicazioni del 2015
 
CADZINE n° 7, luglio 2015, ANNO III
CADZINE n° 7, luglio 2015, ANNO IIICADZINE n° 7, luglio 2015, ANNO III
CADZINE n° 7, luglio 2015, ANNO III
 
CADZINE n° 5, maggio 2015, ANNO II
CADZINE n° 5, maggio 2015, ANNO IICADZINE n° 5, maggio 2015, ANNO II
CADZINE n° 5, maggio 2015, ANNO II
 
CADZINE n° 6, giugno 2015, ANNO II
CADZINE n° 6, giugno 2015, ANNO IICADZINE n° 6, giugno 2015, ANNO II
CADZINE n° 6, giugno 2015, ANNO II
 
CADZINE n° 4, aprile 2015, ANNO II
CADZINE n° 4, aprile 2015, ANNO IICADZINE n° 4, aprile 2015, ANNO II
CADZINE n° 4, aprile 2015, ANNO II
 
CADZINE n° 3, marzo 2015, ANNO II
CADZINE n° 3, marzo 2015, ANNO IICADZINE n° 3, marzo 2015, ANNO II
CADZINE n° 3, marzo 2015, ANNO II
 
CADZINE n° 2, febbraio 2015, ANNO II
CADZINE n° 2, febbraio 2015, ANNO IICADZINE n° 2, febbraio 2015, ANNO II
CADZINE n° 2, febbraio 2015, ANNO II
 
CADZINE n° 1, gennaio 2015, ANNO II
CADZINE n° 1, gennaio 2015, ANNO IICADZINE n° 1, gennaio 2015, ANNO II
CADZINE n° 1, gennaio 2015, ANNO II
 
Raccolta sommari delle pubblicazioni 2014 anno i
Raccolta sommari delle pubblicazioni 2014   anno iRaccolta sommari delle pubblicazioni 2014   anno i
Raccolta sommari delle pubblicazioni 2014 anno i
 
CADZINE n° 7, dicembre 2014, ANNO I
CADZINE n° 7, dicembre 2014, ANNO ICADZINE n° 7, dicembre 2014, ANNO I
CADZINE n° 7, dicembre 2014, ANNO I
 
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzine
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzineIl bromografo inserto speciale allegato al numero di novembre 2014 di cadzine
Il bromografo inserto speciale allegato al numero di novembre 2014 di cadzine
 
CADZINE n° 6, novembre 2014, ANNO I
CADZINE n° 6, novembre 2014, ANNO ICADZINE n° 6, novembre 2014, ANNO I
CADZINE n° 6, novembre 2014, ANNO I
 
CADZINE n° 5, ottobre 2014, ANNO I
CADZINE n° 5, ottobre 2014, ANNO ICADZINE n° 5, ottobre 2014, ANNO I
CADZINE n° 5, ottobre 2014, ANNO I
 

Origini della BNF.pdf

  • 1. S. Giglio Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form AIN EDIZIONI OPEN ACCESS 2023
  • 2. Artigianato Informatico Napoletano Edizioni Giugno 2023 Questa pubblicazione è Copyleft ed è basata sul principio di Open Access E’ consentita la piena fruizione, copia, modifica a patto che sia senza scopi di lucro e per pure finalità di studio e divulgazione
  • 3. S. Giglio Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form
  • 4.
  • 5. Introduzione La vicenda della notazione BNF è strettamente collegata alla fase preliminare e iniziale di sviluppo del linguaggio ALGOL in essa sono intrecciate le storie di diversi personaggi ed organizzazioni legate all’informatica degli anni ’50 e ’60. Si tratta di persone ed isti- tuzioni che vanno guardate con rispetto e che devono essere considerate a tutti gli effet- ti pioniere dell’informatica perché hanno gettato le basi della computer science con- temporanea. La storia dell’ALGOrithmic Language affonda le sue radici sia nell’Europa centrale che negli USA. Due continenti ciascuno con le sue organizzazioni di studio e ricerca sull’al- lora nascente informatica che, partendo da motivazioni diverse, ad un certo punto deci- dono di unire le forze e dare inizio allo sviluppo di un progetto internazionale. Un’idea scientifica stupenda, considerando che da pochissimo tempo era finita la seconda guer- ra mondiale e che alcuni paesi implicati nel progetto erano stati nemici. Alla fine degli anni '50, negli Stati Uniti e in Europa, la rapida proliferazione dei com- puter, unitamente ad un notevole potenziamento dell’elettronica, espansero la necessi- tà di scambiare esperienze e tecniche tra i vari centri di calcolo universitari, militari e istituzionali. Questa esigenza si avvertì forte su entrambe le sponde dell'Atlantico e, sul finire degli anni ’50, fece sì che si tenessero diversi appuntamenti preliminari tra i rap- presentanti delle organizzazioni informatiche sia americane che europee. L’obiettivo era quello di determinare un "Linguaggio di Programmazione Universale", da utilizzare su tutti i tipi di elaboratori elettronici e per tutti gli scopi. Il risultato di questi incontri è stato la prima definizione del Linguaggio Algebrico Internazionale, successivamente ribattezzato ALGOL. Lo sviluppo di ALGOL, come vedremo più innanzi, non fu lineare anzi, di fatto è stato basato su diversi malintesi e su di un dilemma tecnico iniziale che ha generato una si- tuazione di confusione babelica con altri linguaggi a causa dell'incapacità delle diverse comunità informatiche di concordare un unico linguaggio di programmazione univer- sale. Questa percezione dell’ALGOL, questa sua immagine, per così dire, di “evoluzione cao- tica” rende ancora oggi alquanto difficile elaborare una sintesi storiografica sufficiente- mente chiara, anche per la mancanza di quella prospettiva così necessaria per analizza- re i fatti costituenti un determinato fenomeno storico. Del resto dalla nascita dell’AL- GOL non è ancora passato un secolo.
  • 6.
  • 7. Sommario Capitolo 1 § 1.1 - USA anni ‘50, il background storico ……………………………………………………………………………………………. 1 § 1.2 - SHARE ed il progetto UNCOL ………………………………………………………………………………………………… 3 § 1.3 - Il MIT realizza il super computer Whirlwind ……………………………………………………………………………… 4 § 1.4 - Il Lab. di Charles W. Adams ………………………………………………………………………………………………………. 4 § 1.5 - Association for Computing Machinery ACM ……………………………………………………………………………….. 5 § 1.6 - I rapporti tra ACM e le associazioni di utenti negli anni ‘50 …………………………………………………………. 6 § 1.7 - La conferenza di Los Angeles del maggio 1957 …………………………………………………………………………….. 6 § 1.8 - Europa: il GAMM lo ZDM …………………………………………………………………………………………………………. 8 § 1.9 - Il gruppo di studio FAP …………………………………………………………………………………………………………….. 9 § 1.10 - Lo scenario informatico in Europa negli anni ‘50 ……………………………………………………………………… 10 § 1.11 - I primi contatti tra USA ed Europa per un Linguaggio Algebrico Internazionale ………………………….. 12 § 1.12 - La lettera del 19 ottobre 1957 dello ZMD all’ACM ……………………………………………………………………….. 13 § 1.13 - Come si organizzò l’ACM dopo la lettera dello ZMD ……………………………………………………………………. 14 § 1.14 - Le reazioni di SHARE alla lettera dello ZMD ……………………………………………………………………………… 14 § 1.15 - Il primo incontro tra ACM e GAMM a Zurigo …………………………………………………………………………….. 15 § 1.16 - Da IAL ad ALGOL: i motivi di una scelta ………………………………………………………………………………… 16 § 1.17 - Incontri successivi a Zurigo e il crescente interesse per il fenomeno ALGOL …………………………………. 17 § 1.18 - Traduzione dell’introduzione de: “Report on the Algorithmic Language ALGOL 60” ……………………. 17 Capitolo 2 § 2.1 - Le iniziative dell’UNESCO per l’informatica ………………………………………………………………………………... 19 § 2.2 - La nascita della BNF …………….………………………………………………………………………………………………… 19 § 2.3 - Avvertenze sulla traduzione de: “The syntax and semantics of the proposed International Algebraic Language” di John Backus …………………………………………………………………………………… 20 Traduzione de: “The syntax and semantics of the proposed International Algebraic Language” di John Backus……………………………………………………………………………………… 21 § 2.4 - La lettera di Donald Knuth per ribattezzare la BNF ……………………………………………………………………... 33 appendice Nota biografica di John W. Backus ……………………………………………………………………………………………………….. 35 Nota biografica di Peter Naur ………………………………………………………………………………………………………………. 36 La sede UNESCO di Parigi, descrizione del progetto………………………………………………………………..…………….. 37 Riferimenti ………………………………………………………………………………………………………………………………………… 39 ELLIOTT 803 il primo computer per ALGOL ……………………………………………………………………………………….. 40 ELLIOTT, la prima computer factory inglese ………………………………………………………………………………………... 42 Composizione e principio di funzionamento di un Elliott 803 ………………………………………………………………... 44 Collezione di modelli 3D ELLIOTT 803 ed accessori ……………………………………………………………………………... 46 Altri lavori di traduzione scaricabili ……………………………………………………………………………………………………... 51
  • 8.
  • 9. CAPITOLO I Background storico e motivazioni per lo sviluppo di un nuovo linguaggio di programmazione universale
  • 10. S. Giglio § 1.1 - USA anni ‘50, il background storico A ll’inizio degli anni ‘50 il numero di compu- ter negli USA cominciava ad aumentare, anche come conseguenza della pressante richiesta, da parte del governo federale, di centri di calcolo sempre più potenti, necessari per servire il crescente impegno militare e di intelligence legato alla guerra fredda. I protagonisti principali di quel momento storico, sulla scena informatica statunitense, erano le azien- de produttrici dei grandi sistemi di calcolo automati- co, le università, i militari, il governo federale e alcu- ni grandi utenti commerciali. Lo sviluppo di questi nuovi computer, tutti diversi fra loro, comporterà però anche la modifica/ creazione di altrettanti linguaggi di programmazione necessari al loro utilizzo, cosa questa abbastanza de- leteria, essendo questi non universali e con campi d’impiego molto specifici. Tutti questi aspetti, alla lunga, finiranno con il: • ledere la flessibilità d’impiego delle macchine; • far levitare i costi della programmazione; • far aumentare fortemente la dipendenza dell’utenza con i produttori. Questa situazione, poi avrà anche una grave riper- cussione sulla perdita di posti di lavoro e sulla di- sponibilità stessa delle macchine da calcolo. In questo sviluppo di fatti, i primi tentativi di au- tomatizzare la programmazione negli Stati Uniti risalgono proprio a quel periodo in cui l’utenza, sulla base di una stringente logica economica, co- minciava giustamente a pretendere l’efficienta- mento dei computer e il miglioramento dell'intero processo di programmazione. Tutto ciò accadeva a metà degli anni ’50, quando aziende e data center sponsorizzati dallo stato cominciano a costituirsi come organizzazioni di utenti per tutelare i propri diritti, ridurre la dipen- denza dai produttori e favorire la cooperazione tra utenze aventi lo stesso tipo di computer.2 Nascono così: • DUO, associazione d’utenti dei computer Da- tatron della ElectroData Corporation. 1946 Inizia il progetto Whirlwind al MIT 1950 ERA/Remington-RandUNIVAC 1101 Durante la seconda guerra mondiale, la Mari- na degli Stati Uniti si rivolge al MIT per realiz- zare un simulatore di volo destinato all’adde- stramento degli equipaggi dei bombardieri. Uno dei primi computer commerciali, il primo cliente dell'azienda fu la US Navy. Il 1101, fu progettato da ERA e costruito da Remington- Rand, effettuava calcolo ad alta velocità e memorizzava 1 milione di bit sulla sua memo- ria a tamburo magnetico. 2. Cfr.: ; Lehmann, N. Joachim , “ALGOL im Ostblock und der Weg zu Systemen von Programmiersprachen”, in Hans Dieter Hellige (ed), Geschichten der Informa- tik: Visionen, Paradigmen, Leitmotive (Springer: 2004), 255-273, p. 257. Artico- lo consultabile al seguente link di Springer link 3. Cfr.: Akera Atsushi , “Calculating a natural world. Scientists, engineers, and computers during the rise of the US cold war research” (MIT: 2007), pagg. 251- 255. Consultabile al seguente link del MIT Press direct Cfr.: “Fletcher Jones to SHARE members”, 9 agosto 1955, pag. 1. SHARE Inc. Records (CBI 21), box 1, folder 1. 4. Cfr.: “Fletcher Jones to SHARE members”, 9 agosto 1955, pag. 1. SHARE Inc. Records (CBI 21), box 1, folder 1. 1
  • 11. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form • SHARE, fondata nell'agosto del 1955 da diri- genti della difesa e appaltatori dei centri infor- matici (come, ad esempio, la Lockheed o i think tank della guerra fredda quali la Rand Corporation.), di istituzioni di sicurezza na- zionale e di società che utilizzavano tutti i com- puter IBM 701. SHARE è il più noto tra questi gruppi di utenti nonché un influente protagoni- sta nel mondo informatico americano che, all’e- poca, incarnava la caratteristica alleanza di quel periodo tra l'industria, il mondo accademico e l'esercito.3 La sua ascesa è stata determinata dal ruolo strategico che ha avuto nella promozione dello scambio di informazioni tra centri di cal- colo, grazie al sostegno attivo del colosso IBM.4 I centri di calcolo SHARE avevano rapidamente creato un ampio catalogo di programmi e con- cordato una serie di standard5 forniti dal De- partment Publication and Distribution di IBM6. Come affermerà il capo del DPD Franz Ross, che insieme, “IBM e SHARE riuscirono a creare un servizio clienti completo che forni- va ai centri di calcolo una vasta gamma di programmi pronti per essere implementati”.7 • USE, associazione di utenti dei computer UNI- VAC prodotti dalla Remington Rand. Le attività principali di queste associazioni erano: • lo scambio di informazioni tecniche sui lin- guaggi di programmazione, sistemi operativi, sistemi di database e di esperienze utente; • lo scambio e la diffusione di programmi per computer; • la standardizzazione delle tecniche di pro- grammazione; • l’abbattimento dei costi della programmazio- ne.8 Sul finire del 1950, ad aggravare ulteriormente la situazione fu la scelta infelice di alcuni centri di calcolo su larga scala di far funzionare simultanea- mente macchine diverse fra loro, fatto questo che determinò ben presto seri problemi di comunica- zione all'interno dell'aviazione della California me- ridionale e finì col minare la collaborazione tra le svariate imprese cresciute con i contratti d’appalto militari.9 Le problematiche appena citate ingenerarono tra gli utenti informatici un certo malcontento che diede luogo ad un animato dibattito quasi del tutto incentrato sul dilemma tra l’adottare un nuovo 1951 Ferranti Mark I Ferranti Mark I è il primo computer generico disponibile in commercio, un perfezionamento dei computer sperimentali Manchester "Baby" e Manchester Mark 1, sempre all'Università di Manchester. Il costruttore inglese vende il suo primo computer Mark I all'Università di Man- chester. Dopo la perdita di fondi il secondo e unico altro Mark I è stato venduto, con una grave perdita, all'Università di Toronto, dove fu ribattezzato FERUT. 1952 Grace Hopper completa A-0 system La matematica Grace Hopper completa A-0, un programma ad alto livello che consentiva all’utente di usare termini inglesi, invece dei numeri per dare istruzioni al compu- ter. Possedeva numerose caratteristiche di un compilatore moderno scritto per il computer UNIVAC I, il primo sistema informatico azien- dale commerciale negli Stati Uniti. 5. Akera (2007), op. cit., p. 272. 6. Cfr.: “A proposal relative to cataloguing 704 programs distributed by SHARE”, 24 febbraio 1956. SHARE Inc. Records (CBI 21), box 1, folder 2. 7. Cfr.: “Verbatim Transcript of the 9th Meeting, October 1 1957”, pag.36.SHARE Inc. Records(CBI21), box3,folder13. 8. Per gli inizi di SHARE cfr.: Akera Atsushi, op. cit., capitolo 7. 9. Cfr.: Ceruzzi, Paul E. “A history of modern computing”. (MIT: 2003), Cap. II 2
  • 12. S. Giglio 3 linguaggio di programmazione universale, che gi- rasse su tutte le macchine allora esistenti miglio- rando così anche la trasportabilità dei programmi, o il preservare la diversità dei linguaggi di pro- grammazione e le costose macchine ad essi asso- ciate. § 1.2 - SHARE ed il progetto UNCOL S HARE, rispetto a tutta questa situazione, decise di istituire, nel 1958, un proprio comitato ad hoc per lo studio di un Lin- guaggio Universale per computer formato da sei persone.10 Risulta emblematico un docu- mento prodotto dal comitato di studio ad hoc” che ho deciso di tradurre e riportare integralmente in questa ricerca per far comprendere meglio le pro- blematiche dell’utenza dell’epoca che, per molti aspetti, non sono poi così diverse da quelle dei no- stri giorni. The problem of programming communica- tion with changing machines: a proposed solution • Autori: J. Strong, J. Wegstein, A. Tritter, J. Olsztyn, O. Mock, T. Steel • Pubblicato su: Communications of the ACM, Volume 1, Issue 8, 01 Aug. 1958, pp 12–18 • Consultabile e scaricabile gratuitamente sul sito ACM Digital Library al link: https://dl.acm.org/ doi/10.1145/368892.368915# • Lettura online documento tradotto su Calaméo: https://www.calameo.com/ read/0060866642dd3d3b38abf • Lettura e download documento tradotto in formato PDF da Google drive dal seguente link • Lettura e download documento tradotto in formato docx da Google drive dal seguente link La traduzione comprende anche l’Appendice C, nel documento tradotto sono stati riportati tutti i dise- gni del documento originale. Questo documento mostra chiaramente quale fosse l’orientamento di SHARE in quegli anni che, del resto, era quello an- che di altre associazioni di utenti. Al di la di questo negli USA, in quel periodo, prendevano vita altri studi anche di più ampio respiro. 1951 Completato il progetto Whirlwind Una foto emblematica: 1951, Whirlwind appe- na completato, sulla destra, Joe Thompson, 18enne neo diplomato e addestrato come uno dei primi due operatori di computer. 1952 Whirlwind e il sistema di difesa SAGE Il Whirlwind fu completato nel 1951 e i costi di realizzazione furono elevatissimi. La US Navy perse l’interesse per il progetto che però resta- va ricco di preziose potenzialità. Si decise così di integrare Whirlwind nell’ambito di un nuovo progetto dell’aviazione militare USA: il SAGE (da Semi Automatic Ground Environment); l’idea era quella di far gestire a Whirlwind i dati provenienti da diversi siti radar, attraverso ap- parecchiature di rete associate per fargli poi produrre un'immagine unificata dello spazio aereo di una vasta area, su un grande scher- mo di una control room (foto in alto a destra) in modo da poter seguire eventuali intrusioni ne- miche nei cieli USA. Whirlwind fece da prototi- po fino a che la IBM, ottenuto l'appaltato, svi- luppò i computer mainframe AN/FSQ-7, che avevano un'architettura basata proprio su Whirlwind. SAGE ha diretto e controllato la risposta del NORAD contro un possibile attac- co aereo sovietico, operando in questo ruolo dalla fine degli anni '50 agli anni '80. Nella foto sopra un tipico fortino SAGE.
  • 13. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form § 1.3 - Il MIT realizza il super computer Whirlwind C on finalità strettamente legate al secondo conflitto mondiale vedeva la luce il proget- to del computer Whirlwind. Durante la se- conda guerra mondiale, la marina militare americana chiese al MIT di realizzare un simulatore di volo con cui far addestrare i propri piloti di bom- bardieri come parte del progetto ASCA (Airplane Stability and Control Analyzer). Il team del MIT, guidato da Jay Forrester e Gordon Brown, dopo aver costruito prima un piccolo simu- latore analogico, che risultò impreciso e poco flessi- bile, decise di realizzarne uno digitale, in cui le va- riabili di volo potevano essere programmate rapida- mente attraverso il software. Whirlwind è stato il primo computer in grado di vi- sualizzare testo e grafica in tempo reale, utilizzando lo schermo CRT di un oscilloscopio di grandi dimen- sioni. Successivamente, Whirlwind viene integrato nel sistema di difesa SAGE (vedi riquadri a centro pagina). La costruzione del super computer iniziò nel 1948 e richiese uno sforzo che impiegò 175 persone, tra cui 70 ingegneri e tecnici. Il budget annuale del proget- to era di un milione di dollari. Il computer fu completato il 20 aprile 1951 Questa macchina, straordinaria per l’epoca, intro- duceva oltre il concetto del real time anche la possi- bilità di inserire formule matematiche in modo di- retto. § 1.4 - Il Lab. di Charles W. Adams Nel contesto di questo progetto di calcolo su larga scala, un team di programmatori, guidati dai mate- matici Charles W. Adams e John W. Carr III, ela- borò nuove tecniche di programmazione per miglio- rare l’efficienza dei computer Whirlwind.11 Nelle parole di Adams, infatti, l’obiettivo finale del team era quello di creare una procedura in cui un problema matematico poteva “essere semplicemen- te impostato in parole e simboli e poi risolto diret- tamente da un computer senza ulteriore program- mazione.”.12 Nel contesto del progetto SAGE Robert Everett progetta un dispositivo di input, chiamato pisto- la luminosa, per dare agli operatori un mezzo per richiedere informazioni di identificazione su di un aereo rilevato. Quando la pistola lumino- sa (foto sopra) veniva puntata sul simbolo dell'aereo sullo schermo (foto in basso), si ge- nerava un evento in Whirlwind, che inviava rapidamente un feedback testuale con l'identifi- cazione, la velocità e la direzione dell'aereo. 1955 Whirlwind precursore per i dispositivi di I/O 10. Si trattava di: J. Strong, NAA; J. H. Wegstein NIST; A. L. Tritter, Lincoln Laboratory; J. Olsztyn, General Motors; O. Mock, NAA; T. Steel, SD Corp. 11. Per il progetto Whirlwind, cfr.: Kent C. Redmond, Thomas M. Smith, “Project Whirlwind: the history of a pioneer computer” (Digital Press: 1980). 12. Charles W. Adams, “Small problems on large computers”, Proceedings of the 1952 ACM national meeting, Pittsburgh, Pennsylvania (1952), pagg.: 99 – 102; John W. Carr, “Progress of the Whirlwind computer towards an automatic programming procedure”, Proceedings of the 1952 ACM na- tional meeting, Pittsburgh, Pennsylvania (1952), pagg.: 237-241. 4
  • 14. S. Giglio § 1.5 - Association for Computing Machi- nery ACM U n grandissimo collettore di conoscenze e promotore di importantissime iniziative in campo informatico negli USA, sin dalla sua fondazione, è sicuramente l’ACM, la Association for Computing Machinery che, nella vi- cenda dell’ALGOL e della BNF, ha avuto un ruolo fondamentale. Nata il 15 settembre 1947, col nome di Eastern Association for Computing Machinery, in una riunione alla Columbia University di New York, co- me conseguenza logica del crescente interesse per i computer. La sua creazione, infatti, scaturì da diver- si eventi, tra cui: • un simposio del gennaio 1947 all'Università di Harvard sulle macchine da calcolo digitale su lar- ga scala; • sei incontri, nel 1946-47, sulle macchine infor- matiche digitali e analogiche condotte dal capito- lo di New York dell'American Institute of Electri- cal Engineers (AIEE); • sei incontri, nel marzo e aprile 1947, sulle mac- chine informatiche elettroniche condotte dal Di- partimento di Ingegneria Elettrica del Massachu- setts Institute of Technology. Nel gennaio 1948, la parola "orientale" fu elimina- ta dal nome dell'Associazione, mentre nel settem- bre 1949, fu creato uno statuto con l'approvazione dei membri. Un brano della convocazione originale per la riunio- ne fondativa dell'organizzazione, del 15 settembre 1947, così recitava: "Lo scopo di questa organizzazione sarebbe quello di far progredire la scienza, lo sviluppo, la costru- zione e l'applicazione del nuovo congegno per il cal- colo, il ragionamento e la gestione delle informa- zioni". Il primo e i successivi statuti dell'Associazione han- no elaborato questa dichiarazione, anche se la so- stanza del significato resta la stessa. L'attuale costi- tuzione, infatti, afferma: "L'Associazione è un'organizzazione scientifica ed educativa internazionale dedicata a far progredire l'arte, la scienza, l'ingegneria e l'applicazione della tecnologia dell'informazione, servendo sia gli inte- ressi professionali che pubblici promuovendo lo scambio aperto di informazioni e promuovendo i più alti standard professionali ed etici". Dal The New York Times Magazine La storia segreta delle donne nella pro- grammazione La programmazione informatica una volta ave- va un equilibrio di genere molto migliore rispet- to a oggi. Che cosa è andato storto? Di Clive Thompson,13 febbraio 2019 L’articolo si apre con la testimonianza di Mary Allen Wilkes (foto sopra) che, dopo la laurea in filosofia al Wellesley College, nel 1959, si fece accompagnare dai suoi genitori al MIT, ove si rivolse all'ufficio di collocamento universitario, chiedendo se ci fosse lavoro per programmato- ri di computer. Fu assunta subito! Scrive Thompson che oggi potrebbe sembrare strano che il MIT assumesse un candidato qua- lunque senza alcuna esperienza nella pro- grammazione di computer, ma all’epoca po- chissimi avevano esperienza nella scrittura di codice. L’informatica non esisteva ancora, c'erano po- chissimi corsi universitari e nessuna specializ- zazione. (Stanford, ad esempio, ha creato un dipartimento di informatica solo nel 1965.) Le Anni ‘50/ ‘60 Donne e programmazione negli anni ‘50 e ‘60 5
  • 15. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form § 1.6 - I rapporti tra ACM e le associazioni di utenti negli anni ‘50 L ’ACM è sempre stata in stretto contatto con le associazioni di utenti statunitensi pur mantenendo un suo orientamento di più ampio respiro in ambito internazionale. A tal proposito, per lo storico Atsushi Akera, SHARE affonda le sue radici nell’ACM con cui con- divide tradizioni, obiettivi e caratteristiche.13 Sostanzialmente le associazioni di utenti, formate dalla base operativa delle macchine da calcolo, ve- devano in ACM una guida “colta” e di livello più ele- vato, essendo questa per lo più composta da docenti e ricercatori universitari, da esperti informatici del- le aziende che producevano computer nonché da figure chiave dell’intellighenzia americana dell’epo- ca. Ciò che poteva rappresentare un’ideale linea di de- marcazione tra queste due realtà erano le tematiche affrontate in seno ad esse: da una parte, l’ACM, che in quegli anni si dedicava prevalentemente allo stu- dio delle tecniche di programmazione e della mate- matica applicata; dall’altra, le associazioni impe- gnate nella ricerca di nuovi hardware sempre più convenienti e performanti. Queste differenze non si sono affatto rivelate come un ostacolo alla collaborazione, tanto che un esem- pio significativo di cooperazione tra queste organiz- zazioni sono stati proprio i meeting svoltisi nella primavera del 1957. § 1.7 - La conferenza di Los Angeles del maggio 1957 I l 9 e 10 maggio 1957 si tenne a Los Ange- les una conferenza a cui parteciparono rap- presentanti delle organizzazioni USE, SHARE e DUO e dell'ACM allo scopo di esaminare modi e mezzi per facilitare lo scambio di tutti i tipi di dati tra i diversi computer. C’è da dire che, prima di questo meeting, le tre as- sociazioni di utenti avevano lavorato molto per mi- gliorare il flusso di informazioni tra le loro macchi- ne e favorire lo scambio di programmi per la risolu- zione di determinate problematiche comuni, anche se questi sforzi si limitavano, ovviamente, all’ambi- to di competenza di ciascuna di esse. Durante il meeting il successo dello scambio di pro- grammi tra SHARE e USE, che si era rivelato molto prezioso per le installazioni su computer diversi, fu presentato come un valido esempio sulla possibilità di realizzare un «unico linguaggio informatico uni- versale» o, almeno, di ridurre il numero dei 13. Atsushi Akera solo nel 2007 ha corretto le sue opinioni su SHARE prima da lui descritta solo come un’estensione di IBM con un ruolo di semplice intermediaria con i clienti del colosso informatico americano. istituzioni che avevano bisogno di programma- tori usavano solo test attitudinali per valutare la capacità dei candidati di pensare in modo logi- co. Wilkes diventò rapidamente un mago della programmazione. Il suo primo lavoro fu sull'IBM 704, che richie- deva di scrivere in "linguaggio assem- bly". Inserire il programma nell'IBM 704 era una faccenda laboriosa, poiché non c'erano tastiere o schermi; bisognava scrivere un pro- gramma su carta e darlo a un dattilografo, che lo traduceva in buchi di una scheda perforata. Finita la trascrizione si portavano scatole con centinaia di schede a un operatore, che le in- seriva in pila (non a caso ancora oggi si ricor- re a questo termine, N.d.R.) in un lettore. Il computer eseguiva il programma e produceva risultati che erano trascritti su di una stampante. Quando il computer non produceva il risultato desiderato, bisognava esaminare attentamen- te tutte le righe di codice, cercando di dedurre l’ errore. Era necessario rileggere mentalmente ogni riga immaginando come la macchina l'a- vrebbe eseguita, trasformando così la propria mente nel computer. Trovato l’errore si riscriveva il programma e si provava a farlo girare nuovamente fino al per- fetto funzionamento. Si consideri che la capa- cità della maggior parte dei computer all'epoca era piuttosto limitata; l'IBM 704 poteva gestire solo circa 4.000 "parole" di codice nella sua memoria. Ecco perché un buon programmatore doveva essere conciso ed elegante. All’epoca si presu- 6
  • 16. S. Giglio ''linguaggi universali'' allora impiegati.14 È molto importante sottolineare che, in questo con- testo, l'aggettivo ''universale'' indicava la capacità di lavorare con qualsiasi macchina e per qualsiasi scopo computazionale, ma non aveva alcuna ambi- zione internazionale: questo tentativo era squisita- mente americano. Conseguenza del felice esito del meeting fu una ri- chiesta ufficiale, formulata dalle tre associazioni al Consiglio Nazionale ACM, di istituire un comitato di studio per: • creare un linguaggio di programmazione uni- versale, • identificare possibili aree di standardizzazio- ne, • sviluppare la ricerca sulla programmazione.15 Il Consiglio Nazionale ACM, con piena approva- zione del suo presidente entrante John W. Carr III (proprio quello del progetto Whirlwind), decise di fondare nel giugno del ‘5716 un comitato ad hoc composto da quindici membri in rappresentanza dell'industria, delle università, degli utenti e del governo federale. Si trattava di: 1. Università  Bruce Arden (University of Michigan),  Harry Huskey (University of California),  J. McCarthy (MIT),  Alan J. Perlis (Carnegie Institute of Technology),  R. Rich (Johns Hopkins University). 2. Industria e istituzioni  John W. Backus (IBM),  P. H. Desilets (Remington Rand),  D. C. Evans (Bendix Aviation Corp.),  R. Goodman (Westinghouse),  Saul Gorn (ACM),  C. Katz (Remington Rand),  A. Orden (Burroughs Corp.),  Saul Rosen (Burroughs Corp.),  William J. Turansky (Remington Rand),  Joseph H. Wegstein ( of Standards) Dal 24 gennaio 1958, sino alla fine di febbraio, il comitato tenne tre riunioni discutendo fittamente su come dovesse essere il nuovo linguaggio di program- mazione, senza però ottenere alcun risultato specifi- co. Ciò che emerse da questi incontri fu solo una bozza di un linguaggio orientato più alla risoluzione mate- matica di determinati problemi che alla reale condi- 14. Cfr.: “Recapitulation of the May, 1957, Los Angeles Meetings on Infor- mation Exchange.“. Una copia di questo atto è inclusa, come “Appendix A”, nel seguente documento: “UNCOL Committee, Report Universal Language Committee, UNCOL (Universal Computer Oriented Language)”. 8 aprile, 1958, SHARE Inc. Records (CBI 21), box 1, folder 3. D’ora in poi “Report UNCOL”. 15. Ibidem pag. 3 16. Ibidem pag. 4 meva che fossero le donne a possedere quel tipo di mentalità. Del resto avevano già svolto un ruolo fondamentale nella preistoria dell'in- formatica: durante la seconda guerra mondiale, erano proprio delle donne a gestire alcune del- le prime macchine computazionali utilizzate per decifrare i codici al Bletchley Park in Gran Bre- tagna. Negli Stati Uniti, nel 1960, secondo le statisti- che del governo, più di un programmatore su quattro era donna. Ai Lincoln Labs del MIT ne- gli anni '60, dove Mary lavorava, la maggior parte di coloro che il governo classificava come "programmatori in carriera" erano donne. Non era ancora un lavoro di alto rango. Nel 1961, la Wilkes fu assegnata a un nuovo importante progetto, la creazione del LINC che, essendo uno dei primi personal computer inte- rattivi al mondo, sarebbe stato un dispositivo rivoluzionario in grado di adattarsi a ogni ufficio o laboratorio. Il LINC essendo munito di tastiera e schermo, poteva essere programmato più rapidamente, senza schede perforate o scomode stampan- ti. I suoi progettisti avevano bisogno di Wilkes per scrivere il software che avrebbe permesso all’utente di controllare la macchina in tempo reale. Per due anni e mezzo, lei e il team hanno lavo- rato duramente sui diagrammi di flusso, riflet- tendo su come consentire alle persone di co- municare con la macchina. Due anni di lavoro folle fatto di giornate lunghissime mangiando cibo spazzatura, subendo il sessismo con la disparità nel modo in cui uomini e donne veni- vano pagati e promossi, anche se l’atmosfera Anni ‘50/ ‘60 Come si programmava negli anni ‘50 e ‘60 7
  • 17. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form visione di dati tra macchine diverse. Fu così che, il 18 aprile del ’58, il comitato nominò un sottocomi- tato per formulare le specifiche tecniche necessarie alla creazione di un nuovo linguaggio universale. Nel frattempo anche dall’altra parte dell’Oceano, il crescente sviluppo informatico in ambito scientifico e tecnologico, esigeva nuovi approcci con le macchi- ne da calcolo e attraeva irresistibilmente i migliori computer scientists del momento. Saranno proprio loro a dare agli Stati Uniti quella scossa vivificante e necessaria per realizzare il primo vero linguaggio di programmazione internazionale. § 1.8 - Europa: il GAMM lo ZDM I n Europa la Germania, ancora devastata dalle assurdità della seconda guerra mondiale e divisa tra i vincitori del tremendo conflitto, fu tra i primi paesi del continente ad investire sulla ricerca scientifica e tecnologica e che trovò in Josef Heinhold, matematico e pioniere dell’infor- matica, una figura emblematica di questa voglia di riscatto. Il 1955 fu un anno significativo per la Repubblica Federale Tedesca dato che il 9 maggio aderì alla NATO e nell’arco di pochi mesi presero vita alcuni eccellenti centri di calcolo universitari nazionali. Ma fu un evento in particolare che contribuì a rom- pere definitivamente l’isolamento della comunità informatica della Germania ovest e a celebrare la sua realizzazione di procedure di programmazione in notazione algebrica.17 Fu proprio sotto l’egida di Heinhold, della GAMM18, della NTG19 e della VDE20 che Alwin Walther organizzò, dal 25 al 27 ottobre 1955, a Darmstadt il primo Simposio sulle macchine calco- latrici elettroniche e l'elaborazione delle informa- zioni 21 Tra i relatori c'erano le più belle menti dell’epo- ca: Heinz Unger, Klaus Samelson, Sergei Alexeye- vich Lebedev, Bruno Thüring e Nikolaus Joachim Lehmann che, nel suo discorso, affermò che il tema centrale della Conferenza doveva essere il proposi- to di "creare una notazione rigorosa e universale che consentisse la conversione automatica in istruzioni per la macchina". dei Lincoln Labs era cordiale e la sensazione era quella, nonostante il trattamento economi- co, di essere tra pari intellettuali. "Eravamo un gruppo di secchioni", dice seccamente Mary e poi narra l’aneddoto di quando lei risolse per un cliente biologo, che aveva da poco acqui- stato la macchina, un diabolico problema di elaborazione dei dati, tanto da farlo ballare felice attorno al computer. Dopo tanta fatica, nel 1963, Mary Wilkes si concesse un viaggio in giro per il mondo per un anno; al suo ritorno le fu chiesto di finire di scrivere il sistema operativo del LINC, ma il laboratorio era stato trasferito a St. Louis e lei non aveva alcun desiderio di trasferirsi lì. Così l’azienda decise di spedire e installare un LINC a casa dei suoi genitori a Baltimora. Una presenza alquanto incombente (foto a sinistra), lì nell'atrio, ai piedi delle scale, un armadietto alto con ronzanti nastri magnetici e, di fronte, un box delle dimensioni di un frigori- fero pieno di circuiti: era quello il primo assag- gio di un futuro fantascientifico. Wilkes fu una delle prime persone sul pianeta ad avere un personal computer a casa sua. Suo padre, un sacerdote episcopale, era elet- trizzato; "Se ne vantava e, a chiunque incon- trava, diceva: «Scommetto che non hai un computer in salotto.»”. Grazie al lavoro di Mary, rapidamente gli utenti di LINC, in tutto il mondo, hanno utilizzato il suo codice per programmare analisi mediche e persino per creare chatbot in grado d’intervi- stare i pazienti circa i loro sintomi. Anche se Wilkes si era affermata come pro- grammatrice, desiderava ancora una vita da avvocato, così nel 1972, entrò alla Harvard Law School e, dopo la laurea, trascorse i suc- cessivi quarant’anni come avvocato. 17. Cfr.: Hartmut Petzold, “Eine Informatiktagung vor der Gründung der Informatik. Die Darmstädter Konferenz von 1955“, in R. Seising, M. Fol- kerts, U. Hashagen (eds.), “Form, Zahl, Ordnung. Studien zur Wissen- schafts- und Technikgeschichte” (Franz Steiner Verlag: 2004), pagg. 759- 782. 18. Gesellschaft für Augewandte Mathematik und Mechanik (Ass. per la Matematica e la Meccanica Applicata ) 19. Nachrichten Technische Gesellschaft (Società di Ingegneria delle Comu- nicazioni) 20. Verband der Elektrotechnik, Elektronik und Informationstechnik (Associazione di ingegneria elettrica, elettronica e tecnologia dell'informa- zione) 21. Fachtagung Elektronische Rechenmaschinen und Informationsverarbei- tung Cfr.: https://link.springer.com/article/10.1007/BF02808623 8
  • 18. S. Giglio Più in particolare, quella conferenza rafforzò anche i legami tra i gruppi informatici della Germania ovest, della Svizzera e degli Stati Uniti. A tal riguardo, la presenza Alston Scott Householder, all’epoca presi- dente di ACM, risultò essere determinante per av- viare i successivi scambi tra le varie comunità che infine giungeranno ad ALGOL.22 Su questa scia Alwin Walther suggerì la formazione di un apposito gruppo di lavoro che nascerà, nel 1956, sempre in seno alla GAMM, denominato (Programmierungsausschuß) Comitato tecnico per la programmazione (FAP). Ovviamente anche il gruppo europeo era ben consa- pevole dell'esistenza dei tanti linguaggi di program- mazione in circolazione. C’è da dire che in Germania l’idea di adottare una notazione matematica per programmare i computer era stata presa in considerazione sin dal 1940 e con- tinuò ad essere perseguita fino alla Conferenza di Darmstadt. Anche Eduard Stiefel e Heinz Rutishauser presso l'Istituto di matematica applicata all’ingegneria dell'ETH di Zurigo avevano sviluppato, tra 1949 e il 1952, alcune idee in questo senso.23 § 1.9 - Il gruppo di studio FAP C omposto da otto membri, questo gruppo avrebbe dovuto ideare, al pari del suo omologo statunitense, un nuovo linguag- gio di programmazione algebrico capace di girare sul maggior numero di macchine possibi- le. Anche il FAP, dopo poche riunioni, giunse alla conclusione che piuttosto che crearne un altro era necessario fare uno sforzo verso l'unificazione. Mi preme di sottolineare che, al pari di alcuni componenti del gruppo di studio nominato dall’ACM negli USA, anche per il FAP su taluni di loro non esistono notizie in rete nonostante ore e ore di ricerche passate su browser e motori di ri- cerca diversi Sono così giunto alla conclusione, visto il particolare periodo storico trattato, che quei personaggi che qui riporto col solo cognome (che forse era anche di fantasia), senza alcun link (verso Wikipedia o altri siti storico biografici per l’informatica), o erano delle spie infiltrate da istituzioni governative dell’epoca o che siano stati talmente inetti da non riuscire a pro- durre risultati scientifici tali da dover esser ricordati ai posteri, anche se ciò sembra essere alquanto im- Anni ‘50/ ‘60 Come si programmava negli anni ‘50 e ‘60 Mary Wilkes oggi (foto sopra con la tastiera del LINC tra le mani) è in pensione, vive a Cam- bridge, nel Massachusetts, ha i capelli bianchi e ancora i modi gentili con quel sorriso pronto e raggiante che si può vedere nelle foto degli anni '60, quando posava accanto al LINC. Occasionalmente tiene discorsi per studenti di informatica e, quando parla con loro, percepi- sce tutto il loro stupore nell’apprendere che le donne sono state le prime imponenti innovatrici del settore aziendale statunitense. Attraverso questi incontri si è resa anche conto che il mondo informatico attuale è, sorprenden- temente, meno popolato di donne e, per molti versi, meno accogliente nei loro confronti ri- spetto a quello dei suoi tempi. Infatti, secondo i dati del governo federale USA, la percentuale di donne impiegate nelle professioni informatiche e matematiche dopo aver raggiunto il picco del 35% nel 1990 ha subito una flessione tanto che, nel 2013, la presenza femminile è calata al 26 percento, cioè molto al di sotto della quota nel 1960. Estratto tradotto e riassunto dall’articolo: The Secret History of Women in Coding - Compu- ter programming once had much better gender balance than it does today. What went wrong? Di Clive Thompson, pubblicato sul The New York Times il 13 febbraio 2019 consultabile gratuitamente, una sola volta, al seguente link 23. Cfr.:JeanSammet,“Programminglanguages.Historyandfundamentals”(Prentice- Hall:1969),pag.132-172.Cfr.:DonaldKnuth,LuisTrabbPardo,“Theearlydevelopment ofprogramminglanguages”,inJackBelzer,AlbertG.Holzman,AllenKent(eds.),Ency- clopediaofComputerScienceandTechnology,vol.7(MarcelDekker:1977),pag. 66 -73. 9
  • 19. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form probabile. Detto questo ecco gli aderenti al FAP:  Friedrich L. Bauer,  Hermann Bottenbruch,  ? Graeff,  Peter Läuchli,  ? Paul,  ? Penzlin,  Heinz Rutishauser,  Klaus Samelson § 1.10 - Lo scenario informatico in Euro- pa negli anni ‘50 L e grandi novità in ambito informatico, che gravitavano sempre di più anche in terri- torio europeo, non furono accolte con lo stesso slancio degli Stati Uniti e questo, anzitutto, per una differenza di scala: • A quel tempo il numero di computer in Euro- pa era alquanto esiguo se confrontato con quello degli USA e della Gran Bretagna, e ciò rese meno critico il bisogno di una collabora- zione tra i vari paesi europei.24 • I programmi di ricerca militare dei paesi eu- ropei, erano di scala molto ridotta sempre se confrontati con quelli degli USA, e ciò fece esercitare meno pressione sullo sviluppo del- la programmazione. Un’altra grande differenza sussisteva anche nel contesto istituzionale dei gruppi informatici euro- pei, spesso integrati negli istituti matematici uni- versitari,25 cosa questa che li rendeva, probabil- mente, meno desiderosi di implementare la pro- grammazione informatica dedicata prettamente al calcolo scientifico, con la gestione di tecniche tipi- che dell’ambiente commerciale, industriale e mili- tare. Infine, la prima priorità dei centri di calcolo euro- pei dell’epoca era soprattutto quella di stabilire saldi rapporti con i loro omologhi americani e bri- tannici invece di una semplice collaborazione for- male, e questo prim’ancora che con gli stessi grup- pi scientifici dei propri paesi. Nonostante questa tendenza molto diffusa, possia- mo trovare alcuni importanti esempi di collabora- zione europea nell'informatica di quel periodo26 come, ad esempio, quella del gruppo di Stiefel e 24. Suquest’argomentoaffrontatoda Rutishausercfr.:Knuth,Pardo,op.cit.,pag.24-29; inoltrecfr.:HarmutPetzold,“RechnendeMaschinen.EinehistorischeUntersuchung ihrerHerstellungundAnwendungvomKaiserreichbiszurBundesrepublik“(VDIVerlag: 1985),p.484-487. 25. Nel1955nonc'eranessunpaeseeuropeonelcontinentecon10computerallavoro.In confronto,gliStatiUnitineavevanopiùdi80eilRegnoUnitopiùdi25.Fonte:William Asprey,DonaldD.Beaver“MarketingtheMonster:AdvertisingComputerTechnology”, July1986AnnalsoftheHistoryofComputing8(2):127-143 Bruce Arden John W. Backus A. Householder Harry Huskey J. McCarthy Alan J. Perlis Saul Rosen Eduard Stiefel Heinz Unger Alwin Walther F. L. Bauer N. J. Lehmann H. Rutishauser Klaus Samelson Josef Heinhold Peter Läuchli S. A. Lebedev 1955 Personaggi storici ACM GAMM ACM GAMM 10
  • 20. S. Giglio Rutishauser all'ETH di Zurigo con quello di Alwin Walther del Politecnico di Darmstadt e quello composto da Robert Sauer, Hans Piloty, Friedrich L. Bauer e Klaus Samelson dell'Università di Mo- naco. Questa collaborazione si rafforzò ulteriormente dopo l'ormai noto simposio di Darmstadt che fu un evento cruciale per la Comunità informatica della Germania occidentale.27 In quella conferenza Heinz Rutishauser infatti spiegò la necessità di favorire una futura «notazione algoritmica unifi- cata».28 Su quest’idea, Walther suggerì d’iniziare ad unifi- care il design per la notazione dei programmi scritti nei rispettivi centri di calcolo e, nel maggio del 1956 con il presidente della GAMM, fece isti- tuire una commissione per la programmazione orientata allo studio sulla fattibilità di unificazione (Comitato Tecnico Programmazione GAMM).29 Non ci sono prove riguardo all’attività di questo comitato. Secondo i resoconti retrospettivi, esso si concentrò inizialmente solo sulla terminologia, le tecniche di traduzione e la notazione algebrica.30 I resoconti suggeriscono anche la possibilità che i rappresentanti di Zurigo, Monaco, e Darmstadt (o gruppo ZMD) non abbiano condiviso tutte le in- formazioni con i colleghi del comitato GAMM del- la DDR, specialmente in relazione alle comuni tecniche di traduzione e notazione algebrica.31 Ec- co perché forse oggi è così difficile conoscere il li- vello di sviluppo raggiunto dal gruppo ZMD quan- do propose di realizzare un linguaggio comune con l'ACM nell'ottobre 1957. Luoghi & loghi I luoghi del IAL in Europa 26. MinaRees,“AppliedmathematicsinWesternEurope”,ONRReport,1948,p.1.International ComputingCollection(CBI62),box3,folder11,CharlesBabbageInstitute,Univ.ofMinnesota, Minneapolis(d’orainpoi,CBI). 27. Attipubblicaticome:J.Wosnik(ed.),“ElektronischeRechenmaschinenundInformationsverar- beitung.ElectronicDigitalComputersandInformationProcessing”.Nachrichtentechnische Fachberichte,Bd.4(Vieweg&Sohn:1956). 28. Sull’amiciziafraF.L.BauereA.S.Householder,cfr.:Petzold(1985),op.cit.,pag.488;cfr.:F.L. Bauer,“MemoriesofAlstonHouseholder(1904-1993)“.In:http://www3.math.tuberlin.de/ householder_2008/Cleve.html(15dicembre2009).Cfr.:J.Wosnik,op.cit.,pag.143.Klaus SamelsonespresseopinionisimiliinunsimposioaDresda.Cfr.:KlausSamelson,“Problemeder Programmierungstechnik”,BerichtüberdasInternationaleMathematikerKolloquium.Aktuelle ProblemederRechentechnik,Dresden,22.bis27.November1955(VEBDeutscherVerlagder Wissenschaften:1957),pag.61-68. 29. Wosnik,op.cit.,p.143. 30. Lehmann,op.cit.,p.257. 31.F.L.BauereN.JoachimLehmanhannospiegatobrevementeleattivitàdiquestocomitato. Cfr.:Bauer,op.cit.;Leman,op.cit. Il Politecnico di Darmstadt Il Politecnico di Monaco Il Politecnico di Zurigo 11
  • 21. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form § 1.11 - I primi contatti tra USA ed Europa per un Linguaggio Algebrico Internazionale L a collaborazione tra USA ed Europa per il progetto comune di un innovativo linguag- gio di programmazione internazionale non nasce dal nulla. Infatti, dalla lettera32 che scrissero i rappresentati del gruppo ZMD a Carr, di cui parleremo più innanzi, emerge che erano in con- tatto con gli USA almeno dall'agosto del 1957, cioè da quando Friedrich L. Bauer e Hermann Bot- tenbruch avevano visitato diversi centri di calcolo americani.33 Bauer, a tal proposito, racconta che il loro tour era stato sponsorizzato dall'Office of Naval Re- search, un ente governativo degli Stati Uniti, e reso possibile anche dai contatti del suo capo, Robert M. F. Sauer, con la NATO. Durante il loro tour, Bauer e Bottenbruch incontra- rono Alan Jay Perlis (foto a lato), vennero a cono- scenza del linguaggio informatico MATH- MATIC sviluppato dal team capitanato da Charles Katz con la supervisione di Grace Hopper e pro- dotto dalla Remington Rand nonché delle diverse iniziative di SHARE nell’ambito della programma- zione. I due informatici europei, in cambio, illustrarono ai loro colleghi americani il proprio progetto di un tra- duttore per formule. C’è anche da aggiungere che il tour dei due studiosi faceva parte di una più ampia iniziativa di Walther per rafforzare i legami con il mondo informatico americano. Alla base di questi contatti c’era anche una propo- sta presentata dal National Joint Computer Committee, una umbrella organization,34 all'UNESCO nel novembre 1956 per indire una conferenza internazionale sull'elaborazione delle informazioni.35 Questo progetto dell’NJCC era fo- riero di altre importanti iniziative dell'ammini- strazione Eisenhower come il progetto Atoms for Peace (1955) e quello dell’Anno geofisico internazionale (1957–1958). Lo scopo finale era comunque quello di servire da una parte la scienza e dall’altra la politica estera americana, rafforzando nel contempo la cooperazio- Nella foto in alto, l’imponente edificio sede dall’ACM, i cui uffici sono situati al decimo piano del 1601 Broadway Street in New York, di cui si vede l’ingresso nella foto in basso. Nel cerchietto rosso, la targa dell’ACM posta all’ingresso dello stabile 32. H. Rutishauser, K. Samelson, F. Penzlin, P. Läuchli, F. Bauer, H. Bottenbruch lettera a JohnW.CarrIII,19ottobre1957.CopiatradottainingleseJ.W.Carr,inclusacomeAppen- dixAinReportUNCOL.IldocumentoèconsultabilesulsitoComputerHistoryMuseum's Software Preservation Group all’indirizzo: Proposal for a Universal Language for the Description of Computing Processes (softwarepreservation.net) (Il sito è http ma non ha contenuti pericolosi scansione con Virus Total). 33. F.L.Bauer,op.cit. 34. Organizzazione ombrello. Serve, in questo caso, a facilitare la cooperazio- ne tra organizzazioni che operano tra paesi diversi risolvendo eventuali complicazioni burocratiche. 35.National Joint Computer Committee, “Proposal for an International Confe- rence on Information Processing Systems”, presentata dal NJCC, il 1 novem- bre 1956. UNESCO Archives, Box International Conference on Information Processing 1959 - France, folder Part I. Luoghi & loghi La sede operativa dell’ACM 12
  • 22. S. Giglio ne scientifica occidentale. Della stessa natura erano anche le attività di Wal- ther, compreso i contatti ACM-GAMM del 1957, che facevano parte di questo tentativo di costruire una comunità atlantica di scienziati.36 Finito il tour americano di Bauer e Bottenbruch, il gruppo ZMD si incontrò a Lugano, appena due setti- mane dopo il primo lancio dello Sputnik, il 4 ot- tobre 1957. Ciò era un primato assoluto per l’URSS dal momen- to che gli USA non avevano ancora mosso un passo in questa direzione.37 Per lo storico statunitense John Krige quest’evento fu un forte impulso che favorì ulteriormente la cooperazione tecnologico- scientificatransatlantica.38 È molto probabile, quindi, che quella notizia abbia agito da catalizzatore per ACM - GAMM, tanto che da quel momento, gli eventi cominciarono a svolger- si rapidamente. § 1.12 - La lettera del 19 ottobre 1957 del- lo ZMD all’ACM A ppena quindici giorni dopo il lancio del- lo Sputnik I, infatti, e cioè il 19 ottobre 1957, F. Bauer, H. Bottenbruch, P. Läuchli, F. Penzlin, H. Rutishauser e K. Samelson, scrissero una lettera indirizzata al Prof. John W. Carr III, presidente dell'ACM. In essa proponevano un meeting privato tra l'ACM e la GAMM per concordare un "linguaggio comune di formule" e tentare così di fermare la prolifera- zione dei linguaggi di programmazione sia negli Stati Uniti che in Europa.39 Più in particolare, suggerivano di creare un “linguaggio standardizzato di formule” per i calcoli scientifici, basato su semplici notazioni matemati- che, e in grado di essere implementato su qualsiasi computer.40 In effetti questo era sostanzialmente il progetto del “traduttore di formule” del gruppo ZMD, che avrebbe dovuto essere esteso ad altri gruppi euro- pei. La lettera si concludeva con l’auspicio “di espandere il cerchio per mezzo dei rappresentanti di Inghilter- ra, Olanda e Svezia".41 Alla fine, però, all'incontro  Sputnik 1, inizio dell’Era Spaziale Il radiotelescopio Lovell è il più grande tra quel- li dell'osservatorio Jodrell Bank, situato nei pressi di Goostrey, Cheshire, nell'Inghilterra nord-orientale. Al momento della sua costruzione, nel 1955, era il più grande radiotelescopio ad antenna orientabile del mondo, con ben 76,2 m di diametro. È stato ri- nominato Lovell Telescope nel 1987 in onore di Bernard Lovell. Il telescopio divenne operativo nell'estate del 1957, giusto in tempo per il lancio dello Sputnik 1, ed era l'unico al mondo in grado di tracciare, tramite radar, il razzo di richiamo del sa- tellite che localizzò poco prima della mezzanotte del 12 ottobre 1957. 36. Lettera di Isaac L. Auerbach a Pierre Auger, 22 aprile 1957. UNESCO Archives, Box International Conference on Information Processing 1959 - France, folder Part I. In questa lettera Auerbach informa il capo del dipar- timento scientifico dell'Unesco, Pierre Auger, dei suoi contatti con Alwin Walther che aveva appena partecipato all'ultima riunione del NJJC a Chicago. 37. NJCC, op.cit. 38. Ibidem, pag. 9, 10. 39. H. Rutishauser, K. Samelson, F. Penzlin, P. Läuchli, F. Bauer, H. Bottenbruch lettera a John W. Carr, del 19 ottobre 1957. Copia tradotta in inglese da J. W. Carr, e inclusa comeAppendixAinReportUNCOL. 40. Ibidem,pag.2 13
  • 23. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form parteciparono solo americani, tedeschi e svizzeri. § 1.13 - Come si organizzò l’ACM dopo la lettera dello ZMD S ubito dopo aver ricevuto la proposta del gruppo ZMD, Carr inviò una comunicazione al Consiglio nazionale ACM e alle associazio- ni di utenti riportante una traduzione della lettera originale dello ZDM nonché tre proposte: • una per stabilire la data della prima conferenza, • una per decidere se invitare alla conferenza anche i rappresentanti francesi e sovietici.42 • una per la composizione della delegazione ameri- cana. Quest’ultima doveva includere sei persone: tre rap- presentanti dei gruppi di utenti (SHARE, USE e DUO) e tre delle università (compreso lo stesso Carr); si dava per scontato che tutti i rappresentanti avessero familiarità con la ricerca teorica più avan- zata nella programmazione.43 Fatto questo l’ACM indisse due meeting prepara- tori di studio sulle caratteristiche che avrebbe dovu- to avere il nuovo linguaggio e, in una terza riunione tenutasi a Filadelfia il 18 aprile 1958, invitò F.L. Bauer, in rappresentanza del sottocomitato GAMM, che presentò la bozza del concept europeo di lin- guaggio.44 Entrambi i progetti erano validi ed aveva- no molte caratteristiche in comune, ma quello ame- ricano risultò più pratico.45 § 1.14 - Le reazioni di SHARE alla lettera dello ZMD L a circolare di Carr provocò un dibattito in- terno all'Executive Board di SHARE in me- rito alla posizione che l'organizzazione avrebbe dovuto adottare in relazione alla prevista conferenza ACM-GAMM; il presidente Francis V. Wagner e il segretario Herbert S. Bright rappresentavano le due posizioni principali all'inter- no del consiglio.46 Wagner era uno dei papaveri dell'industria aeronau- tica della California meridionale ed era apertamente contrario all'idea di un linguaggio di programmazio- ne universale poiché non ne vedeva alcun vantaggio concreto dal suo sviluppo e pensava, addirittura, che fosse impossibile realizzarlo. Era invece un fer- SPAZIO Scudo termico anteriore Scudo termico posteriore Batterie allo zinco D 200 trasmettitore radio Antenna Lo Sputnik 1, fu il primo satellite artificiale ad essere stato mandato in orbita intorno alla Terra. Venne lanciato dal cosmodromo di Bajkonur (Foto grande in alto) dall'Unione Sovietica raggiungendo un'orbita ellittica bassa il 4 ottobre 1957; rimase in orbita per tre settimane prima che le sue batterie si esaurisse- ro, quindi continuò a orbitare per altri due mesi pri- ma di rientrare nell'atmosfera distruggendosi. Era costituito da una sfera levigata in lega di alluminio (93,8% alluminio, 6% magnesio, 0,2% titanio) del peso di 83,6 kg, avente diametro di 58 cm, con quattro antenne radio esterne per tra- smettere gli impulsi. 41.Ibidem,pag.3 42. JohnW.CarrtoACMCouncil,26ottobre1957,pag.2.In:ReportUNCOL. 43. Ibidem, pag. 3 44.Cfr.: A. J. Perlis “The American side of the development of Algol” in ACM SIGPLAN Notices, Volume 13, Issue 8, agosto 1978, pagg. 3 – 14, consul- tabile liberamente al link: https://doi.org/10.1145/960118.808369 45. Cfr.: Heinz Rutishauser, “Description of ALGOL 60”, ed. F. L. Bauer et al. in “Handbook for Automatic Computation” (Berlin: Springer-Verlag, 1967) vol. 1, pag. 5. 46. Per la loro posizione cfr.: Francis V. Wagner to John W. Carr, November 22 1957; H. S. Bright to John W. Carr, November 26, 1957. In: Report UNCOL. Circa F. V. Wagner, cfr.: Atsushi Akera, op.cit., pag. 253. Circa H.S. Bright, cfr.: Eric A. Weiss, “Biographies”, in Annals of the History of Com- puting, 10, 3 (1988): 217-218. 14
  • 24. S. Giglio vente sostenitore dell'iniziativa UNCOL e sulla so- pravvivenza dei molteplici linguaggi di programma- zione. Bright era anch’egli una figura di risalto in SHARE e, a differenza di Wagner, aveva una mentalità molto più aperta dal momento che lavorava nell’ambito della ricerca. Bright non pensava ad un nuovo linguaggio di programmazione, bensì all'idea di raggiungere "un accordo generale sugli attributi di base dei linguaggi di origine"47, ne- cessario a facilitare la compatibilità tra le varie macchine da calcolo dell’epoca. Oltre a Bright, all'interno di SHARE, c'erano figu- re molto influenti, come e J. H. Wegstein, che so- stenevano la linea di realizzare un nuovo linguag- gio standardizzato simile al FORTRAN. Altri anco- ra, invece, erano ugualmente scettici su entrambe le soluzioni.48 Alla fine il comitato esecutivo di SHARE raggiunse un compromesso molto delicato: mantenere una strategia basata sulla prudenza, in relazione all'i- niziativa ACM- GAMM, per evitare di dare l'im- pressione sia di un’adesione piena che di un totale rifiuto. § 1.15 - Il primo incontro tra ACM e GAMM a Zurigo D al 27 maggio al 2 giugno 1958, ebbe finalmente luogo l'incontro congiunto ACM-GAMM presso l'ETH di Zurigo.49 All’incontro parteciparono: • per il GAMM Friedrich L. Bauer, Hermann Bot- tenbruch, Heinz Rutishauser e Klaus Samelson; • per l'ACM John W. Backus, Charles Katz, Alan Perlis e Joseph Henry Wegstein Nel meeting di Zurigo si analizzarono i pro ed i contro di UNCOL e di IAL e alla fine emersero quattro punti programmatici inerenti il nuovo lin- guaggio che sarebbe dovuto essere: 1. il più vicino possibile alla notazione matemati- ca standard e leggibile con poche ulteriori spie- gazioni; 2. utilizzabile per la descrizione dei processi infor- matici nelle pubblicazioni; 3. traducibile meccanicamente in programmi macchina; 4. indipendente dalla macchina.50 Il primi tre punti fecero sorgere alcuni problemi a causa delle consistenti differenze tra linguaggio di pubblicazione e quello di programmazione, senza contare quelli inerenti ai simboli grafici da impiega- 47. H. S. Bright to John W. Carr, pag. 4. In: Report UNCOL. 48.Per le differenti posizioni interne a SHARE, cfr.: Panel discussion on uni- versal languages (one set of notes). In: Verbatim Transcript of the SHARE 10th Meeting, 26-28 febbraio 1958, Appendix E. SHARE Inc. Records (CBI 21), box 3, folder 16. 49. Cfr.: A. J. Perlis, K. Samelson, “Preliminary report. International Algebraic Language”, CommunicationsoftheACM, 1,12(1958):8-22. 50. Ibidem,pag.9  Sedi storiche del GAMM e dell’ETH 15
  • 25. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form re come, ad esempio, quello per la notazione deci- male: gli americani erano abituati al punto e gli eu- ropei alla virgola.51 Raggiunta questa soluzione l'incontro congiunto si concluse con successo e fu riassunto con la pubblica- zione del Preliminary Report: International Alge- braic Language.52 Per risolvere queste problematiche descrittive, Weg- stein propose di definire il linguaggio su tre diversi livelli di rappresentazione: • riferimento, • hardware, • pubblicazione. Già da questo primo incontro comparve il nome AL- GOL (abbreviazione di ALGOrithmic Language), poi definitivamente adottato nel 1959, anche se al mo- mento gli fu preferito ancora IAL § 1.16 - IAL → ALGOL: i motivi di una scelta S e ci fermiamo un istante a riflettere e poi consultiamo Bing, Google o Wikipedia ci rendiamo subito conto che negli anni ’50 negli USA erano presenti sul mercato alme- no tre linguaggi di programmazione orientati alle formulazioni algoritmiche: FORTRAN, IT e MATH-MATIC, ma sia gli americani che gli euro- pei non li avevano ritenuti una base valida su cui formulare le loro proposte. Perché? A fornire una risposta a questa domanda è il Prof. Huub de Beer: “IT e MATH-MATIC non erano sufficienti o ben co- nosciuti. FORTRAN, d'altra parte, anche se era ben noto, ma non piaceva agli americani che volevano minare il dominio di IBM. Oltretutto, il sottocomi- tato ACM aveva proposto una nuova lingua. La combinazione delle due proposte è diventata IAL: un nuovo linguaggio algoritmico come altri lin- guaggi algoritmici. Il motivo per cui IAL doveva diventare il linguaggio algebrico internazionale non era perché fosse migliore degli altri linguaggi di programmazione, ma perché era indipendente dalla macchina e rappresentava un compromesso tra le due comunità informatiche con tutto il poten- ziale per diventare parte di uno sforzo veramente internazionale.”.53 51. Perlis,“TheAmericanSideoftheDevelopmentofAlgol”pag.6 52. A.J.Perlis,K.Samelson,Op.cit. 53. Huub de Beer, “The History of the ALGOL Effort”, 2006, consultabile al link: https:// heerdebeer.org/ALGOL/creation.html CULTURA 16
  • 26. S. Giglio § 1.17 - Incontri successivi a Zurigo e il crescente interesse per il fenomeno AL- GOL N on ancora nella quotidianità della popo- lazione occidentale di quei tempi, ma in alcune aule e laboratori universitari, in alcuni centri di ricerca governativi e in- dustriali il fenomeno ALGOL rappresentava uno di quei semi fecondi da cui, in pochi lustri, avrebbe vi- sto la luce l’informatica così come la conosciamo ai nostri giorni. Lo sviluppo del nuovo linguaggio internazionale era diventato una sorta di passaparola tra i cervelloni dell’epoca e veniva visto da molte università come una palestra con cui far esercitare i propri iscritti più talentuosi. Ogni nuovo incontro, ufficiale e non, tra ACM e GAMM prima e per presentare poi ALGOL alla co- munità scientifica internazionale vedeva man mano aumentare il numero di partecipanti provenienti da nuovi paesi sempre più interessati al nascente lin- guaggio informatico. Lo scopo dei meeting era quello di confermare i tra- guardi acquisiti, correggere errori, dare nuovi orien- tamenti alla stesura del linguaggio e preparare i ma- teriali su cui si sarebbe discusso nel prossimo incon- tro. § 1.18 - Traduzione dell’introduzione de: “Report on the Algorithmic Language AL- GOL 60” N ell’introduzione di questo prezioso do- cumento, che rappresenta un’istanta- nea di quel periodo, si concentra tutta la vicenda iniziale di ALGOL e della BNF. Dedicato alla memoria di William Turanski, il giovane ricercatore del gruppo americano ucciso da un’automobile pochi giorni prima della Confe- renza del Gennaio 1960, il report raccoglie i mate- riali di: J. W. Backus, F. L. Bauer, J. Green, C. Katz, J. McCarthy, P. Naur (come editore), A. J. Perlis, H. Rutishauser, K. Samelson, B. Vauquois, J. H. Wegstein, A. van Wyngarden, M. Woodger Ho tradotto e organizzato l’introduzione del report perché ci fornisce un’eccellente linea temporale attraverso cui si può apprezzare il crescendo del fenomeno ALGOL che, in pochi mesi, riesce a coinvolgere e conquistare nuovi studiosi di diversi paesi. Sfondo. Dopo la pubblicazione del preliminary report su AL- GOL, stabilito nella Conferenza di Zurigo del 1958, cominciò a COMMUNICATIONS OF ACM Sopra la copertina di CACM, del maggio 1960, con la foto di William J. Turanski alla cui memoria fu dedicato anche il Report on the Algorithmic Language ALGOL 60 di cui uno stralcio è riportato sulla destra. 17
  • 27. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form svilupparsi un notevole interesse per il nuovo linguaggio di pro- grammazione. Infatti, già dopo l’incontro informale tenutosi a Magonza nel novembre 1958, una quarantina di persone provenienti da diver- si paesi europei, particolarmente interessate all’argomento, ten- nero poi una propria conferenza a Copenaghen, nel febbraio del 1959, circa la realizzazione dell'ALGOL. In questa conferenza fu formato un apposito "gruppo hardware" per lavorare in modo cooperativo con gli altri gruppi ACM - GAMM, fino al livello della scrittura del codice sul nastro di carta perforato, e si decise di pubblicare, col patrocinio della Regnecentralen di Copenaghen, un Bollettino ALGOL curato da Peter Naur, che servì da forum per approfondire ulteriori scambi di idee. Durante la Conferenza ICIP del giugno 1959 a Parigi si ten- nero diversi incontri, sia formali che informali che rivelarono alcune incomprensioni circa gli intenti del gruppo che era il responsabile principale della formulazione del linguaggio, pur riconoscendo allo stesso un ampio apprezzamento per il notevo- le sforzo richiesto. Il risultato dei vari dibattiti fu quello di indire un meeting inter- nazionale nel gennaio 1960 per affinare ALGOL e preparare un rapporto finale. Nella Conferenza europea ALGOL di Parigi del novembre 1959, alla quale presero parte una cinquantina di persone, furo- no selezionati sette rappresentanti europei per partecipare all’imminente conferenza del gennaio 1960; essi rappresentava- no le seguenti organizzazioni: • Association Française de Calculi, • British Computer Society, • Gesellschaft für Augewandte Mathematik und Mechanik, • Nederlands Rekenmachine Genootschap e tennero un'ultima riunione preparatoria a Magonza nel di- cembre 1959. Nel frattempo, negli Stati Uniti, si era stabilito che chiunque vo- lesse suggerire modifiche o correzioni all'ALGOL era pregato di inviare i propri commenti alla rivista Comunications ACM, dove sarebbero stati pubblicati. Questi commenti sarebbero poi diventa- ti base di attenta valutazione per le successive modifiche di AL- GOL. Oltre a questi felici sviluppi, le organizzazioni SHARE e USE, già rappresentate nel Comitato ACM sui linguaggi di programmazio- ne, decisero di istituire dei propri gruppi di lavoro ALGOL. Nel novembre 1959, il Comitato ACM si riunì a Washington ove analizzò tutti i commenti su ALGOL che erano pervenuti a Comu- nications ACM e selezionò sette rappresentanti da inviare alla prossima conferenza internazionale del gennaio 1960. I rappresen- tanti tennero un incontro preparatorio a Boston nel dicembre 1959. Uno dei primissimi magazine di informatica Communications of the ACM è la rivista mensile della Association for Computing Machinery (ACM). Fu fondata nel 1958 e Saul Rosen fu il suo primo caporedattore. Il magazi- ne è a metà strada tra una rivista scientifica e una di nicchia. ACM pubblica anche una varietà di riviste più teoriche. Il ma- gazine è inviato a tutti i membri ACM. L'attenzione si concentra sulle implicazioni pratiche dei pro- gressi nella tecnologia dell'informazione e sui problemi di ge- stione ad essa associati. Il contenuto è soggetto a peer review e gli articoli pubblicati sono spesso riassunti di ricerche che possono essere pubblica- ti anche altrove. Il materiale pubblicato deve essere accessibi- le e rilevante per un vasto pubblico di lettori che abbiano una certa esperienza in tutte le aree dell'informatica e dei sistemi informativi. Dal 1960 in poi, CACM pubblicò anche algoritmi, espressi ini- zialmente in ALGOL . La raccolta di algoritmi in seguito diven- ne nota come Collected Algorithms of the ACM. CULTURA 18
  • 28.
  • 29. CAPITOLO II L’UNESCO e le sue iniziative per l’informatica John W. Backus e l’idea di un nuovo metalinguaggio formale per l’informatica La lettera di Donald Knuth per ribattezzare la BNF
  • 30. S. Giglio ALGOL BULLETIN - Il notiziario ALGOL Regnecentralen (abbreviato RC, in italiano Centro di calco- lo) è stata la prima società IT danese, originariamente crea- ta come istituto di ricerca indipendente sotto l'Accademia delle scienze tecniche (ATV) il 12 ottobre 1955 con un finan- ziamento di 900.000 corone danesi ottenute con il Piano Marshall. Tre fautori geniali determinarono la fondazione di RC: • Niels Ivar Bech , che ne divenne anche amministratore delegato; • il professor Richard Petersen, che era presidente del comitato per i calcolatori di ATV; • Bent Scharøe Petersen (capo progettista di DASK). Regnecentralen realizzò il computer di prima generazio- ne DASK (abbreviazione di Danish Arithmetic Sequence Cal- culator) che fu presentato per la prima volta il 13 feb- braio 1958. Dalla fine degli anni '60 RC aveva progettato una serie di computer per uso personale e commerciale i cui discendenti sono stati venduti fino agli anni '80. Regnecentralen ci interessa perché lì mosse i primi passi da informatico, impegnato nel progetto ALGOL, Peter Naur, che insieme al Compiler Group, con Jørn Jensen, svolsero un ruolo decisivo nello sviluppo dei primi traduttori ALGOL e nel lavoro per lo sviluppo di linguaggi internazionali di alto livello. 1 § 2.1 - Le iniziative dell’UNESCO per l’in- formatica C ome ulteriore elemento “probatorio”54 di questo entusiastico fermento iniziale le- gato ad ALGOL troviamo il grande inte- resse che l’UNESCO, (l’Organizzazione delle Nazioni Unite per l'Educazione, la Scienza e la Cultura) cominciò a dedicare a quello che non era un semplice fatto tecnologico, bensì ad un nuovo fenomeno culturale da assimilare nella sua interezza e trasformare in una nuova disciplina scientifica e, per molti versi, umanistica: l’infor- matica. I primi passi che mosse l’UNESCO rispetto ad AL- GOL, e alla nascente informatica, furono: • La prima ICIP, International Conference Information Processing, che si tenne a Pari- gi dal 15 al 20 giugno del 1959 ora consi- derata come il primo congresso dell’IFIP, di cui sotto. Tra i vari relatori anche J. W. Bac- kus che presentò ufficialmente la sua nota- zione BNF. • La International Federation of Information Processing Socie- ties (IFIPS) ha come fondatore un nome di eccellenza: Isaac L. Auerbach (foto a lato) ingegne- re e informatico statunitense. Nata nel 1960 come organizzazione globale per ricercatori e professionisti IT per con- durre ricerche, sviluppare standard e pro- muovere la condivisione delle informazioni. Il suo gruppo, WG 2.1, dal marzo 1959 all'agosto 1988, ha curato i 52 numeri del Bollettino ALGOL § 2.2 - La nascita della BNF C ome abbiamo visto in precedenza, nell’ambito dei lavori della Conferenza ICIP di Parigi del giugno ’59, John Bac- kus presentò la sua notazione in un docu- mentointitolato: “The syntax and semantics of the proposed inter- national algebraic language of the Zurich ACM- GAMM Conference”55 in cui illustrava la formulazione del suo meta- linguaggio formale applicato alla strutturazio- ne del nascente Linguaggio Algebrico Internazio- nale. Era la prima stesura del suo reference language,56 quella notazione poi così ampiamente utilizzata per la descrizione degli algoritmi nelle varie pub- 54.Vedi approfondimento al centro delle pagine successive 19
  • 31. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form Regnecentralen la prima IT factory danese blicazioni successive, lasciando le specifiche per l’input/output alle realizzazioni effettive. È mio pensiero che Backus, da buon matematico, avesse deciso di realizzare la sua notazione per di- panare qualunque equivoco espositivo tra i parteci- panti al progetto, riflettendo sulle molteplici cause che avrebbero potuto generare incomprensioni tra i formulatori del nuovo linguaggio: • La differente estrazione culturale in termini di lingua, formazione, provenienza, esperien- ze, ambiti operativi, ecc. • Le diverse aspettative interne agli USA di ACM, da una parte e di SHARE, DUO e USE dall’altra. A rafforzare la mia convinzione è la notizia di un malinteso che fece accogliere con favore una deli- bera sull’IAL approvata durante l'undicesima riu- nione di SHARE.57 L’equivoco fu originato da una lettura imprecisa del contenuto e del contesto della delibera dovuto al linguaggio impiegato che era intenzionalmente ambiguo. Ad aumentare la comicità del fatto è che nel corso degli anni certa storiografia ha spesso interpretato quella delibera come una piena adesione di SHARE ad ALGOL come linguaggio di program- mazione universale! Sic. Invece ora sappiamo bene che in realtà SHARE aveva a stento raggiunto un fragile accordo interno sulla convenienza di mantenere la molteplicità dei linguaggi di programmazione. § 2.3 - Avvertenze sulla traduzione N elle pagine che seguono la traduzione del documento di presentazione della BNF in cui sono riportati tutti i simboli che Bac- kus ritenne opportuno impiegare per de- scrivere ALGOL in vari ambiti di pubblicazione.Per non alterare i simboli del documento, ho effettuato una serie di catture video lì dove comparivano segni grafici non presenti nel font Times New Roman con cui è stato redatto questo testo. Il lettore noterà che la numerazione associata alla de- scrizione dei vari passi della notazione risulta al- quanto discontinua; a tal proposito voglio precisare che mi sono limitato a copiare verbatim il testo ori- ginale così come riportato nel link di cui sopra, limi- tandomi a disporre lo scritto su di una sola colonna. I ricercatori di Regnecentralen furono i primi autori danesi dei testi di programmazione e informatica; da quest’istituzione proverranno anche un gran numero di docenti che insegne- ranno al Technical College danese, all'Università di Aarhus e anche all'Università di Copenaghen, quando questa istituì nel 1970, il Dipartimento di Informatica. 2 3 4 Vecchie foto da RC. 1) Una copia dell’ALGOL Bulletin del dicembre ‘59. 2) La targa del Centro di Calcolo all’ingresso del n° 5 di Carl- sberg vej (a ridosso degli stabilimenti della famosa birra danese). 3) La villa in cui era allocato RC. 4) In primo piano Bent Scharøe Petersen, Jørn Jensen sulla sinistra e Richard Petersen a destra. 1958. - Fonte: Datamuseum.dk Le foto provengono dal blog clausib.blogspot.com 20 55. Il documento è consultabile liberamente al seguente link: https:// www.softwarepreservation.org/projects/ALGOL/paper/Backus-ICIP- 1959.pdf 56. Verbatim Transcript of the SHARE 11th Meeting, September 9-12, 1958, Appendix C-17, p. 1. SHARE Inc. Records (CBI 21), box 3, folder 17. 57. Verbatim Transcript of the SHARE 11th Meeting, September 9-12, 1958, Appendix C-17, p. 1. SHARE Inc. Records (CBI 21), box 3, folder 17.
  • 32. S. Giglio Questo articolo fornisce un riassunto della sintassi e dell'interpretazione delle regole del linguaggio alge- brico internazionale proposto dalla Conferenza ACM-GAMM di Zurigo, seguita da una presentazione formale e completa delle stesse informazioni. Diverse notazioni sono qui proposte per rappresentare nu- meri, variabili numeriche, variabili booleane, relazioni, array n-dimensionali, funzioni, operatori ed espressioni algebriche. I procedimenti sono forniti nel linguaggio per eseguire: • l’assegnazione di valori a variabili, • l’esecuzione condizionale di enunciati, • le procedure iterative, • la formazione di enunciati composti da sequenze di affermazioni, • la definizione di nuove affermazioni per procedure arbitrarie • la modifica e il riutilizzo di segmenti di programma. Il linguaggio proposto ha lo scopo di fornire uno strumento comodo e conciso per esprimere virtualmente tutte le procedure di calcolo numerico impiegando un numero relativamente basso di regole sintattiche e tipi di dichiarazione. 1. Sintesi Nel maggio 1958 una conferenza a Zurigo completò il progetto congiunto dell'ACM (Association for Computing Machinery) e la GAMM (Association for Applied Mathematics and Meccanica) approvando una proposta di International Algebraic Language (IAL) o ALGOL. Saranno presentati qui altri materiali per discutere sia la storia del progetto che i vari aspetti del linguaggio. Lo scopo del presente documento, invece, è quello di descrivere con precisione sia la sintassi che la se- mantica di IAL. La descrizione data qui sarà quella del cosiddetto "linguaggio di riferimento" che, per chiarezza, impiega un insieme specifico di simboli e convenzioni di notazione. Va tenuto presente, tuttavia, che il linguaggio formale di riferimento di IAL è nato principalmente con lo scopo di descrivere le regole di costruzione del. linguaggio e dei suoi significati. Nell'uso effettivo sono previste una varietà di simbolizzazioni e convenzioni di notazione, poiché ogni rappresentazione è una traslitterazione abbastanza precisa del linguaggio di riferimento avendo in comu- ne le stesse regole di sintassi e semantica. Le "rappresentazioni hardware" utilizzeranno generalmente un minor numero di simboli rispetto a quello impiegato nel linguaggio di riferimento risultando così più consone per la traduzione meccanica in lin- guaggio macchina per un determinato tipo di macchina. Le "forme di pubblicazione" del linguaggio, d'altro canto, impiegheranno molte notazioni convenzionali della matematica (ad es., esponenti, pedici, lettere greche) e saranno utilizzate nella comunicazione in scrittura umana dei programmi IAL. La descrizione del linguaggio di riferimento è divisa in due parti. Il capitolo 2 fornisce una breve descri- zione informale dei principali elementi della lingua in termini di esempio mentre il capitolo 3 fornisce una descrizione formale della struttura del linguaggio. John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 21
  • 33. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form 2. Descrizione informale 2.1 Sintesi Un programma IAL è una sequenza di istruzioni che possono essere intervallate da alcune dichiarazioni. Ogni dichiarazione descrive una regola di calcolo e, esplicitamente o implicitamente, specifica un'istruzione suc- cessore (il successore è l’istruzione successiva nel programma se non diversamente indicato). La regola di calcolo data da un programma è, ovviamente, la sequenza di calcoli specificata dalle istruzioni quando prese nell'ordine previsto dai parenti successori. Le dichiarazioni affermano alcuni fatti che devono valere in tutto il calcolo. La loro posizione nel programma è generalmente irrilevante. I paragrafi seguenti presentano alcuni degli aspetti importanti proprietà di espressioni e proposizioni, con esempi. 2.2 Espressioni algebriche a) Le espressioni algebriche sono composte da variabili, costanti, funzioni e operatori per la consueta aritme- tica operazioni. b) Nomi di variabili, funzioni e altre entità sono composto da caratteri alfabetici e numerici, il primo essendo alfabetico. Una sequenza di caratteri può essere di qualsiasi lunghezza. c) Resta inteso che nelle operazioni aritmetiche, l’espressione in virgola mobile indica una rappresentazione approssimata dei numeri reali. Alcune variabili possono essere dichiarate per essere di valore intero. L'ef- fetto di tale dichiarazione è che qualsiasi valore, che deve essere assegnato a tale variabile, è prima arro- tondato all'intero più vicino. d) Le dichiarazioni di array (d. 2.5) possono indicare che alcuni nomi sono di array di dati di varie dimensio- ni. Questi nomi possono apparire nelle espressioni come indici di variabili seguite da una sequenza di pe- dici racchiusi tra parentesi quadre, dal numero di pedice corrispondente alla dimensionalità della matrice mentre ogni pedice sarà separato dal successivo da una virgola. Poiché le parentesi sono utilizzate per rac- chiudere gli argomenti delle funzioni (e sotto espressioni), è facile distinguere tra funzioni e variabili indi- cizzate. Un pedice può essere un’espressione qualsiasi; il valore del pedice è il numero intero formato dall'arrotondamento del valore dell'espressione (se non è già da un numero intero). Esempi di espressioni algebriche 1) significa 2) significa 3) significa 4) significa In particolare, se i e j hanno entrambi valore 1 (o 1,2) quando l'espressione di cui sopra è incrociata, allora è equivalente a:R2, 1 × S1, 2 2.3 Espressioni booleane È possibile dichiarare alcune variabili, o valori di matrici, con valore booleano (ovvero, con il solo valore 0, "falso", o 1, "vero"). Queste variabili, le costanti 0 e 1, le funzioni con valori booleani e le sotto espressioni della forma: (E rE') possono essere combinate con gli operatori booleani "and", "or", "not" e "equivalent" per formare un'espres- sione booleana. (In quanto sopra, E ed E' sono espressioni algebriche ed r è una relazione come, ad esempio, (x/y> 1).) John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 22
  • 34. S. Giglio Esempi di espressioni booleane 1) Questa espressione booleana è vera se, e solo se, X è maggiore di Y o Y è maggiore di Z2 o entrambi. L'opera- tore è quello "or". 2) Qui A e B sono due variabili con valori booleani. L'espressione è vera quando A è falsa e B è vera o quando A è vera e X è uguale a Y + 1. 2.4 Dichiarazioni 2.41 a) Gli enunciati possono essere di base o composti (formati da una sequenza di enunciati racchiusi tra paren- tesi di enunciato, inizio e fine). Le istruzioni sono separate una dall'altra dal separatore ";". Esempi di dichiarazioni composte begin a [i]: = b [i] + c [i]; x: = a [i] end In generale, se S1, S2, ... Sn sono dichiarazioni allora: begin S1; S2; ; ; Sn end è una dichiarazione. b) Una dichiarazione può essere etichettata, come segue: L:S dove L è un nome o un numero intero; L diventa così l'etichetta della dichiarazione S. 2.42 Dichiarazioni di assegnazione Le istruzioni di assegnazione indicano che un'espressione deve essere valutata e assegnata come valore di una variabile. Esempi di istruzioni di assegnazione a) x: = a + b significa: assegnare il valore di a + b come valore di x. b) alfa: = 4.63 c) r [i, j]: = s [i] + t [j] d) B: = (x > 0) ˄ A dove A e B sono variabili booleane e B riceve il valore di vero dell'espressione booleana a destra. 2.43 Dichiarazione go to a) Un'istruzione go to può specificare un'istruzione, diversa dall'istruzione che la segue, come sua succeditri- ce nel processo di calcolo descritto dal programma. Questo può essere fatto esplicitamente scrivendo l'eti- chetta del successore desiderato come segue: go to A dove A è l'etichetta di qualche istruzione nel programma. Il successore dell'istruzione go to può essere creato, oppure già dipende dal valore di qualche altra espressione mediante l'uso di una variabile switch, il cui pedice è l'espressione desiderata. Il valore di una variabile switch è un'etichetta. Quindi se "branch" è il nome di una variabile switch, si avrà: John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 23
  • 35. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form go to branch [i + j] che ha come successore quella dichiarazione la cui etichetta è il valore del ramo [i + j]. b) Le variabili switch sono definite dalle dichiarazioni switch (Cfr.: 2.53). Pertanto la variabile switch "branch" potrebbe essere definita dalla seguente dichiarazione: switch branch (AI, A2, B1, B2) dove A1, A2, B1, B2 sono etichette di dichiarazioni. Il valore del ramo [i + J] è quindi la (i + j) esima eti- chetta nella sequenza (o l'n-esima etichetta, dove n è l'intero formato dall'arrotondamento: i + j). Ad esempio, se i + j è uguale a 3, il valore del ramo [i + j] è B1 e, in tal caso, "go to branch [i + j]" ha lo stesso significato di "go to B1". c) Le variabili switch possono essere utilizzate nella definizione di altre variabili switch. Così le seguenti due dichiarazioni switch potrebbero apparire in un programma: switch branch (AI, A2, Bl, B2) switch fork (branch [i], AI, Bl). In questo caso se i è uguale a 4 e j è uguale a 1, il valore di fork [j] è B2. d) Una variabile switch, in alcuni casi, potrebbe non avere alcun valore . Ad esempio, il ramo [i] come de- finito sopra non ha valore se l'intero più vicino a i è minore di 1 o maggiore di 4. In tal caso il successore di "go to branch [i]" è l'istruzione successiva nel programma. 2.44 clausole if e istruzioni if La clausola if, "if B", dove B è un'espressione booleana, si combina con l'istruzione S che la segue per forma- re un'istruzione composta. Questa affermazione composta ha lo stesso effetto di S se B è vera e ha l'effetto di "nessuna operazione" se B è falsa. if (a > 0); x: = 1; if (a = 0); begin x: = y; p: = 0 end; if (a < 0); go to B; S 2.45 clausole for e dichiarazioni for a) Una clausola for, come una clausola if, si combina con l'istruzione S, che la segue per formare un'istruzio- ne composta. Un'istruzione for specifica che una data variabile assume una successione di valori e che l'istruzione governata, S, deve essere eseguita una volta per ogni valore della variabile. Così, ad esempio: for x: = 1, r + s, k, 6.3, -10; a: = (a + x)/x fa sì che la dichiarazione governata venga ripetuta cinque volte, una volta per ciascuno dei valori elencati di x. Dalla dichiarazione composta governata da una clausola for può essere coinvolta un’istruzione che può includere altre istruzioni for, così procedure ricorsive complesse possono essere facilmente specifica- te dal loro impiego. b) Le sequenze di valori possono anche essere date come progressioni aritmetiche: questa clausola indica che i dovrebbe assumere i valori: a2 , a2 + b/2, a2 + b, … , a2 + nb/2, … finché y + 1 non viene raggiunto, ma non superato. Molte di queste progressioni possono essere incluse in una sola clausola for; per esempio: for r: = 1(3)10, 12(4)20, 21(-7)1 fornisce la sequenza di valori r: 1, 4, 7, 10, 12, 16, 20, 21, 14, 7. 2.46 Dichiarazioni convergenti Un'istruzione di convergenza che precede un'istruzione composta S fa sì che quelle sottodichiarazioni comprendenti S, che non specificano esplicitamente un successore, abbiano l'affermazione che segue S come successore comune. Tuttavia, nel caso di una dichiarazione if è solo il successore della dichiarazione John W. Backus - The syntax and semantics of the proposed International Algebraic Language 24 BNF
  • 36. S. Giglio governata ad essere alterato. Il successore di un'istruzione if con un’espressione booleana falsa è l'istruzio- ne successiva. Così, ad esempio: converge; begin if B1; S1; if B2; S2; if B3; S3 end; S4 fa eseguire quell'unica istruzione Si che corrisponde alla prima espressione booleana vera Bi; questo Si è poi seguito da S4. Quindi se B1, B2 e B3 sono tutti veri, l'effetto è eseguire S1 e poi S4. b) Un'istruzione converge può anche essere usata convenientemente selezionando una singola istruzione per l'esecuzione così come segue: converge; begin go to branch [i]; L1; S1; L2 : S2; L3: S3 end; S4 Se "branch [i]" assume i valori L1 , L2 , L3 per i = 1,2,3, allora la dichiarazione che segue converge ha l'ef- fetto dell'unica dichiarazione Si seguita da S4. 2.47 Istruzione do a) Un'istruzione do è semplicemente un modo abbreviato per riscrivere il segmento di un programma che appare altrove. Avremo così: do A; x: = y + z; A: r: = x + r che è un modo alternativo di scrivere quanto segue: B: r: = x + r; x: = y + z; A: r: =x + r dove all'enunciato copiato è stata assegnata una nuova etichetta, B, semplicemente per evitare di avere due enunciati con la stessa etichetta. La scelta di nuove etichette nella copia è irrilevante fintanto che la riasse- gnazione viene eseguita in modo coerente in tutta la copia. b) Un'istruzione do può specificare una sequenza di istruzioni da essere copiate dando due, o più, etichette. do R, S che rappresenta, quindi, la sequenza di istruzioni da quella etichettata R a quella etichettata S. c) Una istruzione do può richiedere che vengano apportate determinate modifiche alla copia che essa rappre- senta: do R, S (x + y → x, a [i] → beta) che si deve interpretare: per il segmento da R a S, ma con il nome "x", sostituito da "x + y" ovunque ap- paia e con "beta" sostituito da "a [i]". 2.48 Istruzione stop Le istruzioni stop non hanno successori, quindi rappresentano il termine operativo del processo descritto da un programma. 2.49 Istruzione return Un'istruzione return, scritta "return", è usata solo nei programmi che definiscono il significato delle istruzioni di procedura. Ciò significa che la procedura definita è stata completata e che il successore dell'istruzione di proce- dura, che ha invocato il programma di definizione, è l'istruzione successiva nel programma invocante. 2.410 Dichiarazioni procedurali L'istruzione procedurale indica che un particolare processo deve essere eseguito impiegando quelle entità indica- te dai parametri di input e producendo risultati che sono designati dai parametri di output. (Alcune istruzioni pro- cedurali possono anche indicare specifiche istruzioni successive mediante un elenco di etichette o variabili di commutazione associate a varie condizioni di uscita). Avremo così, ad esempio: integrate (F(r) , a, b, e) = : (int) : (L) che potrebbe indicare F(r, x) dx, che deve essere trovato con un errore minore di e (se possibile con la procedura data), che il risultato deve essere assegnato come valore di "int" e che, se non si ottiene il risultato desiderato, il successore di quest’istruzione dovrebbe essere quello etichettato con L. Alcune istruzioni procedurali possono essere aggiunte semplicemente a IAL come primitive (e realizzate da subroutine in linguaggio macchina). Altre possono fare riferimento, con il nome che le precede (ad esempio, "integrate"), a un programma IAL (cfr.: John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 25
  • 37. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form dichiarazioni procedurali d 2.56) che rappresenta il processo indicato. Alcune istruzioni procedurali potreb- bero non avere parametri di input, altre potrebbero non avere parametri di output. Quindi, un'istruzione pro- cedurale, che produce, ad esempio, l'ottenimento di un numero da un supporto esterno, potrebbe essere: in = :(a) indicando che il numero deve essere assegnato come valore di a. Un altro potrebbe essere: print (r, s, t). Un'altra dichiarazione procedurale può specificare la sostituzione di una matrice, A, dalla sua inversa: invert (A [,] = : (A [,]) In generale, si intende che praticamente qualsiasi processo può essere espresso da una dichiarazione procedurale. 2.5 Dichiarazioni Le dichiarazioni in un programma IAL affermano determinati fatti che devono essere ottenuti durante tutto il programma. Possono apparire in qualsiasi punto del programma, ma la loro posizione non è significativa. 2.51 Dichiarazioni di tipo Una dichiarazione di tipo, booleana o intera, afferma che il valore di una variabile o funzione o elemento di un array sarà sempre del tipo specificato. Avremo così: boolean (a, b, c) asserisce che qualsiasi valore assegnato a entità con i nomi a, b o c sarà cambiato in uno 0 o 1 secondo qualche regola, t, (ad esempio, t (x) = 1 quando x = 1, altrimenti t (x ) = 0). Avremo così: a: = x o ancora la comparsa di una funzione b (x) in un'espressione nel programma sarebbe equivalente a t (b (x) ). Allo stesso modo avremo: integer (r, s) vincola le entità con nomi r o s ad avere valori interi arrotondando i valori non interi all'intero più vicino. 2.52 dichiarazioni di array le dichiarazioni di array specificano i limiti, superiore e inferiore, per i pedici a cui possono essere associati, in modo significativo, gli array. Avremo così: array (a, b, c [1: 100], r, s [-10,1: + 10,50]) indica che a, b, c sono array unidimensionali i cui pedici hanno significato solo nell'intervallo da 1 a 100 (inclusi), e che r, s sono array bidimensionali i cui il primo pedice dovrebbe essere compreso tra -10 e + 10 e il secondo tra 1 e 50 (inclusi). 2.53 dichiarazioni di commutazione Le dichiarazioni switch sono già state descritte sotto il titolo "Istruzioni go to" (Cfr.: 2.43). 2.54 Dichiarazioni di funzioni Alcune funzioni possono essere definite per l'uso all'interno di un programma mediante una dichiarazione di funzione così come segue: g(x, y): = w + x + f(y, x) Se nel programma, contenente la suddetta dichiarazione, compare: g (t/v , h (v) ), allora il suo valore è dato dall'espressione: w + t/v + f(h (v), t/v) Si noti, in questo caso, che g (x, y) è sempre una funzione di w anche se non appare come argomento. John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 26
  • 38. S. Giglio 2.55 Commenti I commenti non influiscono sul comportamento del programma, forniscono semplicemente la possibilità di incorporare commenti verbali in un programma. Per esempio: comment This is the end of Section 1. Il commento può essere arbitrariamente lungo a condizione che non contenga un separatore di istruzioni, punto e virgola. 2.56 Dichiarazioni procedurali Le dichiarazioni procedurali sono uniche tra le dichiarazioni: una sola dichiarazione procedurale deve precede- re il programma a cui si riferisce. Tale dichiarazione indica che il programma IAL che segue definisce una o più istruzioni e/o funzioni procedurali. Per esempio: procedure branch (a): (L1, L2, L3); begin branch: if (a < 0); go to L1; if (a = 0); go to L2; if (a > 0); go to L3 end comprende una dichiarazione procedurale seguita da un programma di una dichiarazione composta. L'istruzio- ne della procedura così definita è quella denominata "branch" che seleziona uno dei tre successori a seconda che il valore dell'input sia negativo, zero o positivo. Così, dunque, sarà la dichiarazione procedurale: branch (x - f (y)) : (a [i], BB, MM) usato in qualsiasi programma significa, in virtù del suo programma che lo definisce: vai all'istruzione indicata dalla variabile switch a [i] quando x - f (y) è negativo, se è zero, vai a BB, e se è positivo, vai a MM. Un altro esempio: procedure root (a, b), ckroot (a, b) = : (c) : (d); begin ckroot: if (a - b < 0); go to d; root: c: = sqrt (a - b); root: = c; return end La dichiarazione procedurale, insieme al programma, definisce una funzione, una radice e un'istruzione proce- durale, denominata "ckroot". Il calcolo della funzione inizia con l'istruzione etichettata root, e il suo valore è quello della variabile root, quando si incontra return. Il programma per ckroot inizia dalla prima istruzione, denominata ckroot. Il processo corrispondente a: ckroot (x, y/z) = : (a) : (GL) quindi o fornisce a del valore sqrt (x - y/z) oppure, se x-y/z è negativo, specifica l'istruzione etichettata GL come suo successore. D'altro canto v : = r + root (m, n) 3 Descrizione formale 3.1 Generale La Conferenza ACM-GAMM di Zurigo ha avuto due motivazioni principali nel proporre IAL: a) Fornire un mezzo per comunicare metodi numerici, e altre procedure, tra le persone. e, b) Fornire un mezzo per realizzare un determinato processo su di una molteplicità di macchine, con le uni- che differenze tra le esecuzioni di un programma su due macchine diverse essendo queste imposte dalle differenze di lunghezza delle parole, condizioni di overflow e simili. Sembra che IAL, come indicato da descrizioni informali qui e altrove [1], sia sufficiente per raggiungere l'obiettivo (a). Tuttavia, se i programmi devono essere scritti per una varietà di macchine per tradurre da IAL al linguag- gio della macchina ospite, in modo tale da soddisfare l'obiettivo (b), devono essere adempiuti due requisi- ti: c) Deve esistere una descrizione precisa di quelle sequenze di simboli che costituiscono i programmi IAL validi. Diversamente accadrà spesso che un programma che è corretto e traducibile per un programma traduttore non lo sarà rispetto ad un altro. John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 27
  • 39. Origine dei metalinguaggi sintattici per l’informatica: Backus Naur Form d) Per ogni programma valido deve esserci una precisa descrizione del suo "significato", che illustri il suo eventuale processo o trasformazione. In caso contrario, i programmi in linguaggio macchina ottenuti da due programmi di traduzione da un singolo programma IAL potrebbero comportarsi diversamente in uno o più aspetti cruciali. Finora non è esistita alcuna descrizione formale di un linguaggio indipendente dalla macchina (diversa da quella fornita implicitamente da un programma di traduzione completo) che soddisfacesse uno dei due requisiti di cui sopra. Di conseguenza, come può testimoniare chiunque sia stato effettivamente coinvolto nella stesura di un programma di traduzione, un gran numero di decisioni che riguardano l'appartenenza alla classe dei pro- grammi legittimi e il significato dei programmi legittimi devono essere prese durante la costruzione del programma di traduzione. Se, quindi, IAL viene lasciato così com’è nel suo stato attuale di incompletezza e di sola descrizione infor- male, è probabile che trascorreranno molti anni nella produzione di una serie di programmi di traduzione che comunque non produrranno in modo affidabile programmi macchina equivalenti. In questo caso an- dranno perduti i grandi potenziali in termini di benefici e risparmi offerti dall'obiettivo (b). L'autore sperava di completare una descrizione formale dell'insieme dei programmi legittimi IAL, e dei loro significati, in tempo utile per poterla presentare qui. Tuttavia, è stata completata solo la descrizione dei programmi legittimi. Pertanto la trattazione formale della semantica dei programmi ufficiali sarà inclusa in un successivo lavo- ro. Il lavoro che è già stato fatto in questa direzione indica la necessità di apportare ulteriori modifiche minori in IAL per facilitarne il completamento. Queste modifiche richiederanno l'approvazione degli ap- positi gruppi. Poiché alcuni di questi cambiamenti sono presenti in entrambi i capitoli 2 e 3 di questo do- cumento, non si dovrebbe assumere uno status ufficiale per le descrizioni in esso contenute, sebbene i cambiamenti siano pochi e, per la maggior parte, lievi. 3.2 Sintassi di IAL Nella descrizione della sintassi IAL che segue avremo bisogno di alcune convenzioni metalinguistiche per caratterizzare varie stringhe di simboli. Per cominciare, avremo bisogno di formule metalinguistiche. La loro interpretazione è meglio spiegata da un esempio: Le sequenze di caratteri racchiuse tra "< >" rappresentano variabili metalinguistiche i cui valori sono strin- ghe di simboli. I segni ": ≡" e "or" sono connettivi metalinguistici. Qualsiasi segno in una formula, che non è una variabile o un connettivo, denota se stesso (o la classe di segni che sono simili ad esso). Giu- stapposizione di segni e/o variabili in una formula significa giustapposizione delle stringhe denotate. Così la formula di cui sopra fornisce una regola ricorsiva per la formazione di valori della variabile <ab>. Indi- ca che <ab> può avere il valore "(" o "[" o quello dato da alcuni valori legittimi di <ab>, se ne può forma- re un altro, facendolo seguire dal carattere" “(" o facendolo seguire da qualche valore della variabile <d>. Se i valori di <d> sono le cifre decimali, alcuni valori di <ab> sono: [(((1(37( (12345( ((( [86 3.31 Interi e numeri John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 28
  • 40. S. Giglio 3.32 Identificatori e variabili 3.33 Sottotitoli, variabili e array 3.34 Parametri, funzioni e funzioni pure 3.35 Espressioni aritmetiche, espressioni booleane ed espressioni John W. Backus - The syntax and semantics of the proposed International Algebraic Language BNF 29