Software 2.0:程序不再是写出来的,是搜索出来的
一句话
软件正在换一种存在方式:Software 1.0 是人用 Python/C++ 写下的显式指令,Software 2.0 是神经网络的权重——人只负责定义目标、圈定架构、准备数据,具体的「程序」由梯度下降在权重空间里搜索出来。这不是又一个分类器,而是软件开发范式本身的更替。
文章讲了什么
核心论证分三层。第一层是定义:Software 2.0 用一种对人类不友好、但对优化友好的「语言」写成——数百万个浮点权重。开发流程从「写代码、编译」变成「攒数据、训练」;数据集才是源码,训练是编译。第二层是证据:他列举了正在被 2.0 吞掉的领域——视觉识别(手工特征让位于 ConvNet)、语音识别与合成(WaveNet)、机器翻译、下棋打游戏(AlphaGo Zero),甚至数据库索引。规律高度一致:凡是能收集大量数据、能定义可优化目标的地方,学出来的程序就打败人写的程序。第三层是论优劣。优势有七条,最常被后人引用:计算同质(几乎只有矩阵乘法和 ReLU,因此极易做专用芯片)、运行时间和内存恒定(没有死循环和内存泄漏)、高度可移植、敏捷(想要 2 倍速度?砍一半通道重训即可)、模块可以「融合」(多个网络联合微调、梯度穿透彼此),以及最扎心的一条——
"Gradient descent can write code better than you. I'm sorry." ——Andrej Karpathy,2017 · 原文 →
局限他也没回避:不可解释(你要 90% 准确但可理解的模型,还是 99% 准确但黑箱的?)、会静默吸收数据里的偏见、存在对抗样本这种反直觉的失效模式。结尾是一份预言清单:2.0 时代需要自己的工具链——管数据集而非管代码的 IDE、以数据集为中心的 GitHub、模型的包管理器。在这个世界里,程序员的日常工作从写逻辑变成了采集、清洗、标注和喂养数据。
写作背景
2017 年 11 月,卡帕西刚从 OpenAI 转任特斯拉 AI 总监半年,正亲眼看着 Autopilot 的 C++ 代码被神经网络一块块蚕食——这篇文章就是那段经历的理论化。当时深度学习的主流叙事还是「机器学习是程序员工具箱里的新工具」,他把话说得重得多:不是工具,是取代。发布时嘲讽者不少(「权重怎么能叫软件?」「这只是曲线拟合」),他后来还专门写过回应。如今回看,争议本身成了文章重要性的注脚——范式级的判断在当时听起来总像是夸大其词。
十年后再看
这是他预言兑现率最高的文章。计算同质→专用芯片的判断,随后被 TPU、各类 NPU 和英伟达的十年狂飙验证;「数据集即源码」成了后来数据中心 AI(data-centric AI)运动的纲领;「模块融合」在今天的多模态端到端模型里成为常态。最大的意外是兑现的方式:他当年设想的是每个领域各训一个专用网络,而 LLM 用一个通用模型把无数领域一次性「2.0 化」了。他自己在 2025 年的演讲里补上了续集:提示词时代的 Software 3.0——英语成了新的编程语言,但 3.0 恰恰建立在 2.0 的地基上,权重仍是那个「不可读却更强」的程序本体。至于「不可解释」的局限,则催生了今天可解释性研究这整个学科——问题被他点中了,答案还没长出来。
对你意味着什么
- 2026 年读它,是为了拿到「范式判断力」:遇到一个问题,先问「这里能攒数据、能定义目标吗」——能,就别手写规则。这个决策框架在 agent 时代依然是第一性的。
- 独立开发者的机会藏在他的「工具链预言」里:数据集版本管理、评估集运营、模型监控——他 2017 年点名缺失的基础设施,至今仍有大量空位,且轮到了 LLM 应用层。
- 读法建议:全文不长,值得通读;把七条优势当清单背下来,它们是理解「为什么 AI 芯片、为什么端到端」的最短论证链。
延伸阅读
- 英文原文(Medium)
- 解读:Software 2.0 发布推文 —— 这篇文章当年如何引爆讨论
- 解读:Software 3.0 —— 2025 年的续篇:提示词即程序
- 解读:一切向 Transformer 收敛 —— 2.0 内部的架构统一