ALGOL

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

.1             Versioni

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.