Hall of FameGuy L. Steele Jr.199843 min readintermediate
Growing a Language
Summary
Guy Steele argues that programming languages should be designed to grow, starting from a small core and providing mechanisms for users to extend them. He illustrates this with historical examples and shows why a static, fully‑specified language is impractical.
- A minimal core language forces programmers to define many concepts repeatedly; providing extensibility reduces that overhead.
- Design languages for growth rather than trying to specify every feature up front, as history (Fortran, PL/I, Pascal) shows.
- What feels like a primitive concept to a programmer may not be primitive in the language, so language design must expose true primitives.
- Allowing users to add higher‑level constructs (e.g., via macros or libraries) lets a language evolve without breaking existing code.
Language designers and implementers should care because extensible language design reduces maintenance burden and enables long‑term evolution.
6/10
