|
|
|
|
|
by DonHopkins
18 days ago
|
|
Even Emacs Lisp has had a byte code compiler since forever, and since Emacs 28 it compiles to native machine code via libgccjit. Toy lisp interpreters are easy and fun and everywhere, often written in lisp itself, but the same books that teach them go on to teach compilers. SICP chapter 4 is the metacircular evaluator, chapter 5 is the compiler. That ordering is the point: interpretation is the pedagogy, compilation is the destination. Lisp was designed to be easy and efficient to compile (so was Self, and that tech lineage runs straight into HotSpot and V8). The archaeology cuts the other way too. The only famous pure interpreter was LISP I on the 7090, and within two years Hart and Levin's Lisp 1.5 compiler (1962) became the first self-hosting compiler in any language: written in Lisp, compiling itself. Lisp practically invented compilation as we know it. And today: SBCL doesn't even interpret by default, a form typed at the REPL is native code before it runs. Clojure compiles every form to JVM bytecode. Interpreters exist, but nobody ships them as the production path outside of pedagogy. |
|