第三章 · 生产工具的演变

3.4 自然语言作为编程语言

本节最后更新:2026-05-11
验证环境:无(纯理论章节)

最终抽象:当你说"我想要"就够了

我们花了一整章的篇幅回顾编程范式的四次解放。现在我们来回答最关键的问题:Vibe Coding 凭什么被认为是第四次解放?

前面三次解放的模式是:把"机器懂但人难懂"的东西包装起来,让你用更高层次的思维去表达。

第四次解放更进一步:框架/代码 → 自然语言。

你不需要再写代码,不需要配置框架,不需要了解 JSON 和 YAML。你只需要说"我想要一个什么什么功能"——AI 替你完成从自然语言到代码再到可运行产品的所有翻译工作。

但注意:说"我想要"和过去的写代码之间,有一个关键的区别——自然语言是有歧义的。

"帮我做一个好看的登录页面"——什么叫"好看"?你心里的好看和 AI 理解的好看可能完全不同。你和 AI 之间没有"共享的语境"。传统编程语言的优势在这里反而显现出来了:虽然写起来麻烦,但每一行代码的含义都是精确的、无歧义的。

这意味着在 Vibe Coding 中,学会"表达意图"本身就是一项需要练习的技能。你不是在"说"——你是在"迭代式地说"。你先说一个大概版本,AI 生成出来,你看了之后说"不是这样,这里改一下",AI 再调整。你的"编程语言"不再是精确的语法,而是"说→看→调整"的反复循环。

这本质上是一种新的"编程方式"——不再依靠语言的精确性,而是依靠反馈迭代的快速性。传统编程写一行就是一行,错了要重新编译。Vibe Coding 说一句话就能改,而且改的速度几乎和说的速度一样快。

为什么这是"终极抽象"

有一个简单但重要的理由:自然语言是所有人都掌握的表达方式。

前面三次抽象,每一次都打开了一个更大的创造者群体:

每一次抽象升级,都让"编程"这件事离"创造"更近、离"技术细节"更远。当编程的语言变成你的母语时,理论上任何有创造欲望的人都可以参与。

但这个"理论上"有一个重要的限定词——理论上。 现实中的 Vibe Coding 仍然需要你具备一些能力:能把想法分成可操作的步骤、能判断 AI 的输出对不对、能在迭代中逐步精确化你的需求。这些能力不是"会说话"就自动有的,它们和"写代码"的能力不太一样,但仍然需要学习和练习。

不过有一个你不需要的能力了——你不需要把想法精确到每一个标点符号才能开始。在传统编程中,你必须想清楚每一行怎么写。在 Vibe Coding 中,你只需要想清楚"大概想要什么",然后启动对话。精确性不是起点,而是迭代的结果。

这就是为什么说自然语言是"终极抽象"——不是因为它是抽象的终点(未来一定有更好的方式),而是因为它使用了人类本身最自然的表达系统。你不需要学一套新语言——你已经在用这套语言生活了。

"编程语言"这个概念本身在消失

你可能注意到了,在这四次解放中,"编程语言"这个概念本身变得越来越模糊。

在机器码时代,编程语言 = 机器指令。在高级语言时代,编程语言 = 语法规则。在框架时代,编程语言 = 配置项和 API 调用。在 Vibe Coding 时代,编程语言 = 你想要什么。

这不是说编程语言不重要了——而是说掌握编程语言不再是"能不能做"的门槛了。AI 替你掌握它,你只需要知道自己要什么。

就像你不需要懂印刷术也能写书,不需要懂汽油机原理也能开车,不需要懂 HTTP 协议也能上网。当一项技术足够成熟时,它的底层细节会消失在用户视野中。

用"消失"这个词可能不太准确。更准确地说,是它们从"你需要主动学习的东西"变成了"你使用的工具替你处理的东西"。 HTTP 协议没有消失,只是浏览器替你处理了。编程语言没有消失,只是 AI 替你处理了。

这个转变的一个有趣后果是:"用什么语言写"这个问题变得毫无意义。过去,你说"我要做一个 Web 应用",第一个要决定的就是"前端用什么、后端用什么"。现在,你根本不需要意识到这些选择的存存。AI 根据你的需求自动选择最合适的语言和框架。你看到的是可运行的应用,而不是"Python 写的"或"JavaScript 写的"。

一个合理的担忧

到这里你可能会想:"那如果所有人都靠 AI 写代码,代码质量谁来保证?如果 AI 生成的代码有安全漏洞怎么办?"

这是一个合理的问题。答案是:你的判断力比生成能力更重要。

