That means you're too educated.
I think Spinny's actually made the key point himself, probably
unintentionally:
The point, of course, being that generally a "compiled language" is one
which doesn't have the interpreter. A normal C implementation doesn't
have an interpreter; it generates code which is run natively. Schildt
did not write a thing which generated native code, so it's not what is
normally called a "compiler" -- this his emphasis on it being an
interpreter.
From the GNU C Compiler documentation:
"Historically, COMPILERS [my emphasis] for many languages, including C+
+ and Fortran, have been implemented as “preprocessors” which emit
another high level language such as C. None of the compilers included
in GCC are implemented this way; they all generate machine code
directly."
Because of sexual anxieties, many developers reserve words with high
positive connotation to mean complex and more difficult to implement
things, where the software becomes Lacan's and Zizek's "big
other" (the Stalinist father of WWII who by definition is never
satisfied with the son). Which of course goes against the meaning of
the adage that great engineering is simple engineering. If you're
writing a demo or instructional compiler as were Herb and I, the first
edition best emits interpreted code, and for this sacrifice of speed
you get better debugging.
The GNU documentation clearly implies that a COMPILER which "generates
machine code directly" is better than one that doesn't. But it also
uses "compiler" to refer to what Herb wrote.
You could argue, in a sort of pedantic way, that the interpreter actually
compiles-to-X, where X is something other than native code, and then
something else interprets the X.
Gee, you could.
So, given Java as an example to draw from: Does Schildt's "C interpreter"
allow you to convert C programs to some kind of data file, which another
program or piece of hardware then executes?
Java and .Net do not typically interpret code: we've told you that,
dear little Peter. They translate bytecode to native code the first
time the path of logic that contains the code is executed in most
implementations, although there exist implementations which are
interpreters. Confusingly, esp. to people without proper education in
computer science, Microsoft documentation calls this step JIT
compilation, which is incorrect if we reserve the term "compiler" to
something that translates something in a Chomsky 1 or 0 source
language writable and readable by humans.