History: From IAL to ALGOL 68

FORTRAN (IBM, 1957) had just shown that a compiled high-level language could produce efficient code — but it was tied to IBM hardware.

2.1 The situation in 1957

FORTRAN (IBM, 1957) had just shown that a compiled high-level language could produce efficient code — but it was tied to IBM hardware. In Europe, the German GAMM (Gesellschaft für Angewandte Mathematik und Mechanik) and in the USA the ACM (Association for Computing Machinery) each wanted a common, vendor-neutral algorithmic language. They agreed to design one together.

2.2 Zurich 1958: the International Algebraic Language (ALGOL 58)

From 27 May to 2 June 1958, eight people met at ETH Zurich:

ACM (USA): John Backus, Charles Katz, Alan Perlis, Joseph Wegstein.

GAMM (Europe): Friedrich L. Bauer, Hermann Bottenbruch, Heinz Rutishauser, Klaus Samelson.

The result was the International Algebraic Language (IAL), later called ALGOL 58. Its key ideas:

A distinction between a reference language, a publication language and hardware representations (§4).

Compound statements delimited by begin and end.

Assignment written := (a compromise; the Americans wanted =, the Europeans ←/=> style notations).

Procedures, if statements, for statements, switches, arrays.

ALGOL 58 was never meant to be final, but it was implemented in several influential dialects:

JOVIAL ("Jules' Own Version of the International Algebraic Language", Jules Schwartz, SDC) — used for decades in US military systems.

MAD (Michigan Algorithm Decoder, University of Michigan).

NELIAC (Navy Electronics Laboratory International ALGOL Compiler).

IBM's early commitment wavered, and IBM ultimately backed FORTRAN and later PL/I.

2.3 The ALGOL Bulletin and the road to Paris

After Zurich, discussion continued in the ALGOL Bulletin, started in 1959 and first edited by Peter Naur at Regnecentralen in Copenhagen. Naur's bulletin became the forum where proposals were debated openly — an early example of open, international language design. (The Bulletin later moved under IFIP Working Group 2.1 and continued until 1988.)

At the 1959 UNESCO International Conference on Information Processing in Paris, John Backus presented a formal notation for describing the syntax of IAL — the seed of BNF.

2.4 Paris 1960: ALGOL 60

In January 1960 (11–16 January), thirteen delegates met in Paris: John Backus, Friedrich Bauer, Julien Green, Charles Katz, John McCarthy, Peter Naur, Alan Perlis, Heinz Rutishauser, Klaus Samelson, Bernard Vauquois, Joseph Wegstein, Adriaan van Wijngaarden and Michael Woodger. (William Turanski, a member of the US delegation, had been killed in a road accident shortly before; the Report is dedicated to his memory.)

Naur edited the result, the Report on the Algorithmic Language ALGOL 60, published in May 1960 (CACM and *Numerische Mathematik*). Its brevity (about 17 pages) and its use of Backus's notation (adapted by Naur) for syntax were revolutionary.

Notable decisions:

Recursion was permitted, essentially because nothing in the Report forbade it. The often-told story is that van Wijngaarden and Dijkstra pushed for wording that allowed recursive procedures, over the doubts of those worried about implementation cost. Dijkstra and Zonneveld then produced one of the first full implementations (Electrologica X1, Amsterdam, summer 1960), complete with recursion.

Call by name became the default parameter mechanism.

McCarthy (who was creating LISP at the time) argued for conditional expressions — ALGOL 60 got if ... then ... else as an expression as well as a statement.

2.5 Rome 1962: the Revised Report

Ambiguities soon surfaced. A meeting in Rome in April 1962 produced the Revised Report on the Algorithmic Language ALGOL 60 (published 1963), again edited by Naur. This is the standard definition of ALGOL 60 used in this course. IFIP took responsibility for ALGOL and created Working Group 2.1 (WG 2.1).

Later documents:

1964: IFIP reports on a subset of ALGOL 60 (SMALGOL) and on input-output procedures; the ACM published a separate proposal for I/O conventions (Knuth et al.).

1967: Donald Knuth, "The Remaining Trouble Spots in ALGOL 60" (CACM).

1976: the Modified Report on the Algorithmic Language ALGOL 60 (De Morgan, Hill & Wichmann), which resolved the remaining ambiguities and added a standard environment of I/O procedures. ISO later adopted this as ISO 1538.

2.6 Towards ALGOL X: WG 2.1 in the 1960s

WG 2.1 set out to design a successor ("ALGOL X"). Competing proposals came from:

Niklaus Wirth (with Tony Hoare): a modest, practical extension of ALGOL 60 — records, references, strings, better types.

Gerhard Seegmüller: proposals on references and parameters.

Adriaan van Wijngaarden: a radically general, orthogonal language described by a new two-level grammar ("Orthogonal design and description of a formal language", 1965).

In 1965–66 the group chose van Wijngaarden's approach. Wirth and Hoare's proposal was published separately ("A Contribution to the Development of ALGOL", CACM, June 1966) and implemented at Stanford as ALGOL W (§22). Wirth went on to design Pascal (1970).

2.7 ALGOL 68 and the Minority Report

Drafts by van Wijngaarden, Barry Mailloux, John Peck and Kees Koster were debated through 1967–68 (the infamous draft MR 93 shocked many readers with its density). At the Munich meeting in December 1968 WG 2.1 voted to accept the *Report on the Algorithmic Language ALGOL 68*. A group of members — including Edsger Dijkstra, Fraser Duncan, Jan Garwick, Tony Hoare, Brian Randell, Gerhard Seegmüller, Wlad Turski and Mike Woodger — signed a Minority Report stating that the language and its description had failed to meet the group's goals: the definition was too obscure and the language too complex to serve as a reliable tool for programmers. Hoare later recalled the episode in his 1980 Turing Award lecture, *The Emperor's Old Clothes*.

2.8 The Revised Report (1973–75)

Experience from implementations (notably ALGOL 68-R at the Royal Radar Establishment, Malvern, 1970) and an informal textbook (Lindsey & van der Meulen, *Informal Introduction to ALGOL 68*) led to the Revised Report on the Algorithmic Language ALGOL 68 (van Wijngaarden, Mailloux, Peck, Koster, Sintzoff, Lindsey, Meertens, Fisker), adopted in 1973 and published in *Acta Informatica* in 1975. It simplified several features (e.g. removing "proceduring" coercion and the old "flexible" bound syntax rules), cleaned up transput, and is the definition implemented by Algol 68 Genie.

2.9 Timeline at a glance

Zurich meeting; IAL / ALGOL 58 ALGOL Bulletin begins; Backus presents his syntax notation in Paris

Paris meeting; ALGOL 60 Report; X1 implementation (Dijkstra & Zonneveld)

Burroughs B5000 designed around ALGOL; Hoare's Quicksort published in ALGOL 60

Rome meeting; Revised Report (published 1963); IFIP WG 2.1 founded

Randell & Russell, *ALGOL 60 Implementation*; IFIP I/O proposals ALGOL W (Wirth & Hoare)

Simula 67 (ALGOL 60 superset); Knuth's "Remaining Trouble Spots"

ALGOL 68 accepted; Minority Report; Dijkstra's "Go To Statement Considered Harmful" ALGOL 68-R; Pascal Revised Report on ALGOL 68 Modified Report on ALGOL 60 Last ALGOL Bulletin (No. 52) Algol 68 Genie (Marcel van der Veer)