引言
2025 年 6 月 17 日,前特斯拉 AI 总监、OpenAI 联合创始人 Andrej Karpathy 在旧金山 Y Combinator AI Startup School 的演讲中,深入探讨了人工智能时代软件开发的根本性变革。他提出了“软件 3.0”的概念,标志着编程范式的又一次重大转型。本文基于 Karpathy 的演讲内容,分析软件从 1.0 到 3.0 的演进,探讨大型语言模型(LLMs)如何重塑软件开发,以及这一变革对未来技术生态和行业参与者的深远影响。
软件的演进:从 1.0 到 3.0
Karpathy 将软件发展的历史划分为三个阶段,每一阶段都代表了一种全新的编程范式:
-
软件 1.0:传统编程
软件 1.0 是传统编程的代名词,开发者使用 Python、C++ 等语言直接编写明确指令,计算机按照这些指令逐行执行。这种方式在过去 70 年主导了软件开发,GitHub 上的代码库是其典型代表。Karpathy 提到,GitHub 就像一张软件 1.0 的地图,记录了无数为特定任务编写的代码。 -
软件 2.0:神经网络编程
Karpathy 在 2017 年首次提出“软件 2.0”概念,指通过神经网络权重进行编程。开发者不再直接编写代码,而是通过设计数据集和运行优化器来训练神经网络。例如,Hugging Face 上的模型库(如 Flux 图像生成器)成为软件 2.0 的“GitHub”。在特斯拉自动驾驶项目中,Karpathy 观察到大量 C++ 代码(软件 1.0)被神经网络(软件 2.0)取代,神经网络逐渐“吞噬”传统代码,显著提高了效率。 -
软件 3.0:提示即程序
软件 3.0 是 Karpathy 提出的最新范式,以大型语言模型为核心。开发者通过自然语言提示(prompt)“编程”,这些提示本质上是英文指令,取代了传统的代码编写。Karpathy 强调,LLMs 是一种新型计算机,提示成为新的编程语言。这种方式极大地降低了编程门槛,使非技术人员也能通过描述需求创建软件。例如,一个简单的英文提示可以实现情感分类,而无需编写复杂代码。
软件 3.0 的核心特征
1. 自然语言编程
软件 3.0 的核心在于用自然语言(尤其是英语)作为编程语言。Karpathy 指出,这是一种“前所未有的”变革,因为每个人都能用母语描述需求,从而成为程序员。他在演讲中提到自己的一条推文:“我们现在用英语编写计算机程序”,这引发了广泛共鸣。这种编程方式不仅改变了开发流程,还使软件开发更加普惠。
2. LLMs 作为新型操作系统
Karpathy 将 LLMs 类比为操作系统,认为它们不仅是工具,而是复杂的软件生态系统。LLMs 的上下文窗口类似内存,模型本身像 CPU,协调计算与数据以解决问题。类似传统操作系统(如 Windows 或 Linux),LLMs 有封闭源代码(如 OpenAI、Gemini)和开源替代品(如 Llama 生态)。他进一步指出,LLMs 的计算模式类似于 20 世纪 60 年代的“时间共享”系统,集中在云端,通过 API 提供按需访问。
3. 部分自主与人机协作
Karpathy 强调,软件 3.0 时代的关键是“部分自主”应用,而非完全自主的 AI 代理。他以钢铁侠战衣为喻,提出理想的 AI 工具应像增强人类能力的“战衣”,而非完全独立的机器人。例如,编程工具 Cursor 通过集成 LLMs 管理上下文、协调多次模型调用,并提供图形界面(GUI)供人类审核代码变更。这种“自主滑块”允许开发者根据任务复杂性调整 AI 的自主程度,从而在效率与可靠性之间取得平衡。
4. 软件基础设施的适配
Karpathy 指出,当前软件基础设施(如 GUI 和文档)是为人类设计的,LLMs 难以直接访问。他建议为 LLMs 创建专门的接口,如用 markdown 格式的文档替换传统网页文档,或用类似 robots.txt
的 lm.txt
文件为 LLMs 提供网站元信息。他还提到 Vercel 和 Stripe 等公司已开始提供 LLMs 可读的文档格式,用 curl 命令替代“点击”指令,以适配 AI 代理的需求。
软件 3.0 的机遇与挑战
机遇
-
编程民主化
软件 3.0 让每个人都能通过“氛围编码”(vibe coding)快速构建应用。Karpathy 分享了自己用 LLMs 在一天内创建 iOS 应用和网页应用(如 menu.app)的经历,证明了自然语言编程的潜力。这种方式特别适合快速原型开发和个性化需求。 -
重写软件生态
Karpathy 认为,软件 3.0 将“吞噬”部分软件 1.0 和 2.0 的功能,大量传统代码将被重写为提示驱动的程序。这为开发者提供了重新设计产品和服务的机会,尤其是在教育、编码和创意工具领域。 -
新型工具与生态
新的工具正在涌现,如 GitHub 的“fetch”功能将代码库转化为 LLMs 可读的文本,Devon 的深度 wiki 为代码库生成文档。这些工具降低了 LLMs 访问和理解数据的难度,推动了更广泛的应用。
挑战
-
认知缺陷与可靠性
Karpathy 将 LLMs 比喻为“人类的静态模拟”,它们拥有百科全书式知识,但也存在“幻觉”(生成错误信息)和缺乏自我认知的问题。例如,LLMs 可能错误地认为 9.11 大于 9.9,或无法像人类一样积累长期专业知识。 -
安全与控制
LLMs 容易受到提示注入攻击,存在数据泄露风险。Karpathy 建议通过 GUI 和人工审核来控制 AI 输出,确保可靠性。他强调,人类必须在生成-验证循环中快速迭代,以弥补 LLMs 的不足。 -
基础设施适配的复杂性
尽管 markdown 文档和 curl 命令等适配措施有所帮助,但彻底改造现有软件基础设施仍需时间。例如,Karpathy 提到在部署 menu.app 时,DevOps 任务(如身份验证和支付集成)耗时远超编码本身,凸显了基础设施适配的复杂性。
软件 3.0 的未来展望
Karpathy 认为,软件 3.0 仍处于早期阶段,类似 20 世纪 60 年代的计算环境。未来十年,自主滑块将逐渐向更高级的自主性滑动,但完全自主的 AI 代理仍需时间。他鼓励开发者专注于构建部分自主产品,通过定制化 GUI 和审核机制优化人机协作。
他还预测,LLMs 将改变技术的传播方向。传统技术(如电力、互联网)通常从政府和企业扩散到消费者,而 LLMs 则反其道而行之,率先服务于普通用户(如帮助“煮鸡蛋”),随后才被企业和政府采纳。这种“自下而上”的传播模式为初创企业和个人开发者提供了巨大机会。
结论
Andrej Karpathy 的演讲揭示了软件 3.0 时代的到来——一个以大型语言模型为核心、提示即程序的编程范式。这不仅是技术的进步,更是软件开发哲学的变革。通过自然语言编程、部分自主应用和适配基础设施,软件 3.0 将重塑行业格局,为新进入者提供了前所未有的机会。然而,LLMs 的认知缺陷和基础设施适配的挑战提醒我们,成功的软件 3.0 产品需要在人类与 AI 之间找到平衡。
正如 Karpathy 所言:“这是一个进入行业的最佳时机。”无论是学生、开发者还是创业者,软件 3.0 都为我们打开了一扇通往未来的大门。让我们共同探索如何在这台“新型计算机”上编程,创造出属于这个时代的钢铁侠战衣。