Skip to content

Steele — Growing a Language (1998)

Steele’s most famous talk, delivered under a self-imposed constraint: he defines every word longer than one syllable before he uses it, so the talk literally grows its own vocabulary in front of you — the form is the argument. The thesis: a language should not ship with everything built in; it should ship small, with the means for its users to grow it, so abstractions get added by library authors rather than begged from the compiler vendor. A small core plus a great extension mechanism beats a large fixed language. Steele is also a working Lisp designer (Scheme, Common Lisp), so this is extensibility argued by someone who shipped it.

  • This is the cart-authoring SDK’s reason for existing. KEC Lisp is a small Fe kernel + a Core prelude, and carts grow the deck’s vocabulary — new cell types, mission verbs, behavior words — without touching the runtime, reaching the device only through NoshAPI + macros. That is grow a language as a product architecture, not a slogan. The capability model is the “means to grow it”; the launch titles are the first users doing the growing.
  • It sets the bar for the FFI + macro surface. Steele’s warning is that a language grows well only if its extension mechanism is as expressive as the core. Worth holding NoshAPI and KEC macro support to that bar — if cart authors can’t build the abstractions they want in-language, the deck stops growing and starts requiring runtime PRs (strong connascence across the widest boundary — the failure mode to avoid).
  • The monosyllable conceit is on-brand. “Small parts, composed, that add up to something rich” is the talk’s medium and the KN-86 pitch — a tiny Lisp on a tiny deck. Good lore for the SDK’s getting-started narrative.