Lisp Language

Lisp is the second oldest high-level language still in use (FORTRAN beats it by a couple years).

The idea is, if we want to work with our own programming language with some new features, then we can do so using Lisp macros. In this way, Lisp may be seen as a “minimal programming language” where we have already parsed the object language into the AST (which may be serialized as S-expressions). Lisp’s grammar is quite succinct and easily parsed.

Playground for Compiler Writers

For programmers who want to write compilers or interpreters, Lisp serves as a well-established object language for experiment. Before we can write a Haskell++ compiler (or whatever), we should first make sure we understand how to write a compiler. And writing a compiler for Lisp simplified the front-end code considerably, which let’s us get to the exciting parts of type checking and whatnot.

We can also write a virtual machine for Lisp compilers to target. This is what Peter Henderson’s Functional Programming: Application and Implementation (1980) does: write a Lisp compiler for a pure functional programming language expressed using S-expressions, then compile it to SECD machine bytecode.

Remark. Although there are a wide variety of abstract machines and virtual machines which emerged over the years, of particular interest to me is the prospect of using a Lisp Machine as the template for a virtual machine. The documentation for Symbolics I-machines architecture is online, there are others to consider (Lisp Machines Inc., Xerox, Texas Instruments, etc.). They all seem to share the same basic concepts, as I understand them. (End of Remark)

History

The history of Lisp may be found in the reviews: