ACM A. M. Turing Award
Denmark - 2005READ FULL CITATION AND ESSAY
For fundamental contributions to programming language design and the definition of Algol 60, to compiler design, and to the art and practice of computer programming.
Peter Naur was editor of the hugely-influential Report on the Algorithmic Language Algol 60, and directly responsible for the definition's rigor and for the language's elegance, uniformity and coherence. He extended a syntax definition notation due to John Backus to create the widely used Backus-Naur Form (BNF). He used BNF to define the Algol block-structured language, with dynamic and scoped variables, with recursion, call-by-name - all in 17 pages. Each of these concepts was a landmark advance in programming language design. The report was a breakthrough in establishing programming languages as objects of scientific study.
With Jørn Jensen, Naur implemented the GIER Algol compiler, one of the first to deal fully and correctly with the language's powerful procedure mechanisms. Its other innovations included abstract-type checking and code-coverage testing.
Naur pioneered the methodology for writing correct programs. He introduced the use of assertions (he called them "general snapshots") used to prove a program matches its specification, and was a leader in structured programming - by introducing block-structured control flow and scoping in Algol 60, and thereafter advocating a structured programming style (later characterized as "goto-less" programming). This work was continued very successfully by Floyd, Dijkstra, Hoare and others.
An astronomer by training, Naurs work is formal and precise; but it displays an exceptional understanding of the limits and uses of formalism and precision. Throughout his career Naur has been a leader in establishing Software Engineering as a discipline - converting program design from an art form to a subject with sound basic principles. He defined an influential computer science curriculum, called Datalogy, based on fundamental principles. His recent work has focused on programming as a human activity - exploring the social and ethical aspects of computing, and also the problems of writing programs to cater for evolving requirements.