<!-- title: 他只用单音节词，讲了四十七分钟 -->
<!-- domain: programming -->
<!-- video: https://www.youtube.com/watch?v=_ahvzDzKdB0 -->

# 他只用单音节词，讲了四十七分钟

## 导语

1998年10月，温哥华，OOPSLA '98大会（面向对象编程、系统、语言与应用国际会议）。Guy L. Steele Jr. 走上讲台，这位参与设计 Scheme、执笔《Common Lisp: The Language》、后来与人合著《The Java Language Specification》的语言设计大师，做了一件让全场程序员毕生难忘的事：**接下来的四十多分钟里，他几乎只用单音节词演讲**。

不用 "syllable"（音节）这个词，因为它是双音节的，而他正被迫只能说单音节词。这不是行为艺术，也不是脱口秀包袱——这是一次以身试法的演示。他想让你亲身体会一件事：**当你的词表太小，哪怕思想清楚，话也说不出口**。而编程语言，就是程序员的词表。

二十八年过去，这门被反复引用的经典演讲《Growing a Language》非但没有过时，反而在 AI 时代显得更锋利了：当模型越来越会「遣词造句」，人类程序员的价值恰恰回到了 Steele 说的那件事上——**把语言养大，先造词，再说话**。这篇解读带你把这场神课逐层拆开。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | Growing a Language（Guy Steele, OOPSLA '98） |
| 频道 | YouTube 多个转载版本流传 |
| 时长 | 约47分钟 |
| 播放量 | 数十万+（多版本转载累计，单一口径未经官方证实） |
| 核心主题 | 编程语言设计：语言必须能被用户「养大」 |

> 说明：这是1998年的经典演讲，YouTube 上有多个转载版本，各版本画质与播放量不同，可搜索标题直达。

## 核心内容拆解

### 1. 开场即行为艺术：把自己锁进小词表

演讲开始，Steele 说出那句被引用了二十多年的话（视频原话大意）：「接下来我大部分话，都会只用单音节的词来说，为了说明一个观点。」然后他真的这么干了。他不能说「音节」，因为「syllable」有两个音节；他不能说「数量庞大的」，只能说「很多很多」；他想谈「有理数」，只能先绕着说「两个整数之比」。

前十几分钟，你会有一种奇妙的憋闷感——明明是顶级语言设计大师，讲起话来却像个刚学说话的孩子。这种憋闷感就是设计好的：**你不是在听他讲，你是在替他感到词穷**。等他熬到定义出第一个「复合词」（compound word），可以正常说出双音节词的那一刻，全场如释重负。那一刻你也瞬间懂了他的论点：词表每长大一点，表达力就跃迁一层。

（我的延伸）这个设计本质上是一次「受害者体验式教学」，和「考官让答辩学生全程用二手资料说话」是一个路数：不告诉你结论，让你自己长出结论。这也是它比任何一篇论文都传播得远的原因。

### 2. 语言是工具，词表就是思想的边界

Steele 的第一个正式论点是工具论（视频原话大意）：编程语言是一个工具，而工具的好坏，要看它能不能让你把想说的话说清楚。自然语言如此——爱斯基摩语里关于雪的词很多，说雪就说得细；编程语言也如此——一门语言里如果没有「循环」这个词，你写每个程序都得自己手搓跳转。

他接着给出全篇的地基推理：**你的思想受限于你能说出来的话**。当你手里的语言词表很小时，你有两个选择：要么憋着换一种别扭的说法把想法揉碎了塞进去，要么放弃这个想法。而第二种，才是真正的损失——你没写出来的那个程序，没人知道它本可以存在。

（我的延伸）这和语言学里的萨丕尔-沃夫假说（语言决定思维）一脉相承，但 Steele 高明在于不争论假说真假，而是给程序员一个可操作的推论：**看一门语言能不能帮你思考，就看它造新词的成本高不高**。

### 3. 完备性是幻觉：设计者永远预见不到明天

那么正确的解法是不是把语言做得「什么都内置」？Steele 给了否定回答，这是全篇最关键的一步推理（视频原话大意）：语言设计者不可能预见所有用户在未来所有领域的所有需求。你今天内置了数值计算，明天有人要做图形；你内置了图形，后天有人要写数据库。**完备的词表不存在，因为需求的长尾无穷**。

