ALGOL 68

ALGOL 68

ALGOL 68 (short for ALGOrithmic Language 1968) is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics.

Contributions of ALGOL 68 to the field of computer science are deep and wide ranging, although some of them were not publicly identified until they were passed, in one form or another, to one of many subsequently developed programming languages.

ALGOL 68 features include expression-based syntax, user-declared types & structures/tagged-unions, a reference model of variables & reference parameters, string & array & matrix slicing and also concurrency.

ALGOL 68 was designed by IFIP Working Group 2.1. On December 20, 1968 the language was formally adopted by Working Group 2.1 and subsequently approved for publication by the General Assembly of IFIP.

ALGOL 68 was defined using a two-level grammar formalism invented by Adriaan van Wijngaarden. Van Wijngaarden grammars use a context-free grammar to generate an infinite set of productions that will recognize a particular ALGOL 68 program; notably, they are able to express the kind of requirements that in many other programming language standards are labeled "semantics" and have to be expressed in ambiguity-prone natural language prose, and then implemented in compilers as ad hoc code attached to the formal language parser.

The main aims and principles of design of ALGOL 68:
  1. Completeness and clarity of design,[1]
  2. Orthogonal design,[2]
  3. Security,[3]
  4. Efficiency:[4]
    • Static mode checking
    • Mode-independent parsing
    • Independent compilation
    • Loop optimization
    • Representations - in minimal & larger character sets

{| style="margin:auto; border-collapse:collapse; border-style:none; background-color:transparent; width:auto; " class="cquote"
ALGOL 68 was the first (and possibly one of the last) major language for which a full formal definition was made before it was implemented.

C.H.A. Koster, [5]

|}

ALGOL 68 has been criticized, most prominently by some members of its design committee such as C. A. R. Hoare and Edsger Dijkstra, for abandoning the simplicity of ALGOL 60 becoming a vehicle for complex or overly general ideas, and doing little to make the compiler writer's task easy, in contrast to deliberately simple contemporaries (and competitors) such as C, S-algol and Pascal.

In the 1973 revision, certain features - such as proceduring, gommas and formal bounds - were omitted.[6] c.f. The language of the unrevised report.

Though European defence agencies (in Britain Royal Signals and Radar Establishment - RSRE) promoted the use of ALGOL 68 for its expected security advantages, the American side of the NATO alliance decided to develop a different project, the Ada programming language, making its use obligatory for U.S. defense contracts.

Steve Bourne, who was on the Algol 68 revision committee, took some of its ideas to his Bourne shell (and thereby, to descendant shells such as Bash) and to C (and thereby to descendants such as C++).

The complete history of the project can be found in C.H. Lindsey's A History of ALGOL 68.[7]

For a full length treatment of the language, see Programming Algol 68 Made Easy[8] by Dr. Sian Leitch, or Learning Algol 68 Genie by Dr. Marcel van der Veer which includes the Revised Report.

Time-line of ALGOL 68

Year Event Contributor
Mar 1959 ALGOL Bulletin Issue 1 (First) Peter Naur / ACM
Feb 1968 Draft Report(DR) Published IFIP Working Group 2.1
Mar 1968 Algol 68 Final Report(FR) Presented at Munich Meeting IFIP Working Group 2.1
Jun 1968 Meeting in Tirrenia, Italy IFIP Working Group 2.1
Aug 1968 Meeting in North Berwick, Scotland IFIP Working Group 2.1
Dec 1968 Algol 68 Final Report(FR) Presented at Munich Meeting IFIP Working Group 2.1
Apr 1970 ALGOL 68R(R) under GEORGE 3 on an ICL 1907F. Royal Signals and Radar Est.
Sep 1973 Revised Report (RR)Published IFIP Working Group 2.1
1975 ALGOL 68C(C) - transportable compiler (zcode VM) S. Bourne, Andrew Birrell, and Mike Guy
Jun 1977 Strathclyde ALGOL 68 conference, Scotland ACM
May 1978 Proposals for ALGOL H - A Superlanguage of ALGOL 68 A. P. Black, V. J. Rayward-Smith
1980 ALGOL 68+(+) Super Language Lambert Meertens & van Vliet
1984 Full ALGOL 68S(S) compiler for Sun, SPARC, and PCs C.H.Lindsey ea, Manchester
Aug 1988 ALGOL Bulletin Issue 52 (last) Ed. C. H. Lindsey / ACM
May 1997 Algol68 S(S) published on the internet Charles H. Lindsey
Nov 2001 ALGOL 68G(G) released (GNU GPL open source licensing) Marcel van der Veer

The Algorithmic Language ALGOL 68 Reports

"Van Wijngaarden once characterized the four authors, somewhat tongue-in-cheek, as: Koster: transputter, Peck: syntaxer, Mailloux: implementer, Van Wijngaarden: party ideologist." -- Koster.
  • Oct. 1968: Penultimate Draft Report on the Algorithmic Language ALGOL 68 - Chapters 1-9 [10] Chapters 10-12 [11] - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster.
  • Dec. 1968: Report on the Algorithmic Language ALGOL 68 - Offprint from Numerische Mathematik, 14, 79-218 (1969); Springer-Verlag.[12] - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster.
    • WG 2.1 members active in the original design of ALGOL 68:.[13]

Lindsey, Charles H. (1996). T.J. Bergin & R.G. Gibson. ed. . History of Programming Languages-II. also in ACM SIGPLAN Notices 28(3), March 1993. (Includes a comprehensive bibliography of the meetings and discussions before, during and after the development of ALGOL 68.). ACM Press. p. 7. .  Friedrich L. BauerHans BekicEdsger Dijkstra† • Fraser Duncan† • Jan Garwick† • Gerhard GoosTony Hoare† • Peter Zilahy IngermanKees KosterPeter LandinCharles LindseyBarry MaillouxJohn McCarthyJ.N. MerrierPeter Naur‡ • Manfred PaulJohn PeckWillem van der PoelBrian Randell† • Doug RossKlaus SamelsonGerhard Seegmüller† • Michel SintzoffW.M. Turski† • Aad van Wijngaarden • Niklaus Wirth‡ • Mike Woodger† • Nobuo Yoneda; †Signatories to the Minority Report. ‡Resigned after [MR 93].

Standardization

On December 20, 1968 the "Final Report" (MR 101) was adopted by the Working Group, then subsequently approved by the General Assembly of UNESCO's IFIP for publication. Translations of the standard were made for Russian, German, French and Bulgarian, and then later Japanese. The standard was also made available in Braille. Subsequently ALGOL 68 became one of the GOST standards in Russia.

  • GOST 27974-88 Programming language ALGOL 68 - Язык программирования АЛГОЛ 68[15]

(in Russian) (PDF). GOST. 1988. http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27974-88.pdf. Retrieved November 15, 2008. 

  • GOST 27975-88 Programming language ALGOL 68 extended - Язык программирования АЛГОЛ 68 расширенный[16]

(in Russian) (PDF). GOST. 1988. http://vak.ru/lib/exe/fetch.php/book/gost/pdf/gost-27975-88.pdf. Retrieved November 15, 2008.