HeerdeBeer.org — Exploring the Computational Medium

Notation

From IAL to ALGOL 60

Huub de Beer
2006
download the whole history of the ALGOL effort as a pdf file (1.1 megabytes)

Summary

A sufficient notation was developed during the two years between the publication of the draft report on IAL and the publication of the ALGOL 60 report. Notation is important because it enables one to formally define a language in such a way that everyone can read and interpret the definition in the same way.

The notation to describe the early programming languages, like FORTRAN and IAL, was mostly natural language combined with some patterns denoting the form of the various language elements. The problem with this notation was ambiguity. Even for simple language elements, like numbers, expressions and simple control structures, this was already a problem. For complex structures like the procedure statement and declarations it was more problematic.

To give a more formal and complete description of the syntax of IAL a new notation was invented by Backus: the Backus Normal Form. Using this simple notation, complex structures in the language could be described formally. Unfortunately, the procedure concept of IAL was too complex to be described using this notation.

The procedure concept was also the most controversial topic in the various discussions on the development of ALGOL 60. Eventually, in the ALGOL 60 report, the procedure concept was strongly simplified. Input and output parameters were removed and call-by-name and call-by-value parameters introduced. Another important aspect of the new language was the notion of a block with its own scope. This block was an extension of the compound statement from IAL. What was new was recursion, added implicitly to the language because it was not explicitly forbidden.

The ALGOL 60 report was edited by Peter Naur. He wrote the draft version and used a slightly modified version of Backus's notation to describe the language. This draft was used as the basis for the ALGOL meeting. The final report would become the standard method of defining programming languages and the BNF became the standard method to describe the syntax of programming languages.

The importance of this phase of the ALGOL effort was twofold. First of all, it resulted in a new notation which would become the standard to define and describe programming languages. Although the goal of the ALGOL effort was to create a universal algorithmic language, it also created a universal metalanguage to describe all programming languages. The scope of the effort became larger than only the development of ALGOL 60: the whole field of programming languages became the scope of the ALGOL effort.

Second, the ALGOL effort became truly international and the result, ALGOL 60, was a new programming language, substantially different from the earlier algorithmic languages. It had a clear syntax and it introduced some interesting concepts to a broader public, like blocks, procedures and recursion.

In 1958, the common goal of the ALGOL effort was shared by a small number of computer scientists from the USA and Central Europe. With the publication of the ALGOL 60 report, the common spirit was shared by many computer scientists from all over the world. Computer science had produced a potent result: ALGOL 60.