Preamble to
Revised Report on the Algorithmic Language Algol 60

By

J.W. Backus, F.L. Bauer, J.Green, C. Katz, J. McCarthy
P. Naur, A.J. Perlis, H. Rutishauser, K. Samuelson, B. Vauquois
J.H. Wegstein, A. van Wijngaarden, M. Woodger

Edited by

Peter Naur


Dedicated to the memory of William Turanski
 

Contents

 

Summary

The report gives a complete defining description of the international algorithmic language Algol 60. This is a language suitable for expressing a large class of numerical processes in a form sufficiently concise for direct automatic translation into the language of programmed automatic computers.

The introduction contains an account of the preparatory work leading up to the final conference, where the language was defined. In addition the notions reference language, publication language, and hardware representations are explained.

In the first chapter a survey of the basic constituents and features of the language is given, and the formal notation, by which the syntactic structure is defined, is explained.

The second chapter lists all the basic symbols, and the syntactic units known as identifiers, numbers, and strings are defined. Further some important notions such as quantity and value are defined.

The third chapter explains the rules for forming expressions and the meaning of these expressions. Three different types of expressions exist: arithmetic, Boolean (logical), and designational.

The fourth chapter describes the operational units of the language, known as statements. The basic statements are: assignment statements (evaluation of a formula), go to statements (explicit break of the sequence of execution of statements), dummy statements, and procedure statements (call for execution of a closed process, defined by a procedure declaration). The formation of more complex structures, having statement character, is explained. These include: conditional statements, for statements, compound statements, and blocks.

In the fifth chapter the units known as declarations, serving for defining permanent properties of the units entering into a process described in the language, are defined.

The report ends with two detailed examples of the use of the language and an alphabetic index of definitions.

 

Introduction

Background

After the publication (1)(2) of a preliminary report on the algorithmic language Algol, as prepares at the conference in Zuerich in 1958, much interest in the Algol language developed.

(1) 

Preliminary report - International Algebraic Language, Comm. Assoc. Comp. Mach. 1, No. 12 (1958), 8.

(2) 

Report on the Algorithmic Language Algol by the ACM Committee on Programming Languages and the GAMM Committee on Programming, edited by A. J. Perlis and K. Samuelson, Numerische Mathematik Bd. 1, S. 41-60 (1959).

As a result of an informal meeting held at Mainz in November 1958, about forty interested persons from several European countries held an Algol implementation conference in Copenhagen in February 1959. A ``hardware group'' was formed for working cooperatively right down to the level of the paper tape code. This conference also led to the publication by Regnecentralen, Copenhagen, of an `Algol Bulletin', edited by Peter Naur, which served as a forum for further discussion. During the June 1959 ICIP Conference in Paris several meetings, both formal and informal ones, were held. These meetings revealed some misunderstandings as to the intent of the group which was primarily responsible for the formulation of the language, but at the same time made it clear that there exists a wide appreciation of the effort involved. As a result of the discussions it was decided to hold an international meeting in January 1959 for improving the Algol language and preparing a final report. At a European Algol Conference in Paris in November 1959 which was attended by about fifty people, seven European representatives were selected at attend the January 1960 Conference, and they represent the following organisations: Association Française de Calcul, British Computer Society, Gesellschaft für Angewandte Mathematik und Mechanik, and the Nederlands Rekenmachine Genootschap. The seven representatives held a final preparatory meeting at Mainz in December 1959.

Meanwhile, in the United States, anyone who wished to suggest changes or corrections to Algol was requested to send his comments to the `Communications of the ACM', where they were published. These comments then became the basis of consideration for changes in the Algol language. Both the SHARE and USE organisations established Algol working groups, and both organisations were represented on the ACM Committee on Programming Languages. The ACM Committee met in Washington in November 1959 and considered all comments on Algol that had been sent to the ACM `Communications'. Also, seven representatives were selected to attend the January 1960 international conference. The seven representatives held a final preparatory meeting in Boston in December 1959.

 

January 1960 Conference

