26 COMPUTER ENGINEERING
for each language machine. For example, ALGOL, APL, BASIC, COBOL, and FORTRAN all have as separate and distinct architectures as a PDP-l0 and a PDP-l1 do. This use of architecture, because it describes behavior, is quite consistent with that of Blaauw. Moreover, when applied to software structures, Blaauw's framework fits well. There are two implementations, FORTRAN TV-PLUS (an optimizing compiler) and the initial FORTRAN IV of the one ANSI FORTRAN architecture. Moreover, different implementations use different realization techniques: some use BLISS, others use assembler language.
Although Blaauw and Brooks define implementation and realization clearly, these definitions are not widely used. The main problem is that both terms are sensitive to technology changes and, hence, interact closely. Computer engineers tend to overuse and intermix them so that the two words are used interchangeably. This is reflected in this book, where they are used to have roughly the same meaning (e.g., "The KI10 processor for the PDP-l0 was implemented using high-speed (H-Series) transistor-transistor logic."). In Table 6, definitions are given for the two words so that the reader may further relate descriptions back to these definitions. "Implementation" is the register transfer level machine, roughly the microprogrammed machine; "realization" is the physical realization, the physical implementation in terms of packaging and technology.
The most useful distinction is between architecture, on the one hand, and implementation (subsuming realization), on the other. Seeing the distinction clearly enables one to preserve architectural compatibility between machine models, and this is crucial if users' and manufacturers' software investments are to be pre served. Implementation can then be as dynamic as desired, being continually changed by technology. Architecture must remain static for long periods (10 years is a common goal).
In 1949 Maurice Wilkes, only one month after his EDSAC computer was operational and before any stored program computers in the United States were operating, had already perceived the value in having a series, or set, of computers share the same instruction set:
When a machine was finished, and a number of subroutines were in use, the order code could not be altered without causing a good deal of trouble. There would be almost as much capital sunk in the library of subroutines as the machine itself, and builders of new machines in the future might wish to make use of the same order code as an existing machine in order that the subroutines could be taken over without modification.