由此他推出真正的设计目标：与其追求「大而全」，不如追求「可生长」——把少数最基础、最通用的词做扎实（他称之为种子词），然后把语言设计成**用户可以自己添加新词**的形态。语言的宿命不该由设计者一个人写完，而应该留白给千千万万用户共同续写。

（我的延伸）这个思路放到今天就是「平台思维」的雏形：操作系统做不到的功能开放 API，编辑器造插件系统，数据库造扩展机制。Steele 在1998年讲的不是语言设计，是所有平台的通用宪法：**你无法预见的，就为它留出接口**。

### 4. 种子词与生长词：一条检验好语言的标准

可生长不是「能加东西」就完事。Steele 给出了一条极其苛刻的检验标准，我称之为「同权原则」（视频原话大意）：**用户自己造的新词，用起来必须和内建的种子词一样好**。一样顺手的语法、一样清晰的报错、一样合格的文档、一样可以继续作为材料去造更新的词。

这条标准狠在哪？它直接判了一大批语言「不及格」。很多语言允许你定义函数、定义类，但新造的抽象用起来总是「矮人一头」：调用形式不同、错误信息不可读、不能参与语言的语法糖、无法无缝嵌进内建控制流。表面上是扩展机制，实际上是**一等公民俱乐部的外卡选手**。Steele 告诉你：凡是不满足同权原则的「扩展性」，都是打折的扩展性。

（我的延伸）用这条标准看今天：Rust 的 trait + 运算符重载允许你让自定义类型享受 `a + b`；Kotlin 的扩展函数让你像调用内建方法一样调用新方法；而 Lisp 家族的宏干脆让用户词汇直接长成新语法。它们的家族相似性，都是这条1998年的标准。

### 5. 那个扎心的 a.add(b)：Java 的二等公民

演讲进行到中后段，Steele 拿出了一个至今仍在 Java 社区流传的扎心案例。他说（演示大意）：在 Java 里，整数可以写 `a + b`，简洁漂亮；但当你需要精确计算、要用到「大数」类型时，你只能写 `a.add(b)`， chained 起来就是 `a.add(b).multiply(c)` 这样的连环套。同样是「加法」，内置类型享受加号，用户类型只配调方法。

这个例子小到不能再小，但它精准命中了第4点那条标准：**Java 的扩展机制没有让生长词与种子词同权**。用户可以添加新类型，却不能给新类型配上与内建类型同等地位的算术表达。Steele 当时刚参与完 Java 语言规范的写作，这段批评因此更有分量——他是在拿自己参与建造的房子开刀。

（我的延伸）Java 后来的演进恰恰印证了这个批评的长期性：泛型（Java 5，2004）、自动装箱、Lambda（Java 8）一路补课，但运算符重载至今没有进 Java。一门语言当年种下的「不同权」，要用二十年去偿还利息。

### 6. 亲手种出一个新类型：有理数生长示范

光批评不够，Steele 在演讲后半段做了一次正面示范：他用受限的词表，一步一步定义出一个新类型——先定义「两个整数之比」，再定义最大公约数（gcd），然后定义约分、加法、乘法，最终你获得了一种全新的词汇——「有理数运算」，此后说话的难度骤降。**复杂的思想，被新词汇瞬间压扁成一句短话**。

这个示范的精妙在于：它同时演示了「生长」的全过程——从种子词出发、组合出新词、新词再当材料造更新的词，滚雪球。这其实就是抽象的微观机制：每一层抽象都是一次「造词」，造词的红利是复利。

（我的延伸）这和 DDD（领域驱动设计）里「通用语言」（ubiquitous language）的主张殊途同归：项目里先和领域专家共同把业务词汇造出来，代码只是这些词汇的展开。好的代码库读起来像句子，差的代码库读起来像字符流，差别就在有没有人认真「养词」。

### 7. 两种哲学的分岔：堆料与生长

把全篇收拢，其实是两种语言设计哲学的对撞。一种是**堆料哲学**：设计者尽量多内置功能，用户要什么给什么，语言越长越胖，委员会越开越累，兼容包袱越背越重；另一种是**生长哲学**：设计者只保住种子词和生长机制，把无限的扩展权下放给用户，语言本体保持苗条，表达力却由整个社区共同生长。Steele 属于后者，毕竟他就是 Scheme 的共同作者——Scheme 教科书级的极小内核（连循环都是长出来的语法糖），正是生长哲学的巅峰之作。