这恰好是我们在 2.4 节深入展开的:当实现不再稀缺,判断力就是新的稀缺资源。AI 可以帮你写出能运行的代码,但判断这些代码好不好、安不安全、值不值得上线,仍然需要你的参与。

但让我把这个担忧再拆得具体一点,因为"代码质量"和"安全漏洞"是两个不同层次的问题。

代码质量的问题——AI 生成的代码风格是否符合你的项目标准?AI 是否遵循了你的团队的命名惯例?AI 是否在不需要的地方做了过度设计?这些问题的答案通常是"可以接受"。因为 AI 模型训练时读的大量是高质量的开源代码,它生成的代码风格至少是"中等偏上"的水平。而且随着模型的进步,AI 在代码质量上的表现只会越来越好。

安全漏洞的问题——这是一个更值得认真对待的担忧。AI 模型知道常见的安全模式(比如 SQL 注入防护),但它不一定会自动在你的代码中包含它——如果你没有在提示词中要求它。如果你说"帮我写一个登录页面",AI 可能不会自动加 rate limiting(请求频率限制)、不会自动加 CSRF 保护、不会自动做密码强度的客户端验证。

这不是 AI 的能力问题——如果你明确说了"请确保这个登录页面安全",AI 会做得很好——而是你没有说出来。这就是自然语言编程的核心弱点:你没有说=AI 不会做。

在传统编程中,安全和质量是通过"标准流程"保证的——你有代码审查、有安全审计、有测试用例。在 Vibe Coding 中,这些流程不会自动消失,但它们的形态会变化。你需要学会"在提示词中暗示质量和安全要求"——这不是一个自然就会的技能,它需要训练。

好消息是:当你意识到"我没有明确说的,AI 不会自己做"之后,你只需要改变说话的方式——在每轮对话的提示词后面加一句"请确保代码安全并处理常见的异常情况"。这比你手写全部安全代码要简单得多,但你确实需要记住要做这件事。

这个新范式的时代背景

03 节的最后,我们把整章的内容放在一起看一遍。从机器码到自然语言编程,这个演变不是偶然的——它是由三个深层趋势推动的:

第一个趋势:硬件越来越强。 1950 年代的计算机只能执行机器码,因为它们的算力不足以运行编译器。1970 年代的计算机可以运行编译器,但跑不动复杂的 IDE。2000 年代的计算机可以跑 IDE,但跑不动实时 AI。今天的计算机可以跑 AI 模型——这个"可以"的背后是六十年硬件进步的总和。

第二个趋势:软件越来越复杂。 简单的东西不需要抽象——你直接写机器码也能写完。但当你需要构建一个包含百万行代码的现代应用时,你不可能每行都自己写。复杂性本身在推动抽象层次不断上升。你建立抽象不是为了偷懒,而是为了管理复杂性。

第三个趋势:人越来越"贵"。 这里说的"贵"不是薪酬,而是注意力。同样的时间内,你用在"思考产品逻辑"上的价值,远高于用在"写样板代码"上的价值。编程工具的每一次进化,都在把注意力重新分配到更有价值的环节上——从"怎么实现"到"实现什么"。

这三个趋势叠加,让自然语言编程从"理论上可能"变成了"实际可行"。AI 不是凭空冒出来的——它是这个六十年趋势的最新章节。

🖼
图3-4:四次编程范式解放的对比
▲ 图3-4:四次编程范式解放的对比。每一列代表一种范式,从左到右是机器码、汇编、高级语言、框架、自然语言。每一行的对比项包括:编程语言形态、开发者群体规模、核心技能要求。自然语言范式的群体规模最大(几十亿人),核心技能要求最接近人类本能(表达意图+判断输出)。
本节要点
Vibe 练习

今天做一次"纯自然语言编程"实验:

打开 Claude Code 或你常用的 AI 编程工具,完全用自然语言(不用写一行代码)来完成一个小项目。比如:"做一个番茄钟网页应用,25 分钟工作 + 5 分钟休息,有开始暂停重置按钮,界面要简洁美观。"

在整个过程中观察:你在什么时候最想加上"技术术语"?当 AI 给出的结果不是你想要的时,你是用自然语言调整,还是下意识的想去看代码?

完成之后,试着做一次"安全增强"——对 AI 说:

"请检查这个番茄钟应用的代码是否有安全隐患或者体验缺陷,并给出改进方案。"

观察 AI 发现了什么问题。如果它发现了你没想到的安全问题,你就理解了"你没有说=AI 不会做"这句话的含意——同时也学会了如何弥补它(加一句"请检查并修复安全漏洞"即可)。