Superplan – groovy!

Some languages just never made it into the limelight. Sad really, but history is often written from a one sided perspective. In 1951, Swiss mathematician and computer scientist Heinz Rutishauser (1918-1970) proposed an algebraic, algorithmic language called Superplan [1], a “program that produces programs“, or compiler. One of the core contributions of Superplan was that it was likely the first language to incorporate the structure that would become the for loop in subsequent languages – für. In fact it was the only non-sequential control structure in the language. Superplan had a for loop, 1D arrays, but no ifgoto or I/O statements.

It allowed for the evaluation of simple formulae.  The addition of a for loop (für in German) was a pivotal development in programming languages, as even Fortran lacked this (it had DO).  Some of the concepts in Superplan would later surface in Algol, as Rutishauser was one of the architects of ALGOL-58 and later ALGOL-60. Figure 1 shows an example of a piece of a Superplan program (3.2) from [1]. It shows the use of three well-structured nested loops. The for loop constructor was of the form:

für v = E1(E2)E3

Where v is the index variable, E1 is the initial value, E2 is the value of the increment or step, and E3 determines the end value. The for loop was of the terminated kind, using the clause “Ende Index v“.

Fig.1: A piece of code with nested loops

Rutishauser published a paper in 1955 on programming for the Swiss Federal Institute of Technology’s new digital computer, ERMETH [2]. In it he describes an algorithm for approximating log x, using pseudocode that includes the for loop, and an if statement.

Superplan also introduced the notion of using = as the assignment operator. It likely was not popularized until Fortran appeared in 1957. Figure 1 shows use of the “assign” symbol, , representing ⇒. It was called the “replacement” symbol, and a precursor to the use of =. So x ⇒ p means that p should take the value of x. Superplan incorporated ideas which would later surface in ALGOL-58. ALGOL-58 didn’t really make much of an impact, but it spurned variants such as MAD and JOVIAL (still in use today). ALGOL-58 changed the assignment symbol to := which was used by many “Algol” based languages.

ALGOL-58: for v := E1(E2)E3
ALGOL-60: for v := E1 step E2 until E3 do

[1] Rutishauser, H., “Automatische Rechenplanfertigung bei programmgesteuerten”, Mitteilungen aus dem Institut für angewandte Mathematik, Birkhäuser Verlag (Basel) (1961)
[2] Rutishauser, H., “Some programming techniques for the ERMETH”, Journal of the ACM, 2(1), pp.1-4 (1955)

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.