March 3, 2006 — jao

Peter Naur has been awarded this year’s ACM Turing Award. He began his career as an astrophysicist, but soon after his Ph.D. became involved in computer science, more concretely in the definition of the Algol 60: he was the editor of the 1960 Report on the Algorithmic Language Algol 60 in which the famous BNF notation for computer language grammars was introduced, as an improvement of the one used a year before by John Backus in a report on Algol 58. Nowadays, BNF belongs into every programmer toolset, not to mention the fact that Algol is the grandparent of all languages in the (syntactical) C family.

In 17 pages, Algol 60 introduced call by value and call by name, code blocks, local variables, two-branch conditionals, the for statement and dynamic arrays (if you’ve never seen Algol code before, here’s how the Towers of Hanoi look like in Algol 60). Not bad for a forerunner, but not so surprising if you read the names of its authors, which include, for instance, J. McCarthy and Alan Perlis.

In his own Turing Award conference (or PDF of the original manuscript), Edsberg Dijkstra mentioned Algol, its report and Naur in these terms:

[…] while the definition of LISP is still a curious mixture of what the language means and how the mechanism works, the famous Report on the Algorithmic Language ALGOL 60 is the fruit of a genuine effort to carry abstraction a vital step further and to define a programming language in an implementation-independent way. One could argue that in this respect its authors have been so successful that they have created serious doubts as to whether it could be implemented at all…

Naur programmed an Algol compiler for a Danish computer called Gier later on. No wonder Dijkstra considered it a masterpiece.

As you can see in this commented bibliography, Naur has also made many contributions in the field of software engineering methodologies and life-cycle models. But afterwards he became more and more interested in less practical stuff.