History of the early algorithmic languages

German Konrad Zuse offered the first attempt at deriving an algorithm language, in the late 1940’s. Known as Plankalkül, German for “Plan Calculus”, there is very little written about this language in the any historical computing papers because although it was designed in the early 1940s, and was not published until 1972, and the first compiler was not actually created until 2000 by the Free University of BerlinThe example below shows a program which computes the maximum of three variables by calling the function max:

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END

In 1951, Heinz Rutishauser proposed an algebraic, algorithmic language Superplan [1], which incorporated some ideas which would later surface in languages such as ALGOL, e.g. the for loop. However his language was restrictive, only allowing simple equations to be solved, and only allowed one non-sequential control structure: für.

In 1954 Corrado Böhm (Boehm) [2] published a means of translating algebraic formulae into computer notation. The language only had assignment statements, and no control structures. It was the first meta-circular compiler because the compiler could be written in the compiled language. For example:

B→π means "go to B"
?→x means "input a value and assign it to x"

Böhm’s language only worked on non-negative integers of 14 decimal digits. Sadly, neither of these algorithmic languages were ever put to practical use. Unlike in Europe, in North America, the era of algorithmic languages was preceded by an assembly language epoch. In 1954, Laning and Zierler [3] of MIT presented an algorithmic language in the form of an algebraic compiler. This system was actually implemented on a Whirlwind system. Below is a sample of code, incorporating a primitive control structure CP, which effectively jumped back to equation 1 (if the last calculated quantity is negative).

[1] Rutishauser, H., “Automatische Rechenplanfertigung bei programmgesteuerten Rechenmaschinen”, Zeitschrift für angewandte Mathematik und Physik (Journal of Applied Mathematics and Physics), 3(4), pp.312-313 (1952)
[2] Boehm, C., “Calculatrices digitales du dichiffrage de formules logico-mathematiques par la machine meme”, Thesis, ETH Zurich (1954).
[3] Laning, J.H., Zierler, N., “A program for translation of mathematical equations for Whirlwind I”, Engineering Memorandum E-364 (1954)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s