Concepts of Programming Languages

(Sean Pound) #1
As soon as the SIMULA I implementation was completed, Nygaard and
Dahl began efforts to extend the language by adding new features and modify-
ing some existing constructs in order to make the language useful for general-
purpose applications. The result of this work was SIMULA 67, whose design
was first presented publicly in March 1967 (Dahl and Nygaard, 1967). We will
discuss only SIMULA 67, although some of the features of interest in SIMULA
67 are also in SIMULA I.

2.10.2 Language Overview


SIMULA 67 is an extension of ALGOL 60, taking both block structure and the
control statements from that language. The primary deficiency of ALGOL 60
(and other languages at that time) for simulation applications was the design of
its subprograms. Simulation requires subprograms that are allowed to restart
at the position where they previously stopped. Subprograms with this kind of
control are known as coroutines because the caller and called subprograms
have a somewhat equal relationship with each other, rather than the rigid
master/slave relationship they have in most imperative languages.
To provide support for coroutines in SIMULA 67, the class construct was
developed. This was an important development because the concept of data
abstraction began with it. Furthermore, data abstraction provides the founda-
tion for object-oriented programming.
It is interesting to note that the important concept of data abstraction was
not developed and attributed to the class construct until 1972, when Hoare
(1972) recognized the connection.

2.11 Orthogonal Design: ALGOL 68


ALGOL 68 was the source of several new ideas in language design, some of
which were subsequently adopted by other languages. We include it here for
that reason, even though it never achieved widespread use in either Europe or
the United States.

2.11.1 Design Process
The development of the ALGOL family did not end when the revised report
on ALGOL 60 appeared in 1962, although it was six years until the next design
iteration was published. The resulting language, ALGOL 68 (van Wijngaarden
et al., 1969), was dramatically different from its predecessor.
One of the most interesting innovations of ALGOL 68 was one of its pri-
mary design criteria: orthogonality. Recall our discussion of orthogonality in
Chapter 1. The use of orthogonality resulted in several innovative features of
ALGOL 68, one of which is described in the following section.

2.11 Orthogonal Design: ALGOL 68 73
Free download pdf