ALGOL 60: an improvement on nearly all its successors
For six days in January 1960, thirteen computer scientists — seven European, six American — sat in a Paris conference room and argued about how machines should think. They left with a 17-page document that would never run on an IBM, never earn a dime in commercial licensing, and never appear on a payslip. They also left with a language that quietly fathered almost everything written since.
The meeting, held January 11–16, was convened jointly by the ACM and the European GAMM society as a follow-up to a 1958 Zurich gathering that had produced a rough draft called ALGOL 58. Among the thirteen in Paris were John Backus, who had just built FORTRAN; John McCarthy, who had just invented Lisp; Peter Naur, a Danish astronomer who had recently converted to computing; and Alan Perlis, who would become the ACM’s first Turing Award recipient. Naur agreed to edit the final report — a document that would fit comfortably in a modern conference proceedings, yet condense a decade of thinking about what programming languages could do.
The result, the Report on the Algorithmic Language ALGOL 60, introduced the technical vocabulary that all subsequent languages would need to translate: block structure, with code bounded by begin and end so that local variables stayed local; lexical scoping, so that a nested function could see its enclosing environment; call-by-value and call-by-name parameter passing; and, controversially, recursive procedures. Backus also gave the document the first formal grammar notation for a programming language — what Donald Knuth would later rename Backus–Naur Form, now abbreviated BNF, used to specify the syntax of every language since.
The recursion was not supposed to be there. The German faction — Friedrich Bauer and his colleagues — resisted it on practical grounds: recursion required dynamic stack allocation; FORTRAN used static memory and ran fast; why risk it? The dispute was never fully resolved in Paris. It was resolved afterward, in what Bauer would later call the “Amsterdam plot.” Edsger Dijkstra had worked out how to implement recursion cleanly on a stack. He and Adriaan van Wijngaarden telephoned Naur and proposed inserting a single quiet sentence into section 5.4.4 of the draft: Any other occurrence of the procedure identifier denotes activation of the procedure. Naur, charmed by “the boldness and simplicity” of the suggestion, put it in. Bauer did not notice until the report was already published. Every language with recursive functions — which is to say every language worth naming — inherits that sentence.
Then IBM did nothing. IBM owned roughly 70 percent of the American computing market and had invented FORTRAN; there was no commercial reason to hand customers something better. The ALGOL 60 committee had never agreed on standard input and output — the report simply omitted any I/O specification, making programs unportable between machines almost by design. Only the Burroughs Corporation embraced ALGOL seriously enough to build hardware around it; the B5000 was designed at the architectural level to run block-structured programs. Everywhere else, FORTRAN held. ALGOL 60 became what it became not by market share but by being right: for thirty years it was the standard notation of academic computer science, the language in which algorithms were written, explained, and proved, regardless of whether anyone actually ran them. Tony Hoare, who implemented ALGOL 60 on an Elliott 803 in the early 1960s, summed it up in 1973: “Here is a language so far ahead of its time, that it was not only an improvement on its predecessors, but also on nearly all its successors.”
ALGOL 60’s descendants include Simula, which invented objects and classes; Pascal; C; C++; Java; and through C, almost every language that runs critical infrastructure today. Thirteen people argued in a Paris conference room for six days and then went home. The argument never really stopped.
Sources
- ALGOL 60 — Wikipedia — timeline of the 1958 Zurich and 1960 Paris meetings, technical features, IBM’s non-adoption, and language descendants.
- Peter Naur — ACM Turing Award, 2005 — award citation on Naur’s role in defining ALGOL 60 and extending BNF notation.
- C. A. R. Hoare — Wikiquote — verbatim source for the 1973 “improvement on its successors” quote from “Hints on Programming Language Design.”
- How recursion got into programming — van Emden’s blog — detailed account of the “Amsterdam plot,” including Dijkstra’s 2001 admission and Naur’s own phrasing.