Algol (ALGOrithmic Language) ha origine verso la metà del 1957 negli Stati Uniti, su spinta delle associazioni USE, SHARE e DUO, membri dell’ACM, per scegliere un linguaggio scientifico comune per tutte le macchine dell’epoca. Il comitato, composto pressoché pariteticamente da rappresentanti di Università e dei fabbricanti di computer, nel gennaio del 1958 scartò il FORTRAN più che altro per la sua appartenenza all’IBM. Quasi contemporaneamente il GAMM (Gesellschaft für augewandte Mathematik und Mechanik) che in Europa già dal 1955 lavorava ad un linguaggio algoritmico universale, propose di proseguire insieme le ricerche. Nel primo incontro già comparve il nome ALGOL, che fu definitivamente adottato nel 1959, ma gli fu preferito IAL (International Algebraic Language).
Gli obiettivi posti dal comitato furono che il linguaggio doveva:
Le difficoltà iniziali si ebbero per la divergenza fra la notazione scelta ed i caratteri disponibili nei dispositivi di input/output. Si decise di definire un linguaggio di riferimento (reference language) da cui derivare un publication language ed un hardwre language. Di fatto la prima specifica del linguaggio si limitò al reference language, ampiamente utilizzato per la descrizione di algoritmi nelle pubblicazioni, lasciando le specifiche per l’input/output alle varie implementazioni effettive.
La revisione effettuata nel 1960
delle specifiche del 1958 fu in realtà una riscrittura di questo,
principalmente fu fatta cadere la distinzione fra parametri di input e parametri
di output nelle procedure e la possibilità di dichiarare ovunque le variabili.
Uno dei motivi della scarsa diffusione dell’Algol fu
l’iniziale mancanza di specifiche per l’input/output; tuttavia ebbe
un’influenza notevole nella comunità scientifica informatica, ad iniziare
dalla rappresentazione formale della sintassi proposta da Backus ed adattata da
Naur (BNF)[1],
allo stimolo sullo studio dei compilatori e della struttura dei linguaggi. Ispirò
comunque diversi dialetti, alcuni dei quali diventati linguaggi diffusi come MAD,
JOVIAL, NELIAC e da Algol W PASCAL ad opera di Niklaus Wirth.
Nel 1963 ALGOL 60 fu rivisto e nel 1968 apparve la versione ALGOL 68.
Il listato dell’algoritmo TPK che segue è stato generato da un programma HASKELL (v. par. 2.31 ) che interpreta sorgenti in Laning and Zierler System (v. par. 2.39 ).
begin procedure cycle (xarray,xfor,xstep,xuntil); array xarray; real xfor,xstep,xuntil; begin integer i; real j; i := 0; for j := xfor step xstep
until xuntil do begin i
:= i + 1; xarray[i]
:= j; end end; real array v[0:100]; real j; real array a[0:100]; real y; real z; real i; real e; ;comment * TPK Laning e
Zierler; cycle(v,1,1.2,13); i := 0; lb1: j := i+1; a[i] := v[j]; i := j; e := i-10.5;
if e < 0 then goto lb1;
i
:= 10; lb2: y := abs(sqrt(a[i]))+5*(a[i])^3; e := y-400;
if e < 0 then goto lb3; z := 999; vprint (i,z); goto lb4; lb3: vprint (i,y); lb4: i := i-1;
e := -0.5-i; if e < 0 then goto
lb2; ;comment STOP; end |
Coral66 (1966) Una versione per applicazioni Real Time di Algol 60
FOOGOL 1994 Per Lindberg, John Cowan. E’ un compilatore di un sottoinsieme di Algol-60, basato su VALGOL-1.
GIER
ALGOL compiler (1965)
EULER Una generalizzazione di ALGOL.
VALGOL-1 compilatore di G. A. Edgar pubblicato nel the Maggio 1985 sul Dr. Dobb's Journal. Lo scopo era di demostrare l’utilizzo del parsing recorsivo discendente ed altre tecniche di costruzione dei compilatori.
Virginia
ALGOL 60 compilatore per il
Burroughs B205 (Alan Batson 1965).
In IBM dal 1965 il gruppo ALCOR.
[1]
E’ controversa la formazione dell’Acronimo, certamente sta per Backus
Normal Form, ma anche per Backus Naur Form.