有人在社交媒体放话:不玩"氛围编程"(Vibe Coding),就等于在写当代版的COBOL——能用,但已经过时了。说这话的人是谁不重要,重要的是这种声音正在蔓延。作为git-lrc的作者,一个长期做快速构建工具的人,我觉得有必要拆开看看这股风潮里到底藏着什么。
正方:氛围编程确实解决了真问题
先承认它的合理性。氛围编程的爆火不是偶然——它让普通人用自然语言就能生成代码,门槛断崖式下跌。一个不会写Python的人,现在可以描述需求,看着AI吐出能跑的程序。这种"所想即所得"的体验,确实打破了专业编程的壁垒。
从工具演进史看,每次抽象层上移都伴随着类似的欢呼。汇编到B语言,B到C,C到Python——每一次都让更多人能指挥机器。氛围编程把"写代码"变成了"描述意图",这是抽象层的一次激进跳跃。
它的核心卖点很直白:速度。想法到原型的路径被压缩到最短,试错成本极低。对于验证概念、搭建演示、个人项目,这种效率提升是实实在在的。
反方:但自然语言到代码不是真正的"翻译"
这里藏着关键分歧。传统语言转换——比如C到汇编——是形式语言之间的映射。一个print语句对应确定的汇编指令,for循环对应确定的跳转结构。这种映射是精确的、可逆的、一对一的。
自然语言到代码完全不同。你的提示词可能是两行,也可能是十行;结构可能清晰,也可能模糊。但输出波动极大——同一模型多次运行,结果可能迥异。这不是翻译,是"即兴生成"。
更麻烦的是逆向问题:给你一段AI生成的代码,你能还原出原始需求吗?形式语言之间可以,C和汇编能双向重建。但自然语言到代码是一对多——同样的功能,AI可能用完全不同的方式实现。意图在转换中丢失了。
这意味着什么?调试和迭代变成噩梦。代码能跑,但你不知道它为什么这样写;需要修改时,你无法定位问题根源。系统在你和最终产物之间塞了一层不可解释的"解释权"。
我的判断:抽象层需要"防漏",而非无限堆叠
Joel Spolsky提过"抽象漏洞"——再完美的封装,底层细节也会渗上来。写Java的人终究要懂内存和CPU,否则性能问题会咬人。这个规律在AI时代更残酷:你不仅要知道代码在做什么,还要知道AI"认为"你在要什么。
Elon Musk的例子常被误读。他不是亲自焊火箭,但他必须理解推进原理、材料极限、气动设计——足够深,才能在关键决策时判断对错。深度不是可选项,是严肃工程的入场券。
氛围编程的危险在于,它假装这层深度可以跳过。短期看,确实能出东西;长期看,你在建造自己无法维护的系统。当AI的"理解"偏离你的真实需求,你没有抓手去纠正。
我主张的是"智能体工程"(Agentic Engineering)——把AI当作需要管理的协作者,而非黑箱魔术师。这意味着:明确的需求边界、可追踪的决策链、人对关键节点的审核权。效率要,但可控性也要。
工具的价值不在于让外行瞬间变专家,而在于让专家更高效。氛围编程模糊了这条线,而我们需要把它重新划清。
热门跟贴