2026年,"AI会不会取代程序员"的争论每年都要刷屏一轮,但很少有人回头去看编程语言设计的底层问题:一门语言凭什么能表达新想法?编程语言史上有一场几乎绕不开的演讲——Guy Steele在OOPSLA 1998大会的主题演讲《Growing a Language》(生长一门语言)。演讲者不是普通布道者:他是Scheme的共同发明人、Common Lisp标准的主导者、Java语言规范的联合作者。他用一场行为艺术式的演讲——全程几乎只用单音节英文单词开场——论证了一个至今仍在生效的命题:一门语言的命运,取决于它能不能让使用者自己"长出新词"。本文把这条视频从叙事结构到学术脉络完整拆开,让你看完等于看完视频还多懂一层。
数据说明:本期写作环境网络受限,未能实时抓取YouTube页面。该演讲属编程界长销经典,以下视频信息依据ACM会议公开记录、演讲者个人主页及长期流传的公开版本整理;播放量未能实时核验,请以检索到的频道页面实时数据为准。
| 项目 | 内容 |
|---|---|
| 标题 | Growing a Language(生长一门语言) |
| 演讲者 | Guy L. Steele Jr.(盖伊·斯蒂尔) |
| 频道/出处 | YouTube有多个频道上传的现场录像;官方文字版长期公开流传 |
| 场合 | OOPSLA '98 大会主题演讲(ACM面向对象编程系统、语言与应用年会,1998年10月,加拿大温哥华) |
| 时长 | 约半小时(据公开流传版本) |
| 播放量 | 各镜像累计达数十万量级(据多方引用,未能实时核验) |
| 检索方式 | YouTube搜索 "Guy Steele Growing a Language",取播放量最高的完整版 |
这条视频的常青属性很明显:它每隔几年就会因为在Hacker News、Reddit /r/programming或中文技术社区被重新推荐而再火一轮。每次"应该学Lisp吗""该不该造DSL(领域专用语言)""AI时代还要不要学语言设计"的讨论升温,它都会被重新翻出来,因为它讨论的不是某个框架的生死,而是"语言"这个概念本身的上限。
按叙事顺序,这条演讲可以拆成五步。它最特别的地方在于:形式本身就是论证的一部分,看懂它的"表演",才算真正看懂它。
演讲开场,斯蒂尔宣布一个自我限制:接下来只许使用单音节的英文单词。于是他用一种短促、磕绊的句式开始了整场演讲——"I should like to talk about how to grow a language..."(我想谈谈如何生长一门语言)。注意这里的设计:他想表达的核心概念,几乎全都是多音节的——"language"(语言)本身就有两个音节,于是他当场把一个多音节词"拆"成自己造的单音节词来用,并且在演讲中段告诉你:看,为了把话说下去,我被迫发明新词。
这一步的战术意图和所有好的开场一样,是先制造痛点。他不是告诉你"词表太小很麻烦",而是让观众在三十秒内直接体会这种麻烦——你听的每一句话都在提醒你:固定的、不许增长的词表,会让表达退化成笨拙的拼凑。这为全场的核心命题腾出了空间:编程语言就是程序员的词表,一门不许增长的语言,会让程序员说不出他们想说的话。
演讲进行到中段,斯蒂尔做了一个著名的转换:他说,"we"(我们)恰好也是单音节词,所以现在他要从"我"切换到"我们"。这个转换看似只是修辞,实则是全场的社会学转折点:一门语言不是给孤立的天才用的,而是给一个社区用的。词是社区约定的产物——一个人造词没有意义,只有当一群人共同理解、共同使用、共同维护这个词的含义时,语言才真正"生长"了。
这一步还埋着他对听众身份的感知:OOPSLA的观众正是设计语言、设计类库的人。他在提醒这些"造词者":你的工作不是替所有用户把词造完,而是造出让用户自己能造词的语言。
接下来是全场的干货:语言到底靠什么机制生长?斯蒂尔按抽象能力的台阶逐级攀升:
a + b,而要写成别扭的方法调用?在1998年的Java里,大整数相加只能写成 a.add(b)。数学家写了几百年的记法,编程语言却不许你用。这里有一条暗线:斯蒂尔当时正在Sun公司担任Java语言规范的联合作者(与James Gosling、Bill Joy)。他在Java的年度大会上、以规范作者的身份,公开讨论"Java不许算符重载这类设计让语言长不大"——这几乎是一场当众的自我批评。这种诚实是这条视频可信度的最大来源。
如果演讲停在"大家快来造词",它就只是一篇Lisp布道文。斯蒂尔的高明在于他立刻转向了反面:生长是有代价的。
演讲的收尾回到了那个代词转换。他说,如果把"生长一门语言"这件事从"我"换成"我们"来完成——你造的词给我用,我造的词给你用,遇到对方的词不懂就去查、去学——那么语言、社区和我们所能表达的想法,都会一起变大。最后他留给听众的嘱咐,大意是:去帮助彼此。整场演讲从"我"的单音节困境出发,落点在"我们"的集体能力上,结构闭合得非常漂亮。
把这条演讲拆开逐条对回真实的历史与文献,你会发现它几乎每一步都踩在真实的研究脉络上,而不是空对空的哲理抒情。
Scheme与"代码即数据"是真的。 1975年,斯蒂尔与Gerald Jay Sussman在MIT人工智能实验室发布了Scheme(AI Memo 349,标题为《SCHEME: An Interpreter for Extended Lambda Calculus》),它的理论根基是Alonzo Church在1930年代创立的λ演算,以及John McCarthy在1958-1960年间设计的Lisp。Lisp的关键特征"同像性"——程序本身就是一种可以像数据一样被读写的数据结构——正是演讲中"宏"这一增长机制的技术前提。换句话说,第三步里最高级的那个台阶,不是演讲者的修辞,而是一条从Church到McCarthy再到Scheme的、有文献可查的技术谱系。
"记法塑造思维"有正经出处。 演讲的哲学底色与Kenneth Iverson 1979年的图灵奖演讲《Notation as a Tool of Thought》(记法作为思维的工具)高度呼应。Iverson——APL语言的发明人——系统论证了"好的记法能让复杂推理变得机械可执行",这篇演讲后来发表在ACM期刊上,是语言设计领域被引用最多的文献之一。斯蒂尔没有直接引用它,但两人共享同一个信念:你用什么记法表达,决定你能想到什么。
Common Lisp的教训是他亲历的。 1984年斯蒂尔写成《Common Lisp the Language》,随后主持了ANSI X3J13标准化委员会的工作。这段经历让他对"委员会垄断造词权"与"标准过于庞大"这对矛盾有第一手体感——Common Lisp标准大到几乎没人能完整实现,而它恰恰又是"可增长语言"的代表作。演讲里对增长代价的审慎,正是这段经历的沉淀,而非事后诸葛。
Java是他身上的对照组。 1996年出版的《The Java Language Specification》,作者正是Gosling、Joy、Steele三人。Java刻意不做算符重载(Gosling多次公开说明这是为了代码可读性做出的取舍,唯一的例外是字符串拼接的 +),也以final类等方式限制用户扩展语言语义。演讲中那个"大整数只能写a.add(b)"的例子,说的就是他参与设计的这门语言。一个语言设计者能在自己参与设计的语言的用户大会上公开讨论它的局限,这在编程史上相当罕见。
Fortress是他把演讲变成了现实。 2000年代,斯蒂尔在Sun主导设计了Fortress语言(源自DARPA的高生产率计算系统项目HPCS),其设计目标几乎是《Growing a Language》的工程化落地:让源代码尽可能像数学黑板上的记法,允许用户自定义算符、支持数学排版的二维语法。Fortress最终没有商业化成功(项目约2012年后停止维护),但它证明了演讲里的主张不是空谈,而是他持续二十年的设计哲学。
后续的继承者是真的。 Racket社区(Matthias Felleisen等人)明确把"可生长的语言"作为设计纲领,提出"语言导向编程"(language-oriented programming),其2015年的《The Racket Manifesto》把这条脉络写成了正式论文;Julia语言(2012年,MIT的Jeff Bezanson、Stefan Karpinski、Viral Shah、Alan Edelman)把演讲中最激进的主张——用户自定义算符、多重派发、为科学记法而生——做成了今天科学计算领域的主流语言。可以说,这场1998年的演讲,预言并参与了其后二十年语言设计的走向。
站得住的部分:机制层面的主张全部可验证。 函数、类型、泛型、宏、算符重载,这些增长机制的表达能力差异是工程事实,几十年的语言实践反复印证。演讲的历史细节(Scheme、Common Lisp、Java规范)全部与公开记录吻合。这部分是全片最硬的内容。
要打折的部分一:'可增长=更好'没有被严格证明。 这是演讲最核心、也最依赖信念的主张。经验证据其实喜忧参半:2014年Baishakhi Ray等人在FSE发表的GitHub大规模研究(《A Large Scale Study of Programming Languages and Code Quality in GitHub》)发现,语言类别与代码缺陷率之间确实存在统计相关,但效应量小,且被项目规模、开发者因素严重混杂。反例同样响亮:Go语言几乎带着赌气式的姿态拒绝了算符重载和宏(Go官方FAQ至今保留着解释),却成了云计算时代的基础语言;Java本人在1998年后并没有"长出"算符重载,反而靠注解、泛型、lambda这些受控的增长活得很好。历史最终选了一条中间路线:语义层面的增长交给库与包管理,语法层面的增长极度谨慎。
要打折的部分二:方言分裂的代价被演讲轻描淡写了。 有意思的是,Lisp社区自己后来对这个问题的反思比演讲更狠。Rudolf Winestock的网络名文《The Lisp Curse》(Lisp的诅咒)指出:正因为Lisp太容易造词,每个Lisp程序员都在造自己的轮子和方言,导致社区难以凝聚出共享的大型工程——表达能力的天赋,反过来成了协作的诅咒。演讲里"帮助彼此"的号召很动人,但它把一个治理问题(如何协调词表)说成了一个道德问题(只要互帮互助就行),这一步跨越并没有论证支撑。
要打折的部分三:形式即说服——别忘了这是一场精心设计的修辞。 单音节开场是绝妙的教学法,但它同时也是一种情绪装置:观众在"窒息体验"之后接受核心命题时,警惕心是最低的。而"记法塑造思维"这个哲学前提,在认知科学里的直接证据其实相当有限——它更多是语言设计者共同体的工作信念,而非已证实的定律。看这条视频时值得保持一层元认知:你在被说服,而且被说服得很舒服。
一个2026年的新变量。 大模型让"用自然语言说需求"第一次有了可靠的编译器。有人因此断言"语言设计已死"——反正AI能听懂人话。但换个角度想:AI恰恰放大了"公共词表"的价值,因为模型正是靠海量共享代码训练出来的,方言越多、约定越乱,AI的理解质量就越差。这场演讲在AI时代反而多了半层含义:造词的自由属于个人,词表的秩序属于社区,而秩序现在也属于训练数据。(此段为延伸推想,非演讲内容。)
1. 写代码先造词表,再写句子。 把演讲的方法论直接搬进日常工程:动手实现之前,先用函数、类型和命名把业务词汇造出来——计算逾期利息、合格借款人、冻结账户——让主逻辑读起来像用领域语言写的句子。具体做法是"意图先行":先写下你希望读到的调用代码(哪怕它还不存在),再去实现这些词。你的主流程会从一堆控制流的泥浆,变成一段领域专家能大致读懂的文本。这件事不需要换语言,任何支持函数与类型的主流语言都做得到。
2. 设计接口时,把"别人能不能长出新词"当作验收标准。 评审API、类库或模块设计时,除了"现在的需求能不能满足",追加一问:使用者能不能在不修改我源码的前提下,扩展出我没预料到的用法?这是Bertrand Meyer在《Object-Oriented Software Construction》(1988)中"开闭原则"的原始含义。但注意对称的另一半——同时守住公共词表:命名规范、代码评审、文档约定要足够硬,防止团队方言化。增长自由与词汇秩序,缺一个都会让系统腐烂。
3. 认真学一门"小而可长"的语言,校准你对表达能力的手感。 不必为了跳槽,只为体验一次"语言在你手下生长"的感觉。Racket是教学上最友好的选择(自带优秀的入门书籍),Julia则展示了增长哲学在真实工业场景的成熟形态(多重派发、用户自定义算符支撑起了庞大的科学计算生态)。一周的业余时间就够。你未必会用它上班,但回到Java、Python或TypeScript时,你看库设计、看接口扩展点的眼光会不一样——这大概是这条视频最实在的回报。
flowchart TD
A[开场:只用单音节词] --> B[词表太小 说不出新想法]
B --> C[命题:语言必须能生长]
C --> D[台阶一 函数与类型]
C --> E[台阶二 宏与自定义算符]
D --> F[对照例证 Java不许重载加法]
E --> F
F --> G[张力一 长太快 方言分裂]
F --> H[张力二 长太慢 表达僵死]
G --> I[解法 标准库当公共词表]
H --> I
I --> J[从 我 到 我们 帮助彼此]
本文由「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 等场景全覆盖。