（我的延伸——写于2026年）这个分岔至今没有终结，反而愈演愈烈：Go 公开拒绝运算符重载和宏，走堆料与克制之间的第三条路；Rust 把宏和 trait 做成公民权利；Swift、Kotlin 全面拥抱可生长语法。而 AI 时代给这场争论加了一个新变量：**当大模型已经能熟练遣词造句，程序员的核心产出正在从「写句子」退到「造词表」**——设计领域词汇、定义抽象边界、保证新词与旧词同权。Steele 在1998年讲的「先造词再说话」，可能是 AI 时代对人类程序员最实用的岗位描述。

## 知识结构图

```mermaid
flowchart TD
    A["语言是表达的工具"] --> B["词汇量决定表达力"]
    B --> C["单音节演示：亲尝词穷"]
    A --> D["设计者无法预见一切"]
    D --> E["完备内建是幻觉"]
    E --> F["出路：可生长的语言"]
    F --> G["种子词：内建基础"]
    F --> H["生长词：用户定义"]
    G --> I["同权检验标准"]
    H --> I
    I --> J["语法同等顺手"]
    I --> K["报错同等清晰"]
    I --> L["文档同等合格"]
    J --> M["反例：大数只能 a.add"]
    M --> N["生长词沦为二等公民"]
    F --> O["正例：有理数类型示范"]
    O --> P["新词把复杂压成短句"]
    P --> Q["词表复利：抽象造抽象"]
```

## 实战启示

看完这场神课，你能带走四条可以直接落地的行动指南：

**第一，先造词，再写逻辑。** 下次动手前，先扫一遍需求描述，把反复出现的业务概念列出来，逐一命名、封装成函数或类型——这就是在给项目的词表「长新词」。当词表长好了，主逻辑的代码会短得让你吃惊。

**第二，用「同权三问」做代码评审。** 每当你封装了一个新抽象，问三个问题：它调用起来的形式，和内建的东西一样自然吗？它出错时的信息，和内建的一样可读吗？它的文档，别人不看源码敢用吗？三问全过，才算长出了一个合格的词；只过一问，那只是把复杂度换了个地方藏起来。

**第三，警惕「三行代码重复三次」。** 同样的组合操作出现第三次，就是它在向你索要一个名字。造这个词不是洁癖，是在给未来的自己降低表达成本——抽象的红利是复利。

**第四，AI 时代重新定位自己。** 让模型写实现，你来定词表：接口叫什么、边界划在哪、哪些概念值得成为一等公民。句子可以外包，词汇表外包不得——那是系统可维护性的根，也是人类程序员最不容易被替代的那部分价值。

## 延伸学习路径

1. **SICP（《计算机程序的构造和解释》）** — Steele 与 Sussman 创造 Scheme 的那条思想主线，「极小内核 + 无限生长」的原典：https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs
2. **Paul Graham《Beating the Averages》** — 把「语言表达力差距」讲成商业优势的经典随笔，与 Steele 互为注脚：https://paulgraham.com/avg.html
3. **Guy Steele 词条** — 了解他横跨 Scheme、Common Lisp、Java、Fortran 标准化的传奇履历：https://en.wikipedia.org/wiki/Guy_Steele
4. **Scheme 编程语言词条** — 生长哲学的巅峰实例，宏与同像性如何让用户词汇长成语法：https://en.wikipedia.org/wiki/Scheme_(programming_language)
5. **Rob Pike 演讲「Simplicity is Complicated」（YouTube 可搜）** — 生长哲学的反方答辩：Go 为什么选择不长大，看完正反两面再站队。

## 一句话总结

这门语言设计神课用四十七分钟的「词穷」证明了一件事：好语言不是功能最多的语言，而是让每个用户都能把新词养成一等公民的语言——先造词，再说话，人如此，程序亦然。

## 参考来源

1. [Growing a Language — Guy Steele, OOPSLA '98](https://www.youtube.com/watch?v=_ahvzDzKdB0) — 本文分析的核心视频
2. [Guy Steele - Wikipedia](https://en.wikipedia.org/wiki/Guy_Steele) — 演讲者背景与语言设计履历
3. [Structure and Interpretation of Computer Programs - Wikipedia](https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs) — Scheme 与生长哲学思想源头
4. [Beating the Averages — Paul Graham](https://paulgraham.com/avg.html) — 语言表达力与竞争优势
5. [Scheme (programming language) - Wikipedia](https://en.wikipedia.org/wiki/Scheme_(programming_language)) — 极小内核与宏扩展机制

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
