Gödel, Escher, Bach An Eternal Golden Braid by Douglas R. Hofstadter

(Dana P.) #1
it is important to be able to think on different levels. If, for instance, the
machine is instructed to divide by zero at some stage, it will come to a halt
and let the user know of this problem, by telling where in the program the
questionable event occurred. However, the specification is often given on a
lower level than that in which the programmer wrote the program. Here
are three parallel descriptions of a program grinding to a halt:
Machine Language Level:
"Execution of the program stopped In location
1110010101110111"
Assembly Language Level:
"Execution of the program stopped when the DIV (divide)
instruction was hit"
Compiler Language Level:
"Execution of the program stopped during evaluation of the
algebraic expression '(A + B)/Z' "

One of the greatest problems for systems programmers (the people who
write compilers, interpreters, assemblers, and other programs to be used by
many people) is to figure out how to write error-detecting routines in such
a way that the messages which they feed to the user whose program has a
"bug" provide high-level, rather than low-level, descriptions of the prob-
lem. It is an interesting reversal that when something goes wrong in a
genetic "program" (e.g., a mutation), the "bug" is manifest only to people
on a high level-namely on the phenotype level, not the genotype level.
Actually, modern biology uses mutations as one of its principal windows
onto genetic processes, because of their multilevel traceability.

Microprogramming and Operating Systems

In modern computer systems, there are several other levels of the hierar-
chy. For instance, some systems-often the so-called "microcomputers"-
come with machine language instructions which are even more rudimen-
tary than the instruction to add a number in memory to a number in a
register. It is up to the user to decide what kinds of ordinary machine-level
instructions he would like to be able to program in; he "microprograms"
these instructions in terms of the "micro-instructions" which are available.
Then the "higher-level machine language" instructions which he has de-
signed may be burned into the circuitry and become hard-wired, although
they need not be. Thus microprogramming allows the user to step a little
below the conventional machine language level. One of the consequences is
that a computer of one manufacturer can be hard-wired (via micropro-
gramming) so as to have the same machine language instruction set as a
computer of the same, or even another, manufacturer. The micropro-
grammed computer is said to be "emulating" the other computer.
Then there is the level of the operating system, which fits between the

Levels of Description, and Computer Systems 295

Free download pdf