An extensive revision of ALGOL 60
by Adriaan van Wijngaarden et al. ALGOL 68 was discussed from 1963 by Working Group 2.1 of IFIP
. Its definition was accepted in December 1968.
ALGOL 68 was the first, and still one of very few, programming languages for which a complete formal specification was created before its implementation. However, this specification was hard to understand due to its formality, the fact that it used an unfamiliar metasyntax
notation (not BNF
) and its unconventional terminology.
One of the singular features of ALGOL 68 was its orthogonal
design, making for freedom from arbitrary rules (such as restrictions in other languages that arrays could only be used as parameters but not as results). It also allowed user defined data types
, then an unheard-of feature.
It featured structural equivalence
; automatic type conversion ("coercion
") including dereferencing
; flexible arrays
; generalised loops (for-from-by-to-while-do-od), if-then-else-elif-fi, an integer case statement with an 'out' clause (case-in-out-esac); skip
; user-defined operators
; procedure parameters
execution (par-begin-end); semaphores
; generators "heap" and "loc" for dynamic allocation
. It had no abstract data types
or separate compilation