Of Noomian Translations and Computer Compilers
Since it may not be clear how this problem relates to
computers I have included a detailed explanation.
Although the explanation is a little lengthy, it should
not be hard to follow.
Compilers
The central processing unit (CPU) of a
computer comes with its own built-in computer
language. Different CPU chips have different
languages. The Intel CPU chip in a PC speaks a
different language from the CPU chip in
an Apple computer.
A typical CPU instruction would translate to something like:
"Add the contents of location 2017 to the contents
of location 1346."
It would be a very tedious
and error-prone task to have to write a program
containing thousands of such instructions. To
manage the task of writing programs, high level
computer languages have been developed that
are easier to work with. Even if you have not
done any programming you may at least be
familiar with some of the names of these
languages: Basic, COBOL, FORTRAN, C, Ada, Java.
A typical statement in such a language may be
something like:
"Average_Value = Total_Value / Number_Of_Entries".
Since computers don't understand high level
languages, it is necessary to have a program
called a compiler that is written in
the computer's language which can translate from
a high level language into the computer's
language.
A Compiler for a New Computer
Suppose that we have developed a brand new
type of computer with its own CPU. We would
like to write programs for it in a high level
language. We choose the language C.
We now must write a C compiler for our
computer. Instead of writing the compiler in
the computer's language we write the compiler
in C.
Obviously, the computer will not understand
this program. The problem is analogous to the
one of an English speaker trying to use the
Noomian to English translation written in
Noomian. Here the computer's language serves
the role of English and C stands for Noomian.
What we need is the equivalent of a speaker of
Nablus and a book written in Nablus that
translates from Noomian to
Narus. In computer terms this means we need
to find another computer and a C compiler for
that computer - a progam that translates from
C (Noomian) to the other computer's language
(Nablus) written in the other computer's language.
IBM PC as Speaker of Narus
The C language is very popular and there are
numerous C compilers for the IBM PC. We now
take the C code for our new computer's compiler
over to a PC and use one of the C compilers for
the PC to compile our program.
This is equivalent
to having the speaker of Narus translate the
Noomian-to-English book into Narus.
We now
have our compiler running on the PC. This
program can translate any program written in C
into the language of our new computer. In
particular, it can take the original C code of
the compiler that we wrote and translate it into
the language of our new computer. This is
equivalent to having the speaker of Narus
use his Narus translation of the Noomian-to-English
book to translate the original into English.
We are now done. All we have to do is move the
output file over to our new computer and we
will have a C compiler for our new computer
written in its own language.
Bootstrapping
Suppose that after developing our C compiler
we discover that extensions have been added to
the C language. At this point we can handle
these extensions without relying on another
compuer. We simply add the code for compiling
the language extensions to the C code for
our C compiler, taking care not to use the
extensions in the code we write. When we compile
the program we are now able to use the
language extensions. We now have the option of simplifying
the code for out C compiler by rewriting portions of it using the language extensions.