The roots of Lisp

http://www.paulgraham.com/rootsoflisp.html

(Only has an PostScript version, but a PDF is available here.)

Re-visits McCarthy’s discoveries (or inventions, depending on your point of view), translating the earliest work into modern Lisp notation.

It’s worth understanding what McCarthy discovered, not just as a landmark in the history of computers, but as a model for what programming is tending to become in our own time. It seems to me that there have been two really clean, consistent models of programming so far: the C model and the Lisp model. These two seem points of high ground, with swampy lowlands between them. As computers have grown more powerful, the new languages being developed have been moving steadily toward the Lisp model. A popular recipe for new programming languages in the past 20 years has been to take the C model of computing and add to it, piecemeal, parts taken from the Lisp model, like runtime typing and garbage collection.

Does a great job of making the central insights accessible, including re-phrasing the meta-circular Lisp interpreter so as to be executable in modern Common Lisp.

(Part of the series An annotated Lisp bibliography.)