The 1950s and early 1960s saw the emergence of two highlevel computer languages into widespread use. The first was designed to be an efficient language for performing scientific calculations (see fortran). The second was designed for business applications, with an emphasis on data processing (see cobol). However many programs continued to be coded in low-level languages (see assembler) designed to take advantages of the hardware features of particular machines.
In order to be able to easily express and share methods of calculation (see algorithm), leading programmers began to seek a “universal” programming language that was not designed for a particular application or hardware platform. By 1957, the German GAMM (Gesellschaft für angewandte Mathematik und Mechanik) and the American ACM (Association for Computing Machinery) had joined forces to develop the specifications for such a language. The result became known as the Zurich Report or Algol-58, and it was refined into the first widespread implementation of the language, Algol-60.
Algol is a block-structured, procedural language. Each variable is declared to belong to one of a small number of kinds of data including integer, real number (see data types), or a series of values of either type (see arr ay). While the number of types is limited and there is no facility for defining new types, the compiler’s type checking (making sure a data item matches the variable’s declared type) introduced a level of security not found in most earlier languages.
An Algol program can contain a number of separate procedures or incorporate externally defined procedures (see library, program), and the variables with the same name in different procedure blocks do not interfere with one another. A procedure can call itself (see recursion). Standard control structures (see branching statements and loop) were provided.
The following simple Algol program stores the numbers from 1 to 10 in an array while adding them up, then prints the total:
begin integer array ints[1:10]; integer counter, total; total := 0; for counter :=1 step 1 until counter > 10 do begin ints [counter] := counter; total := total + ints[counter]; end; printstring “The total is:”; printint (total); end
The revision that became known as Algol-68 expanded the variety of data types (including the addition of boolean, or true/false values) and added user-defined types and “structs” (records containing fields of different types of data). Pointers (references to values) were also implemented, and flexibility was added to the parameters that could be passed to and from procedures.
Although Algol was used as a production language in some computer centers (particularly in Europe), its relative complexity and unfamiliarity impeded its acceptance, as did the widespread corporate backing for the rival languages FORTRAN and especially COBOL. Algol achieved its greatest success in two respects: for a time it became the language of choice for describing new algorithms for computer scientists, and its structural features would be adopted in the new procedural languages that emerged in the 1970s (see Pascal and c).
“Algol 68 Home Page.” URL: http://www.algol68.org. Accessed April 10, 2007.
Backus, J. W., and others. “Revised Report on the Algorithmic Language Algol 60.” Originally published in Numerische Mathematik, the Communications of the ACM, and the Journal of the British Computer Society. Available online. URL: http://www.masswerk.at/algol60/report.htm. Accessed April 10, 2007.