卡帕西中文站 / 文章导读 / Software 2.0

Software 2.0:程序不再是写出来的,是搜索出来的

原文发表:2017-11 · 导读更新:2026-08
这是导读,不是翻译。目标是让你 5 分钟拿到文章的思想地图;值得的话,带着地图去读 英文原文 →(本站另有发布推文的解读,本页讲文章本身的完整论证)

一句话

软件正在换一种存在方式: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 的地基上,权重仍是那个「不可读却更强」的程序本体。至于「不可解释」的局限,则催生了今天可解释性研究这整个学科——问题被他点中了,答案还没长出来。

对你意味着什么

  1. 2026 年读它,是为了拿到「范式判断力」:遇到一个问题,先问「这里能攒数据、能定义目标吗」——能,就别手写规则。这个决策框架在 agent 时代依然是第一性的。
  2. 独立开发者的机会藏在他的「工具链预言」里:数据集版本管理、评估集运营、模型监控——他 2017 年点名缺失的基础设施,至今仍有大量空位,且轮到了 LLM 应用层。
  3. 读法建议:全文不长,值得通读;把七条优势当清单背下来,它们是理解「为什么 AI 芯片、为什么端到端」的最短论证链。

延伸阅读