complished first step up from machine language. A summary of these
rather tricky concepts is presented in Figure 58.
FIGURE 58. Assemblers and compilers
are both translators into machine language.
This is indicated by the solid lines.
Moreover, since they are themselves pro-
grams, they are originally written in a lan-
guage also. The wavy lines indicate that a
compiler can be written in assembly lan-
guage, and an assembler in machine lan-
guage.
Now as sophistication increased, people realized that a partially written
compiler could be used to compile extensions of itself. In other words, once
a certain minimal core of a compiler had been written, then that minimal
compiler could translate bigger compilers into machine language-which
in turn could translate yet bigger compilers, until the final, full-blown
compiler had been compiled. This process is affectionately known as
"bootstrapping"-for obvious reasons (at least if your native language is
English it is obvious). It is not so different from the attainment by a child of
a critical level of fluency in his native language, from which point on his
vocabulary and fluency can grow by leaps and bounds, since he can use
language to acquire new language.
Levels on Which to Describe Running Programs
Compiler languages typically do not reflect the structure of the machines
which will run programs written in them. This is one of their chief advan-
tages over the highly specialized assembly and machine languages. Of
course, when a compiler language program is translated into machine
language, the resulting program is machine-dependent. Therefore one can
describe a program which is being executed in a machine-independent way
or a machine-dependent way. It is like referring to a paragraph in a book
by its subject matter (publisher-independent), or its page number and
position on the page (publisher-dependent).
As long as a program is running correctly, it hardly matters how you
descrihe it or think of its functioning. It is when something goes wrong that
294 Levels of Description, and Computer Systems