Thursday, 18 January 2018

ALGOL (ALGOrithmic Language)

ALGOL is a family of high-level programming languages originally developed in the late 1950s. ALGOL is a mathematical language [1] indeed the name comes from ALGOrithmic Language [2]. The language has had a major influence on modern languages like C and Pascal. Modern languages like these are sometimes referred to as "Algol-like".

ALGOL was originally created at a committee of American and European computer scientists in 1958. It was developed to try and rectify what were saw as problems with other early languages like  FORTRAN. ALGOL has been a major research and teaching language and became the standard for the publication of algorithms. This ensured its influence on future language development.

There have been three standards of ALGOL, the first was ALGOL 58 as originally defined. It was followed by ALGOL 60 and finally ALGOL 68 which added new elements to the language. However ALGOL 60 remained the most popular version as some thought the ALGOL 68 changes went a bit too far and could be considered a whole new language.

As well as usage in academia and research examples of ALGOL usage include software on the Soviet Buran space shuttle, computer systems of the Royal Air Force in the Cold War and a number of operating systems from companies like ICL and Burroughs. It is still used on Unisys mainframes as a system language and elsewhere on "legacy" systems (including some UK government departments).

Finally lets look at some code examples of ALGOL 60. Even if you are unfamiliar with the language and never seen it before if you know a bit of C, Pascal or similar then ALGOL is perfectly understandable:

for n:= 5 step 1 until 10 do
begin x:=n/5

if fract(p) > 0.5 then a := p;

day := day + days[month];

One thing ALGOL 60 did lack was input and output facilities. This was left to individual implementations of the language and thus differed between computer manufacturers.

[1] Eric Foxley & Henry R. Neave, A First Course in ALGOL 60 (Addison-Wesley, 1968) p. 5
[2] Graham C. Lester, Data Processing Vol 1: Hardware & Programming (Polytech, 1980) p. 203