所有软件,可能都要被重写一遍了**。**
AI 圈的大神、OpenAI 的前创始成员 Andrej Karpathy,最近发推感慨:
编程语言和形式方法领域,正迎来一个极其有趣的时代。
为什么?因为 LLM(大语言模型)彻底改变了软件开发的“约束条件”。
这可不是什么小修小补。
Karpathy 的判断很直接:我们可能会把历史上写过的所有软件,一遍又一遍地重写。
听起来很疯狂?但仔细想想,是这么个逻辑
依赖树正在枯死,单体架构回归
以前我们写软件,讲究“不要重复造轮子”。
于是,无数的库、无数的依赖包被堆叠在一起。你的项目依赖 A,A 依赖 B,B 依赖 C……这棵依赖树越长越深,直到变成一片谁也走不出的迷宫。
为什么这么做?因为读别人的代码太累了,理解一个庞大的陌生代码库更是让人头秃。
但现在,Hugging Face 的首席科学官 Thomas Wolf 指出了一个正在发生的巨变:
当重写代码和理解大型代码库变得极其廉价时,依赖树存在的理由就崩塌了。
你不再需要去啃那些晦涩的文档,也不再需要去维护那些脆弱的依赖关系。
你只需要对代码 Agent 说一句:“帮我把这部分功能实现一下”,或者“把那个库里我需要的逻辑提取出来”。
瞬间完成。
有意思的是,这种变化正在带回“单体架构”。过去被我们嫌弃的“大而全”,现在反而成了香饽饽。
理由很硬核:更小的攻击面、更小的软件包、更好的性能、更快的启动时间。
Wolf 表示:借助 LLM 不知疲倦的耐力,从裸机层面一直编码到应用层,这种梦想正在变得现实。
这可能有点反直觉。我们以为 AI 会让我们更依赖抽象层,结果它却让我们更愿意从零开始。
“林迪效应”失效,老代码不再神圣
如果你懂点投资或者历史,一定听过“林迪效应”。
简单说,就是存在越久的东西,未来存在的可能性就越大。就像那本《圣经》,或者那台还在跑的 COBOL 主机。
这背后还有个“切斯特顿围栏”原理:在拆掉一个围栏之前,你得先搞清楚它为什么被建起来。因为拆除总是有成本的。所以,老代码成了“神”,没人敢动,只能在外面打补丁。
但在 AI 时代,这个逻辑弱爆了。
Wolf 的观点很犀利:当软件可以从第一性原理重新构建,并且由一个不知疲倦的 Agent 去理解时,旧代码的护城河就干涸了。
以前人类程序员早就放弃了的烂摊子,AI 可以耐心地去梳理、去研究、去更新。
把一个古老的代码库完全用一种新语言重写?这在以前是想都不敢想的事,现在可能只是几个 Prompt 的事。Karpathy 也观察到了这一点:C 语言转 Rust 的势头正在兴起,升级 COBOL 等遗留代码库的兴趣也在增长。
老代码不再神圣,因为“理解”和“修改”的成本,突然归零了。
强类型语言的春天,人类不再重要
这里有个挺残酷的反转。
过去几十年,编程语言的流行,其实是一场人类心理学和社会学的实验。
为什么 Python 这么火?因为它好学,写起来爽,社区热闹。
为什么 JavaScript 横行霸道?因为它门槛低,谁都能上来写两行。我们在选择语言时,考虑的是“易学性”、“社区活跃度”、“写起来是否顺手”。
人类的心理偏好,决定了语言的生死。
但是,当人类不再是代码的主要编写者,甚至不再是主要阅读者时,这套游戏规则就变了。
Wolf 的判断:随着人类因素的减弱,那些对人类友好但“松散”的语言将失去优势。
未来属于什么?
属于强类型的、可形式化验证的、高性能的语言。
老实讲,这些语言对人类来说太痛苦了。学习曲线陡峭,写起来束手束脚,各种规则让人抓狂。但 LLM 不在乎这些。
LLM 喜欢的是确定性,是形式验证,是可以在强化学习环境中快速反馈的机制。
这点我觉得特别有讽刺意味。
程序员们争论了几十年的“最好语言”,最后可能既不是 Python,也不是 C++,而是一种人类极其不适应、但机器极其高效的语言。
开源社区的黄昏,AI 正在接管
这可能是最让人伤感的一个部分。
过去几十年,开源社区是建立在什么基础上的?
是人与人的连接。大家在一起写代码、学代码、用代码,为了荣誉,为了兴趣,为了“世界大同”。这是一种非常人类的社会活动。
但如果未来的代码,主要是写给 AI 看的,甚至是由 AI 写给 AI 看的呢?
Wolf 提出了一个很尖锐的问题:在一个由机器主导代码读写的世界里,这些人类的激励结构将开始崩塌。
也许会出现新的社区——由 AI 组成的社区,它们一起构建库和代码库。
但那种“极客精神”、那种黑客文化、那种人与人之间的认同感,将荡然无存。
如果开源开发不再需要人类,那么“AI 对齐”就不再是一个哲学问题,而是一个决定性的生存问题。毕竟,你总不希望这些 AI 社区写出来的代码,最终目的是为了消灭人类吧?
一种只属于AI的“神语”正在诞生
最后,让我们把目光放得更长远一点。
我们在创造新编程语言时,总是在纠结各种权衡:
表达性 vs 简单性;
安全性 vs 控制力;
性能 vs 抽象;
编译时间 vs 运行时间……
这些都是人类面临的困境。
但 AI 会面临同样的困境吗?
我很怀疑。
Wolf 说得很透彻:长期来看,创造新编程语言的理由,将与过去人类驱动的动机大相径庭。也许,在这个世界上,存在一种“最优的 LLM 编程语言”。
它可能极其繁琐,极其严格,没有任何语法糖,没有任何“人性化”的设计。
甚至,它可能看起来根本不像是我们熟悉的任何一种语言。
Karpathy 也在思考这个问题:Rust 对 LLM 来说都不是最优的,到底什么才是?我们还要为人类保留多少让步?
这真是一个极其有趣,又让人略感不安的时代。
所有的软件都可能被重写,所有的规则都可能被改写。
唯一的悬念是:在这个新世界里,还有人类的位置吗?
参考链接:
https://x.com/karpathy/status/2023476423055601903