The ALGOL (ALGOrithmic Language) series of languages were developed in the mid 1950s, with the first family member, ALGOL58 appearing in 1958. These languages greatly influenced the languages which evolved after them, and became the de facto way of describing algorithms in textbooks of the era. Algol introduced the notion of code blocks, using the keyword pairs begin and end for delimiting the blocks. There were three major specifications:
- ALGOL 58 – originally called IAL (International Algorithmic Language)
- ALGOL 60 – first implemented in 1960, revised in 1963.
- ALGOL 68 – revised 1973. Introduced flexible arrays, slices, parallelism, operator identification.
- Algol W, designed by Niklaus Wirth before moving on to Pascal, was based on Algol 60.
Algol68, as its name suggests was released in 1968, seemingly, an extension to Algol (ALGOrithmic Language) but in reality a completely different language. But what did the family of Algol’s *do* for programming? Well, the Algol’s contributed significantly to the field of programming language design.
- Formalized the concept or type.
- Names could have any length.
- Arrays could have any number of constructs.
- Parameters were separated by mode (in & out)
- Subscripts were placed in brackets.
- Introduced compound statements.
- Used the semicolon as the statement separator.
- Assignment operator was :=
- The if statement included an else-if clause.
Algol 58 introduced into programming languages such terms as type, formal versus actual parameter, declaration, identifier, for loop, switch, compound statement, and the begin end delimiters.
- The concept of block structure, i.e. local scope
- Incorporated two parameter passing methods: pass-by-value, and pass-by-name
- Procedures were allowed to be recursive (new for a procedural language)
- Stack dynamic arrays
Algol 60 introduced into programming languages such terms as block, call by value, call by name, typed procedures, declaration scope, dynamic arrays, side effects, local and global variables, until, while, if then else.
- User defined data structures
- Reference types
- Dynamic arrays
Sadly, the only real compiler left is Algol 68 Genie, available for many platforms. It’s fun to play around with, but obviously not really practical.