The thirteen representatives (1), from Denmark, England, France, Germany, Holland, Switzerland, and the United States, conferred in Paris from January 11 to 16, 1960.

(1) 

William Turanski of the American group was killed by an automobile just prior to the January 1960 Conference.

Prior to this meeting a completely new draft report was worked out from the preliminary report and the recommendations of the preparatory meetings by Peter Naur and the Conference adopted this new form as the basis for its report. The Conference then proceeded to work for agreement on each item of the report. The present report represents the union of the Committee's concepts and the intersection of its agreements.

 

April 1962 Conference [Edited by M. Woodger]

A meeting of some of the authors of Algol 60 was held on 2nd - 3rd April in Rome, Italy, through the facilities and courtesy of the International Computation Centre. The following were present:

Authors             Advisers            Observer

F. L. Bauer         M. Paul             W. L. van der Poel
J. Green            R. Franciotti       (Chairman, IFIP TC 2.1
C. Katz             P. Z. Ingerman      Working Group Algol)
R. Kogon (representing
        J.W. Backus)
P. Naur
K. Samuelson        G. Seegemüller
J. H. Wegstein      R.E. Utman
A. van Wijngaarden
M. Woodger          P. Landin
 

The purpose of the meeting was to correct known errors in, attempt to eliminate apparent ambiguities in, and otherwise clarify the Algol 60 Report. Extensions to the language were not considered at the meeting. Various proposals for correction and clarification that were submitted by interested parties in response to the Questionnaire in Algol Bulletin No. 14 were used as a guide.

This report constitutes a supplement to the Algol 60 Report which should resolve a number of difficulties therein. Not all of the questions raised concerning the original report could be resolved. Rather than risk of hastily drawn conclusions on a number of subtle points, which might create new ambiguities, the committee decided to report only those points which they unanimously felt could be stated in clear and unambiguous fashion.

Questions concerned with the following areas left for further consideration by Working Group 2.1 of IFIP, in the expectation that current work on advanced programming languages will lead to better resolution:

  1. Side effects of functions.
  2. The call by name concept.
  3. own: static or dynamic.
  4. For statement: static or dynamic.
  5. Conflict between specification and declaration.

The authors of the Algol 60 Report present at the Rome Conference, being aware of the formation of a Working Group on Algol by IFIP, accepted that any collective responsibility which they might have with respect to the development, specification, and refinement of the Algol language will from now on be transferred to that body.

This report has been reviewed by IFIP TC 2 on Programming Languages in August 1962 and has been approved by the Council of the International Federation for Information Processing.

As with the preliminary Algol report, three different levels of language are recognized, namely a Reference Language, a Publication Language, and several Hardware Representations.

 
Reference Language
  1. It is the working language of the committee.
  2. It is the defining language.
  3. The characters are determined by ease of mutual understanding and not by any computer limitations, coders notation, or pure mathematical notation.
  4. It is the basic reference and guide for compiler builders.
  5. It is the guide for all hardware representations.
  6. It is the guide for transliterating from publication language to any locally appropriate hardware representations.
  7. The main publications of the Algol language itself will use the reference representation.
 
Publication Language
  1. The publication language admits variations of the reference language according to usage of printing and handwriting (e.g. subscripts, spaces, exponents, Greek letters).
  2. It is used for stating and communicating process.
  3. The characters used may be different in different countries, but univocal correspondence with reference representation must be secured.
 
Hardware Representations
  1. Each of these is a condensation of the reference language enforced by the limited number of characters on the standard input equipment.
  2. Each one of these uses the character set of a particular computer and is the language accepted by a translator for that computer.
  3. Each of these must by accompanied by a special set of rules for transliterating from publication or reference language.
 

For transliteration between the reference language and a language suitable for publications, among others, the following rules are recommended.

Reference Language              Publication Language


Subscript brackets [ ]          Lowering of the line between the
                                brackets and removal of the brackets.

Exponentiation POWER                Raising the exponent.

Parentheses ()                  Any form of parentheses, brackets,
                                braces.

Basis of ten 10                  Raising of the ten and of the following
                                integral number, inserting of the
                                intended multiplication sign.