[racket] [BULK] Fundamentals

From: Joe Marshall (jmarshall at alum.mit.edu)
Date: Thu Oct 14 13:55:23 EDT 2010

Wow!  There is a lot of confusion on this list by people who know better.

Mathew Kurian
As long as the processor can only read only numbers (binary), Racket
cannot be interpreted by the machine before being translated into
another language such as Assembly.

John Clements
There is a historical distinction between "compiled" and "interpreted"
languages.  This distinction is fuzzy and getting fuzzier.

Noel Welsh
In a sense all languages are interpreted, as the CPU interprets the
machine code.

Steven Bloch
So your question, which was somewhat meaningless forty years ago, is
even more meaningless now.

Neil Van Dyke
However, as you have learned, these definitions are reviled on the
Racket list and other CS places.

The definitions are clear and have not changed.  If you have a machine
that runs programs written in language M, but you have a program
written in language L, you can proceed in one of two ways:

  1)  You can modify the *machine* to run programs in a different language.
        An interpreter is a program that transforms a machine into
another machine.

  2)  You can find an `equivalant' program in the language the machine does run.
        A compiler is a program that transforms a program into another program.

Interpretation or compilation is a relationship between machines and programs.
It isn't a property of the language.  Shriram Krishnamurthi had the most correct
    The phrase "interpreted language" has no meaning; it's nonsensical.


** I suppose we could argue a little bit.  If the notion of
`equivalent program' were
poorly defined, then you might find it very hard to write a compiler.
(Or, having
written one, determining if it works correctly.)  It is possible to
create a programming
language that is so hard to statically analyze that the best you can do is
to `inline the interpreter'.  You might call such a language an
`interpreted language'.
Scheme and Racket, however, do not fall into this category.

Posted on the users mailing list.