AI时代的软件工程
马斯克在推特上说, 过几年AI不会再生成代码, 而是直接输出二进制。这是一种 AI 时代比较激进的看法,但我还是无法苟同。有人会反驳,一个现代代码项目的体量(比如一个操作系统,或者一个大型商业应用比如office三件套)没有哪个人能完整装进脑子, 也没人读过gcc吐出来的汇编, 我们照样用得很放心。凭什么编译器可以, AI就不行?
区别不在于我们懂不懂, 而在于我们知不知道自己不懂什么。也就是所谓的“known unknown”与“unknown unknown”的区别。编译器有规范, 有几十年的测试和bug库, 它会错, 但错法是有限的, 能归类的。第三方依赖有版本号, changelog, issue tracker, 我没读过它的源码, 但我知道它的边界在哪, 出事了知道去哪查。这些都是known unknown: 细节我不清楚, 但我清楚"不清楚"的范围, 需要的时候还能把它变成known。
LLM不是这样。把它当成更高级的编译器, 是AI时代最危险的误解之一。编译器做确定性的翻译, 你给的程序足够精确, 它就照着语义展开。LLM拿到的是一句模糊的话, 它自己补需求, 猜边界, 挑架构, 连什么算"对"都替你定了。更麻烦的是, 它不会告诉你"这里我做了个决定"。假设是悄悄塞进去的, 你连该怀疑哪里都不知道。这就是unknown unknown。
Known unknown无法避免, 就像没人会审完每一个依赖。但用AI的方式不对, 就是在不断扩大unknown unknown, 而这类风险最致命的地方在于: 出事之前, 你根本不知道它存在。
那AI再强呢? 出错率会降, 可验证性不会跟着自动出现。编译器可靠, 不只是因为它聪明, 而是因为语义被规范钉死, 可以被独立验证。一个再强、却是从分布中基于概率采样输出的系统, 错得少了, 但错的时候依然没法预测。等哪天AI真的值得信任, 大概率是周边长出了验证体系: 形式化规范, 属性测试, 可审计的决策记录。到那时被信任的是"AI+验证", 不是AI本身。所以将来真跳过了代码, 也不是不行, 前提是我们发现了一种更新,更“AI Native”的验证体系。信任来源于可验证, 而非能力。

浙公网安备 33010602011771号