From: Ludovic Brenta on
I do not think any language can be said to be "interpreted" or
"compiled". Instead, any *implementation* of any language can be
"interpreted", "compiled" or something in between. It is almost a
continuum.

Interpreted, stricto sensu, means that the interpreter reads the sources
of the program as written by the human programmer.

In between: byte-code compilers, P-Code.

Just-in-time compilers usually compile byte-code to native processor
code on the fly.

Compiled means that the hardware processors runs the program directly,
even if, inside the hardware, some additional transformations can take
place for efficiency.

Some implentations of BASIC are interpreted, others are compiled.

Some implementations of Lisp are interpreted (emacs lisp), others are
byte-compiled (also emacs lisp), others still are compiled (GNU Common
Lisp).

Some implementations of Java are byte-compiled (Sun Java compiler),
others still are compiled (GCC).

Even one implementation of Ada, Ada/Ed, was interpreted!

You get the drift.

--
Ludovic Brenta.
From: Warren on
Ludovic Brenta expounded in news:87k4sunb9u.fsf_-_(a)ludovic-brenta.org:

> I do not think any language can be said to be "interpreted" or
> "compiled". Instead, any *implementation* of any language can be
> "interpreted", "compiled" or something in between. It is almost a
> continuum.

Under Unix, it is generally accepted that if a 3rd-party
(not o/s and not so-called executable) process is required,
it is known as the "interpreter".

Linux for example used to (probably still does) have the
ability to register the "interpreter". This was done with
the JVM. Once the JVM was registered, you could launch the
byte-code as if it were a native executable-- which is
obviously slight-of-hand, since there is the necessary
invoking of the "interpreter" as well (it is not purely
the o/s being used).

Now I only mention "this" particular view (as before) of an
interpreter for the very simple utilitarian reason that
once you realize that an interpreting "middleman" is
involved, it is very obvious (i.e. not surprising)
that it runs less efficiently than other native code
options.

Any other concept of "interpreter" in this discussion of
performance is less interesting in this context.

BTW, emulation leads to the same conclusion as
an interpreter, since it too is "interpreting", even if
one doesn't usually call it that.

> Interpreted, stricto sensu, means that the interpreter reads the
> sources of the program as written by the human programmer.

I should probably shutup, but you do know that many of
"those" interpreters also use an intermediate code in
memory. So just because they don't store it in a file
that way, doesn't make them any more special IMO.

> You get the drift.

Yep. Yep.

Warren