ALGOL

ALGOL
A 1965 manual for ALGOL-20
ParadigmProcedural, imperative, structured
FamilyALGOL
Designed byBauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy
First appeared1958; 66 years ago (1958)
Typing disciplineStatic, strong
ScopeLexical
Influenced
Most subsequent imperative languages (including so-called ALGOL-like languages)
e.g. PL/I, Simula, Pascal, C and Scheme

ALGOL (/ˈælɡɒl, -ɡɔːl/; short for "Algorithmic Language")[1] is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the Association for Computing Machinery (ACM) in textbooks and academic sources for more than thirty years.[2]

In the sense that the syntax of most modern languages is "Algol-like",[3] it was arguably more influential than three other high-level programming languages among which it was roughly contemporary: FORTRAN, Lisp, and COBOL.[4] It was designed to avoid some of the perceived problems with FORTRAN and eventually gave rise to many other programming languages, including PL/I, Simula, BCPL, B, Pascal, Ada, and C.

ALGOL introduced code blocks and the begin...end pairs for delimiting them. It was also the first language implementing nested function definitions with lexical scope. Moreover, it was the first programming language which gave detailed attention to formal language definition and through the Algol 60 Report introduced Backus–Naur form, a principal formal grammar notation for language design.

There were three major specifications, named after the years they were first published:

  • ALGOL 58 – originally proposed to be called IAL, for International Algebraic Language.
  • ALGOL 60 – first implemented as X1 ALGOL 60 in 1961. Revised 1963.[5][6][7]
  • ALGOL 68 – introduced new elements including flexible arrays, slices, parallelism, operator identification. Revised 1973.[8]

ALGOL 68 is substantially different from ALGOL 60 and was not well received,[according to whom?] so reference to "Algol" is generally understood to mean ALGOL 60 and its dialects.[citation needed]

  1. ^ The name of this language family is sometimes given in mixed case (Algol 60 Archived 25 June 2007 at the Wayback Machine), and sometimes in all uppercase (ALGOL68 Archived 13 September 2014 at the Wayback Machine). For simplicity this article uses ALGOL.
  2. ^ Collected Algorithms of the ACM Archived 17 October 2011 at Wikiwix Compressed archives of the algorithms. ACM.
  3. ^ O'Hearn, P. W.; Tennent, R. D. (September 1996). "Algol-like languages, Introduction". Archived from the original on 14 November 2011.
  4. ^ "The ALGOL Programming Language" Archived 6 October 2016 at the Wayback Machine, University of Michigan-Dearborn
  5. ^ Backus, John Warner; Bauer, Friedrich Ludwig; Green, Julien; Katz, Charles; McCarthy, John; Naur, Peter; Perlis, Alan Jay; Rutishauser, Heinz; Samelson, Klaus; Vauquois, Bernard; Wegstein, Joseph Henry; van Wijngaarden, Adriaan; Woodger, Michael (May 1960). Naur, Peter (ed.). "Report on the Algorithmic Language ALGOL 60". Communications of the ACM. 3 (5). Copenhagen, Denmark: 299–314. doi:10.1145/367236.367262. ISSN 0001-0782. S2CID 278290.
  6. ^ "Revised Report on the Algorithmic Language Algol 60". 1963. Archived from the original on 25 June 2007. Retrieved 8 June 2007.
  7. ^ "An ALGOL 60 Translator for the X1" (PDF). 1961. Archived (PDF) from the original on 9 October 2022. Retrieved 7 January 2021.
  8. ^ "Revised Report on the Algorithmic Language ALGOL 68" (PDF). 1973. Archived (PDF) from the original on 13 September 2014. Retrieved 13 September 2014.