The Extensible Language

Reference: Paul Graham (1993). On Lisp (Chapter 1). Source file: 01theExtensibleLanguage.pdf. URL

Summary

Opening chapter of Graham’s On Lisp that argues Lisp’s defining quality is its extensibility: the language can be molded into a dialect suited to the program being written. Graham distinguishes top-down from bottom-up design and claims Lisp programmers customarily do both — building the language up toward the problem while writing the program down toward it.

The chapter introduces macros, embedded languages, and the idea that a mature Lisp program looks “as if the language had been designed for it.” It argues that software extensibility (where users extend a program in its own implementation language) is a more honest outgrowth of bottom-up programming than traditional black-box designs.

Key Ideas

  • Bottom-up design: grow the language toward the problem via new operators and macros
  • Lisp programs are data — macros are programs that write programs
  • Embedded languages as a natural idiom; Common Lisp includes several (e.g. CLOS)
  • Extensible software as a paradigm; language and program co-evolve

Connections

Conceptual Contribution

Tags

#lisp #language-design #extensibility #macros

Backlinks