Computer Languages by Committee - the 1960s
Written by Harry Fairhead   
Tuesday, 26 November 2013
Article Index
Computer Languages by Committee - the 1960s
Two Cultures




When studying the history of Algol the name that crops up most is Peter Naur. He was originally an astronomer and became involved in computing via working out the orbits of comets.

This astronomy connection might even be the reason for the language being called Algol - as well as an acronym for Algorithmic Language it is also the name of the second brightest star in Perseus and the first known eclipsing binary. (The name derives from the Arabic for ghoul - Al ghul.)

Various people suggested other names for the new language - Alan Perlis and Fritz Bauer offered Agricola on the tenuous assumption that it would be as popular as cola - but it is generally agreed that the name Algol emerged from the meeting without an attributable source.

Peter Naur also caused something of a stir by handing out an 18-page draft report that he had prepared independently. As a result the committee was more or less forced to adopt it as a starting point and Peter Naur was appointed the editor of the influential Algol Bulletin. Fritz Bauer comments that the self-appointing of Peter Naur as "Pope" wasn't entirely welcome but it did help get the report finished in spite of the very tight time schedule - six days.

As if this wasn't enough controversy for one man, there is also some argument about what to call the method of describing a computer language. Does BNF stand for "Backus Normal Form" or "Backus Naur Form"?

One of the big problems surrounding language design in the early days was how to describe a language. The problem was partially solved by John Backus when he adapted a theoretic notation called a 'production rule' to the description of the syntax of a language. For example, in BNF notation an unsigned number is:

<unsigned number>:=<digit> or
                 <unsigned number> <digit>

which roughly says that an unsigned number is a digit or an unsigned number followed by a digit. You can see that this has the same sort of feel to it as the compound statement idea described earlier.

BNF is an ideal method of describing what is a legal instruction in a language and it can even be used to construct compilers. Peter Naur modified Backus' notation slightly and used it to define Algol. You can imagine the resentment felt by Naur's fellow Algol committee members at the suggestion that BNF means Backus-Naur-Form!

There are many interesting things that can be said about Algol and the goings on that created it but the subject cannot be left without explaining the underlying model of implementation. It has already been pointed out that the idea of a stack was something that was part of Algol but it goes even deeper.

The idea of a model of implementation is a relatively new one and it certainly wasn't explicit in the design of Algol. The basic idea is that the facilities and organisational methods that a computer offers makes it easier or harder to implement any particular language. The implementation model of Algol is based around the idea of a stack - if you try to implement Algol without using a stack the task is next to impossible but once you have thought of using a stack it's relatively easy.

Fortran was based on a 'flat address static allocation implementation model' which in basic English means that it didn't need a stack and it assumed that variables were allocated to fixed locations in memory. The whole idea of a computer designed around a stack is a much more complex than Fortran's model but one manufacturer, Burroughs, even built a computer based around the use of a stack - so demonstrating the influence of software on hardware design.

You could say that while Algol isn't much used today it is still with us in all of the C like languages - Java, C# and so on which are block structured and use a stack model for their implementation. 





At about the same time (1959) that the Algol committee were hard at work, the business users, well mostly people from the companies making commercial computer hardware, also formed a committee - CODASYL (Committee on DAta SYstems Languages). In 1960 the result was a report that defined the first version of COBOL (COmmon Business Oriented Language).

The COBOL committee was a very different kettle of fish to the Algol committee. These were practical people very concerned to produce a language that could be used - and perhaps even concerned to produce a language that could be used by programmers less talented than they. Many of them had excellent theoretical backgrounds and probably could have designed an Algol-like language if they had a mind to; but they didn't.

The precursors of COBOL were FLOW-MATIC, designed by Grace Hopper's team at Remmington Rand; AIMACO, an Airforce programming language; Commercial Translator, a language specification developed but not implemented by IBM; and FACT, developed for Honeywell.



Rear Admiral  Grace Hopper


The aim of the committee was to produce a language that could be read and understood by programmers and managers. They deliberately tried to make the language wordy and English-like by using lots of `noise' words that were irrelevant to the meaning. This wordiness (or should it be wordimess!) has long been the major criticism of the language.

To give you some idea of how low the committee were aiming it is worth saying that they rejected the idea of using the well known signs of arithmetic i.e. + and - in favour of the verbs ADD, SUBTRACT, MULTIPLY and DIVIDE.

So instead of writing


you would write




would be written


At this point it looks as if I have nothing encouraging to say about COBOL but this isn't the case. The COBOL committee concentrated on the practical matters much more than the Algol committee.

For example, Algol left the details of I/O undefined and up to the particular machine manufacturer to solve - an attitude that you will still find in Algol-derived languages such as C and Modula. But COBOL's greatest strength is its I/O. It introduced the idea of separating the data from the procedural part of the program. You defined the data (i.e. the record structure) that you wanted to work with in one area of the program's text and the what you wanted to do with it in another.

COBOL was carefully designed to make it easy to do the sort of tasks that were involved in business data processing. It certainly didn't include any of the academic ideas to be found in Algol. The best description of it was a sort of business Fortran - but amazingly wordy compared to the compact Fortran notation.

The people involved in the COBOL project were also very different from the Algol committee - they were all involved in commercial data processing, the non-glamorous but highly profitable end of computing!

You could best describe the leading lights as down to earth. Grace Hopper for example was originally a mathematician who somehow became attached to the US Navy for most of her career - so much so that rather than Dr Hopper she is generally known by her navy rank, eventually as Rear Admiral Hopper. What could be a clearer statement that she didn't think of herself as an academic!

Another mathematician on the COBOL project was Jean Sammet who, like Grace Hopper, disdained the purely academic. In response to the question

"Why do you think that academicians have chosen to ignore COBOL?"

Jean answered

"Many have a snobbish attitude and feel it is beneath their dignity".




Last Updated ( Tuesday, 26 November 2013 )

RSS feed of all content
I Programmer - full contents
Copyright © 2014 All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.