Cursor CEO:用AI聊天写代码,是个伪命题
来源: Cursor CEO Michael Truell, a16z Podcast
核心主张: 编程的未来不是"聊天生成代码",而是"代码之后的世界"——软件逻辑向伪代码和英语演进,人类在高维度编辑意图,AI在底层实时实现。
一、两个幻觉
关于"未来怎么开发软件",行业里同时流行着两个互斥的幻觉。
保守派的幻觉:一切照旧。TypeScript、Go、Rust 该手写的还是要手写,AI 不过是个聪明点的自动补全。他们相信编程是门手艺,手艺不会消失。
激进派的幻觉:以后写软件就像在微信群里跟外包团队聊天。你提需求,AI 盲盒式生成。你觉得不对就再提一句,AI 再改一轮。直到某一刻你叹了口气说"算了就这样吧"。
Cursor 的 CEO Michael Truell 在最近 a16z 的访谈里说:这两种都想偏了。
尤其是第二种——"聊天写代码",根本行不通。
二、为什么聊天写代码是伪命题
Truell 只给了一个理由,但这个理由很致命:缺少精确性(Precision)。
想象一下,你在 Slack 里对一个外包工程师说:"把我应用的这个按钮改一下。"
这句话的问题不是信息量太少,而是意图无法被精确传递。按钮改什么?颜色?大小?位置?点击后的行为?响应式布局要不要适配?
在真实的软件工程里,一个按钮的背后可能是:
- 三个断点的响应式规则
- 五种状态的样式映射
- 两个 API 调用的错误处理
- 一个 A/B 测试的流量分配
- 半打可访问性(a11y)属性
你不可能用一句自然语言把这一切表达清楚。就算你愿意写一段很长的 Prompt,你也只是在用英语笨拙地描述一份本可以用代码精确表达的逻辑。
Truell 的原话更直接:
如果你想对软件拥有完全的控制权,你就不能只在游离于系统之外的聊天框里,发一句"把我的应用这里改一下"。你必须能够"指着"具体的地方,给出极其精确的微调动作。
这不是在贬低自然语言。而是在说:自然语言擅长描述"要什么",不擅长描述"怎么做"。 而软件工程的大部分心力,恰恰花在"怎么做"上。
聊天框里的对话,永远是游离于系统之外的。你和 AI 聊了一百轮,最后生成的代码你可能根本不理解。出了问题你回不到那一百轮里的任何一刻,只能再开一轮新的对话,祈祷这次 AI 猜对你的意图。
这根本不是编程。这是用自然语言玩猜谜游戏。
三、"代码之后的世界"长什么样
Truell 给了一个名字:a world after code。
不是"没有代码",而是"代码之后"——代码退到人类视野之外,成为机器之间的私语。人类面对的,是一份极其容易阅读、极其精准的逻辑文档。
你可以把它理解为一种"超级伪代码":
- 看起来像英语,读起来像产品文档
- 但每一个词都有精确的语义和可执行的边界
- 没有指针、没有内存管理、没有类型体操
- 但也不是自然语言的模糊性——它是结构化的、可验证的、可回滚的
你站在这份文档的高维度上直接编辑逻辑。AI 在底层实时把它翻译成可执行的实现。
这不是科幻。Truell 已经在 Cursor 里开始做了。
Cursor 的 Composer 功能就是这个方向的第一步:你在编辑器里写一段描述性的逻辑,Cursor 不是生成代码然后塞给你,而是理解你的意图,在代码库里找到需要改的地方,精确地、原子地执行修改。
区别在于:
- 聊天模式:你说"改这里",AI 猜你的意思,生成一堆代码,你复制粘贴
- 代码之后模式:你"指着"具体的位置,给出精确的微调动作,AI 在底层实现,但你始终知道每一行在做什么
四、编程的历史就是一部"去符号化"史
Truell 提了一个观察:从打孔卡到汇编,从 C 语言到 Python,人类一直在往后退。
- 打孔卡:你亲手把导线插到正确的位置
- 汇编:你用助记符代替机器码
- C 语言:你不再需要关心寄存器分配
- Python:你不再需要关心内存管理
- AI 时代:你不再需要关心具体的实现细节
每一次"后退",都是把意图留给人类,把细节留给机器。
但这里有一个关键的区分:
- 好的后退:你仍然掌控逻辑的结构,只是不亲自写每一行实现
- 坏的后退:你放弃了对逻辑结构的理解,把一切都交给 AI 的"黑盒"
Truell 一直在警惕后者。他多次公开批评 "vibe coding"——那种"只要代码能跑就行,不管它怎么工作"的开发方式。
AI 应该加速好的工程实践,而不是消灭它们。
五、精确性为什么是唯一出路
软件工程的核心矛盾从来都不是"写代码"vs"不写代码"。
它一直是:如何在复杂度爆炸的同时,保持对系统的理解和控制。
一个中等规模的后端服务,可能有几万行代码、几十个模块、十几种状态转换。人类的大脑能同时处理的信息量是有限的。我们无法在任何时候都记住整个系统的每一个细节。
所以我们发明了:
- 抽象:把细节藏起来,只暴露接口
- 类型系统:让编译器帮我们检查一致性
- 测试:让机器帮我们验证行为
- 版本控制:让我们可以回滚到任何一个历史状态
这些工具的共同点是:它们都是精确的。
- 类型系统不会"大概"认为你的代码是对的
- 测试不会"差不多"通过
- Git 不会"大概"回滚到某个版本
精确性是人类控制复杂系统的唯一方式。
聊天式编程的问题,恰恰是放弃了精确性。你用自然语言描述需求,AI 用概率模型生成实现。这个过程中没有编译器帮你检查,没有类型系统帮你约束,没有测试帮你验证。只有你和 AI 的"默契"。
这不是工程。这是运气。
六、Cursor 在做什么
Truell 没有停留在理论层面。Cursor 的产品演进,就是朝着"代码之后的世界"一步步走的。
第一步:Tab 补全
AI 猜你下一行要写什么,按 Tab 接受。这是"AI 辅助手写代码",精确性由人类保证——你看了代码,觉得对,才按 Tab。
第二步:Cmd+K 编辑
你选中一段代码,描述你想怎么改,AI 在原地修改。你还是能看到 diff,能逐行审查。
第三步:Composer
你描述一个功能需求,AI 在多个文件间协调修改,生成一个完整的实现方案。但你仍然可以审查每一个变更,可以回滚,可以精调。
第四步:Agent(进行中)
AI 不只是执行你的命令,而是理解你的意图,在代码库里自主导航、规划、执行。但关键是——它执行的一切,你都能看见、能理解、能干预。
Truell 反复强调:Cursor 不是在做"让 AI 替程序员写代码",而是在做"让 AI 把程序员从实现细节里解放出来,让他们专注在逻辑和架构上"。
七、那未来还需要程序员吗
需要。但"程序员"的定义会变。
未来的软件工程师,可能不会再写一行 TypeScript 或 Rust。但他们需要:
- 理解系统的架构和边界
- 设计模块之间的契约
- 定义状态和行为的精确语义
- 审查 AI 生成的实现是否符合意图
- 在系统行为偏离预期时,能定位到逻辑层面的根因
换句话说,工程思维不会消失,编码技能会退化。
就像今天的程序员不需要懂汇编,但仍然需要理解 CPU 缓存、内存模型、并发语义。未来的程序员不需要手写每一行业务代码,但仍然需要理解分布式系统、一致性模型、安全边界。
八、结语
Michael Truell 的这段话,本质上是在重新定义 AI 和人类的协作边界:
不是"人类提需求,AI 盲盒生成"。也不是"人类手写每一行代码"。而是"人类在高维度上精确地定义意图,AI 在底层精确地实现意图"。
这个边界的关键,是精确性。
自然语言是模糊的,代码是精确的。AI 时代的编程,不是用模糊的语言替代精确的代码,而是找到一种比代码更高级、但仍然精确的表达方式。
也许它看起来像伪代码。也许它看起来像结构化的英语。也许它看起来像一份产品需求文档——但这份文档是可执行的、可验证的、可回滚的。
这才是"代码之后的世界"。
不是代码死了。是代码隐身了。
参考
- a16z Podcast: Michael Truell — How Cursor Builds at the Speed of AI
- Cursor: https://cursor.com
- Michael Truell on X: https://x.com/mntruell
#Cursor #AI编程 #软件开发 #a16z #MichaelTruell #代码之后 #AIAgent #vibecoding
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。