Concepts of Programming Languages

(Sean Pound) #1

or indirect descendants; examples include PL/I, SIMULA 67, ALGOL 68, C,
Pascal, Ada, C++, Java, and C#.
The ALGOL 58/ALGOL 60 design effort included a long list of firsts. It
was the first time that an international group attempted to design a program-
ming language. It was the first language that was designed to be machine inde-
pendent. It was also the first language whose syntax was formally described.
This successful use of the BNF formalism initiated several important fields of
computer science: formal languages, parsing theory, and BNF-based compiler
design. Finally, the structure of ALGOL 60 affected machine architecture. In
the most striking example of this, an extension of the language was used as the
systems language of a series of large-scale computers, the Burroughs B5000,
B6000, and B7000 machines, which were designed with a hardware stack to
implement efficiently the block structure and recursive subprograms of the
language.
On the other side of the coin, ALGOL 60 never achieved widespread use
in the United States. Even in Europe, where it was more popular than in the
United States, it never became the dominant language. There are a number
of reasons for its lack of acceptance. For one thing, some of the features of
ALGOL 60 turned out to be too flexible; they made understanding difficult
and implementation inefficient. The best example of this is the pass-by-name
method of passing parameters to subprograms, which is explained in Chapter



  1. The difficulties of implementing ALGOL 60 are evidenced by Rutishauser’s
    statement in 1967 that few, if any, implementations included the full ALGOL
    60 language (Rutishauser, 1967, p. 8).
    The lack of input and output statements in the language was another major
    reason for its lack of acceptance. Implementation-dependent input/output
    made programs difficult to port to other computers.
    Ironically, one of the most important contributions to computer science
    associated with ALGOL 60, BNF, was also a factor in its lack of acceptance.
    Although BNF is now considered a simple and elegant means of syntax descrip-
    tion, in 1960 it seemed strange and complicated.
    Finally, although there were many other problems, the entrenchment of
    Fortran among users and the lack of support by IBM were probably the most
    important factors in ALGOL 60’s failure to gain widespread use.
    The ALGOL 60 effort was never really complete, in the sense that ambi-
    guities and obscurities were always a part of the language description (Knuth,
    1967).
    The following is an example of an ALGOL 60 program:


comment ALGOL 60 Example Program
Input: An integer, listlen, where listlen is less than
100, followed by listlen-integer values
Output: The number of input values that are greater than
the average of all the input values ;
begin
integer array intlist [1:99];


2.5 The First Step Toward Sophistication: ALGOL 60 57
Free download pdf