proomt

Search

Search posts, papers, and topics

Hall of Fame

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

Related reading

  1. Article: Your Next DSL Author Is a Language Model

    Typed Domain Grounding (TDG) embeds a DSL inside a mainstream language the LLM already knows (e.g., Kotlin) and uses the host compiler as an oracle. The author describes five building blocks—embedding, choosing a host language with high training‑data frequency, compiler‑driven type safety, a generate‑compile‑repair loop, and an on‑demand teaching tool—and shows measured results from kUML, a Kotli…

    InfoQinfoq.com18 min
  2. Constraint Decay: The Fragility of LLM Agents in Backend Code Generation

    A systematic evaluation of LLM agents generating multi‑file backend code shows a sharp drop in correctness when structural constraints (framework conventions, ORM usage, API contracts) are added. Across 100 tasks in 8 Python web frameworks, assertion pass rates fall ~27 points, with data‑layer bugs (bad queries, ORM violations) driving most failures. Mid‑size models cope with minimal frameworks (…

    arXiv cs.SE (Software Engineering)arxiv.org1 minpaperHN287197
  3. Learnable Programming

    Bret Victor argues that teaching programming requires environments that make code vocabulary, state, and execution flow visible and understandable, not just live‑coding output. He proposes design principles—transparent labeling, contextual explanations, and controllable visualizations—to help learners think rather than memorize.

    Hall of Fameworrydream.com41 min
  4. Why client SDK generation belongs in the open

    Google partnered with Speakeasy to open‑source their OpenAPI‑based multi‑language SDK generator, covering Python, TypeScript, Go, Java, C#, PHP, and Ruby. The move replaces a now‑defunct proprietary generator, reduces maintenance overhead to ~1 engineer, and adds a CLI and documentation server generator under AGPLv3.

    Google Developersgoogleblog.com3 min