One important result of orthogonality in ALGOL 68 was its inclusion of userdefined
data types. Earlier languages, such as Fortran, included only a few basic
data structures. PL/I" included a larger number of data structures, which made
it harder to learn and difficult to implement, but it obviously could not provide
an appropriate data structure for every need.
The approach of ALGOL 68 to data structures was to provide a few primitive
types and structures and allow the user to combine those primitives into
a large number of different structures. This provision for user-defined data
types was carried over to some extent into all of the major imperative languages
designed since then. User-defined data types are valuable because they allow
the user to design data abstractions that fit particular problems very closely. All
aspects of data types are discussed in Chapter 6.
As another first in the area of data types, ALGOL 68 introduced the
kind of dynamic arrays that will be termed implicit heap-dynamic in Chapter 5.
A dynamic array is one in which the declaration does not specify subscript
bounds. Assignments to a dynamic array cause allocation of required storage.
In ALGOL 68, dynamic arrays are called flex arrays.
contributions to the pool of knowledge of programming languages.
PL/I" was the first programming language to have the following facilities:
• Programs were allowed to create concurrently executing subprograms.
Although this was a good idea, it was poorly developed in PL/I".
• It was possible to detect and handle 23 different types of exceptions, or
run-time errors.