当Andrey Breslav在2010年加入JetBrains开始设计Kotlin时,他大概没想到这门语言会成为全球数百万Android开发者的首选。更没想到的是,16年后他会亲手否定"写代码"这件事本身。在The Pragmatic Engineer频道这期1小时44分钟的深度访谈中,Breslav抛出了一个极具挑衅性的命题:未来的软件开发者不再写代码,而是写规格说明书(specifications)。他创建的新项目CodeSpeak,试图用结构化的Markdown文档替代传统代码,由LLM完成从"你要什么"到"怎么做"的编译过程。在4个真实开源项目上,CodeSpeak将代码量缩减了5.9x到9.9x,且全部通过了测试套件。这不是一个噱头——这是Kotlin之父对"AI时代编程语言该长什么样"这个问题的严肃回答。
| 项目 | 内容 |
|---|---|
| 视频标题 | The programming language after Kotlin - with the creator of Kotlin |
| 频道 | The Pragmatic Engineer |
| 主持人 | Gergely Orosz |
| 嘉宾 | Andrey Breslav(Kotlin创造者、CodeSpeak创始人) |
| 时长 | 约104分钟 |
| 核心主题 | 从Kotlin到CodeSpeak:AI时代编程语言的设计哲学 |
Breslav在访谈中回顾了Kotlin的设计哲学,这为理解CodeSpeak奠定了基础。2010年的JetBrains面临一个现实问题:他们用Java写IDE,但Java的冗长语法让开发效率受限。Breslav的核心设计原则是"让常见情况变得简单"(make the common case easy)——不是创造一门学术上完美的语言,而是让实际写代码的人感觉舒服。
这个哲学直接影响了Kotlin的几个关键决策:null safety通过类型系统解决而不是运行时异常、extension functions让现有类可以无痛扩展、data class把Java中50行的POJO压缩到5行。Kotlin的成功证明了一件事:好的语言设计不是添加特性,而是消除痛苦。
Breslav坦言,Kotlin的成功部分归功于时机——Google在2017年宣布Kotlin成为Android官方语言,这给了Kotlin一个巨大的分发渠道。但也正是这种"让复杂事情变简单"的理念,让他开始思考下一个更根本的问题。
访谈中一个令人动容的段落是Breslav坦诚讲述了自己在JetBrains后期的倦怠经历。在领导Kotlin开发十年后,他感到创造力枯竭,最终在2020年离开了JetBrains。这段经历并非简单的"休息后回归"叙事——Breslav明确表示,正是这段空白期让他重新审视了"编程语言到底要解决什么问题"。
他在剑桥大学做了一场题为"From Kotlin to CodeSpeak: Programming Languages and AI"的演讲,阐述了自己的思考过程:传统的编程语言抽象层次——从机器码到汇编、从汇编到C、从C到Java/Python——每一次跃迁都是让人类更远离"机器怎么想"、更接近"人类怎么想"。而LLM的出现,让下一步抽象成为可能:从描述"怎么做"到描述"要什么"。
CodeSpeak的工作方式与传统编程语言完全不同。用一句话概括:你写的不是代码,而是结构化的Markdown规格文档;LLM负责把规格编译成可执行的代码。
具体来说,CodeSpeak的CLI工具提供两个核心命令:
codespeak build:读取.spec.md文件,调用LLM生成目标语言的代码(支持Python、Go、JavaScript、TypeScript、Kotlin、Swift)codespeak takeover:反向操作——将现有代码库"反向工程"成.spec.md文件这意味着一个典型的CodeSpeak工作流是:开发者维护.spec.md文件作为source of truth,git commit的是spec而不是生成的代码,CI/CD pipeline中调用codespeak build来生成实际的运行代码。
Breslav在访谈中强调了一个关键点:CodeSpeak不是一个"chatbot wrapper"。它不是在ChatGPT里写prompt然后粘贴代码,而是一个确定性的工作流——spec文件是版本控制的、可review的、有明确语法的。LLM只是编译器的一个组件,就像传统编译器中的代码生成器。
CodeSpeak团队在4个真实的开源项目上测试了这个方案,结果是惊人的:
这意味着一个原本10000行的项目,可能只需要维护1000-1700行的Markdown规格文档。剩下的代码由LLM根据spec自动生成。
但Breslav也坦承了当前的局限:CodeSpeak仍在alpha阶段,LLM的非确定性意味着同一个spec文件可能生成不同的代码,调试流程还没有完全成熟。不过他的核心论点是:这些是工程问题,不是概念问题。就像早期编译器也不可靠,但随着工程投入增长,它们变得坚如磐石。
CodeSpeak发布后,Hacker News上爆发了一场关于"CodeSpeak到底算不算编程语言"的辩论。这个辩论实际上触及了一个更深层的问题:什么是编程语言?
批评者的核心论点是:CodeSpeak的spec文件没有严格的语法和语义定义,LLM作为"编译器"是非确定性的——同一个输入可能产生不同的输出,这违反了编程语言的基本契约。
Breslav的回应非常巧妙:他指出,在Kotlin的设计过程中,很多"看似严格"的语法规则实际上是为了服务于编译器而非人类。如果LLM能够理解结构化的英文spec并生成正确代码,那么"语法"的定义本身就值得重新思考。CodeSpeak不是要取代所有编程语言,而是在特定场景下提供一个更高效的抽象层次。
社区中一个有洞察力的观点是:CodeSpeak更像是一个workflow和tooling层,而不是传统意义上的编程语言。这个定位可能更准确,也更实用。
Breslav在访谈中展望了一个更远的未来。他认为,软件开发的下一个重大转变不是"AI帮你写代码",而是"代码成为一种可丢弃的中间产物"——就像今天没人会去手写汇编代码一样,未来可能没人会去手写Python或TypeScript。
这个愿景的核心是: - Spec是人类维护的唯一产物,进入版本控制 - 代码是机器生成的临时产物,可以随时重新生成 - 测试成为验证的核心,而非代码审查 - 编程从"怎么实现"变成"如何描述需求"
这听起来像是回到了"需求分析"的老路,但关键区别在于:CodeSpeak的spec是形式化的——它有明确的语法(虽然比传统编程语言宽松),可以被机器解析,可以自动编译。这不是在写"用户故事",而是在写一种新的、面向LLM的中间语言。
访谈中最有深度的部分之一是Breslav对比了Kotlin和CodeSpeak的设计哲学。Kotlin的设计约束是"必须与Java完全互操作",这决定了它的很多设计决策。CodeSpeak的设计约束则是"必须让LLM能可靠地编译",这导致了完全不同的语言特征。
Breslav指出,传统编程语言追求的是无歧义性(unambiguity)——每个语法结构必须只有一种解释。而CodeSpeak的spec追求的是足够的精确性(sufficient precision)——spec需要精确到LLM能生成正确代码,但不需要精确到每个细节。这是一个微妙但根本性的范式转变。
mindmap
root((CodeSpeak: AI时代的编程语言))
创造者背景
Andrey Breslav
Kotlin创始人(2010-2020)
JetBrains十年经历
职业倦怠后重新出发
核心理念
规格即源代码
代码是可丢弃的中间产物
Spec-first开发工作流
LLM作为编译器组件
技术架构
spec.md文件为source of truth
codespeak build命令
codespeak takeover命令
支持Python/Go/JS/TS/Kotlin/Swift
实战验证
4个开源项目测试
代码量缩减5.9x-9.9x
测试套件全部通过
目前alpha阶段
争议与挑战
是否算"编程语言"
LLM非确定性问题
调试流程未成熟
Spec精确度要求
哲学层面
编程抽象层次的跃迁
从"怎么做"到"要什么"
编程语言的重新定义
代码审查转向规格审查
短期(现在就可以做的): - 开始重视代码的"可规格化"——如果你的函数/模块很难用一两句话描述清楚,说明抽象层次有问题。CodeSpeak的理念即使不直接使用其工具,也能指导你写出更好的代码。 - 关注spec-driven development这个趋势。它不一定以CodeSpeak的形式出现,但"用结构化文档替代部分代码"这个方向几乎确定会发生。
中期(6-12个月): - 如果你是Tech Lead或架构师,认真评估CodeSpeak在哪些模块可以试用。最适合的场景是CRUD操作、API endpoint实现、数据转换逻辑等"模式化"代码。 - 在代码审查中,尝试将注意力从"怎么实现"转向"spec是否准确描述了需求"。这是一种思维训练,即使不用CodeSpeak也能提升代码质量。
长期思考: - Breslav的洞察揭示了一个趋势:编程的核心技能正在从"写代码"转向"描述问题"。这不是说编码能力不重要,而是"能清晰描述你想要什么"变得越来越重要。这要求开发者同时具备领域知识和技术表达能力。 - 对于想要保持竞争力的开发者,建议学习formal specification的基本概念(如TLA+、Alloy),这些技能在未来可能比写更多代码更有价值。
Kotlin之父用CodeSpeak证明:AI时代最值钱的编程技能不是写代码,而是精确地描述你想要什么——spec才是新的source code。
本文由「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 等场景全覆盖。
