这篇访谈里,传奇程序员John Carmack聊了他做《毁灭战士》《雷神之锤》这些经典游戏、搞VR头盔、造火箭的经历。他对当前市场看法偏谨慎:觉得Meta每年砸100多亿美元搞的“元宇宙”,如果未来5到10年VR眼镜不能变得像普通眼镜一样轻便,就可能只是泡沫。他重点提了三个东西:Meta(投资巨大但风险高)、OpenAI的GPT-3(技术厉害但离真正的通用人工智能还差得远)、DeepMind的AlphaFold 2(蛋白质预测很牛,但同样不是AGI)。
John Carmack在Lex Fridman播客中讨论了其职业生涯核心:从id Software联合创始人(主导《Commander Keen》《Wolfenstein 3D》《Doom》《Quake》等革命性游戏开发)到Oculus VR CTO(推动虚拟现实与元宇宙技术路径),再到当前聚焦通用人工智能(AGI)问题。核心观点包括:编程与游戏技术革新是行业基石,VR/AR是通向元宇宙的关键入口,而AGI是下一个重大挑战。重要结论:技术突破需长期专注与迭代,如Doom的3D引擎和Oculus的VR硬件;AGI发展需超越当前深度学习范式,强调系统级创新。
John Carmack 是传奇程序员、id Software 联合创始人(主导《Wolfenstein 3D》《Doom》《Quake》等革命性游戏开发),Armadillo Aerospace 创始人,曾任 Oculus VR CTO。本期主线是 Carmack 对其职业生涯中编程、游戏引擎、VR/AR、元宇宙、AGI 及火箭技术等关键领域的深度回顾与前瞻判断。全片最有分量的判断:Carmack 认为,当前深度学习范式本身不足以通向 AGI,需要一种全新的、能处理“开放性”问题的系统级创新,而不仅仅是更大规模的模型和数据。
Carmack 认为,编程的核心魅力在于从零创造复杂系统的“魔法感”,而游戏引擎的每一次突破都源于对性能极限的追求。
Carmack 认为,VR/AR 是实现“元宇宙”愿景的物理基础,但当前设备在重量、视场角、分辨率、输入延迟和社交交互方面仍有巨大改进空间。
Carmack 认为,当前基于大规模神经网络和强化学习的 AI 方法,虽然在特定任务上表现出色,但无法解决 AGI 所需的“开放性”问题。
1. 处理“未知的未知”:在训练数据之外,面对全新情况时能自主推理。
2. 具备“世界模型”:不仅学习输入-输出映射,还要学习世界的因果结构。
3. 实现“持续学习”:在不遗忘旧知识的前提下,吸收新知识。
Carmack 认为,Armadillo Aerospace 的经历让他深刻理解了“系统工程”的重要性,即“让所有子系统协同工作”比“单个组件的极致性能”更重要。
| 标的 | 嘉宾态度 | 关键数据 |
|---|---|---|
| Meta (原 Facebook) | 风险提示 | 每年 VR/AR 投资 > 100 亿美元;若 5-10 年内硬件未达“眼镜形态”,元宇宙可能失败 |
| OpenAI (GPT-3) | 中性(技术认可,但认为不足以通向 AGI) | 1750 亿参数 |
| DeepMind (AlphaFold 2) | 中性(技术认可,但认为不足以通向 AGI) | 蛋白质结构预测突破 |
| Armadillo Aerospace | 历史回顾(已关闭) | 总投入 < 2000 万美元;Stig 火箭实现 1 公里 VTVL |
1. Carmack 认为编程的“魔法”在于用算法突破硬件限制:《Doom》的 BSP 树和预计算光照让 1993 年的 PC 实现了 35 帧/秒的 3D 渲染,而同类产品仅 10-15 帧。
2. VR/AR 的终极目标是“视觉图灵测试”:需要单眼 8K 分辨率、140 度视场角、< 5 毫秒延迟,且设备重量 < 100 克才能实现全天候佩戴。
3. Carmack 对“元宇宙”持谨慎态度:如果 2027 年前没有出现重量 < 150 克的 AR 眼镜,元宇宙将只是营销泡沫。
4. AGI 需要超越“超级鹦鹉”范式:当前 AI 缺乏因果推理和世界模型,无法处理“未知的未知”。
5. Carmack 提出反直觉的 AGI 路径:AGI 可能不是让 AI 更聪明,而是让 AI 更“笨”——专注于一个核心问题,从中涌现通用能力。
6. 火箭开发中 90% 是系统工程,10% 是性能:Armadillo 的失败不是因为发动机不够好,而是因为系统可靠性不足。
7. Carmack 的“一个数据结构解决多个问题”编程哲学:《Doom》的 BSP 树同时用于渲染、碰撞检测和 AI 寻路,是效率的典范。
8. 可重复使用轨道级火箭需要至少 10 亿美元和 5 年:Armadillo 的 < 2000 万美元投入证明了“业余爱好者”模式的极限。
Carmack 对编程语言的讨论揭示了技术生态中一个被低估的现象:路径依赖的深层影响。他提到 Turbo Pascal 在编译速度上比当时的主流编译器快10-20倍,这种效率优势本可能改变编程语言的发展轨迹。然而,C语言凭借Unix生态系统的惯性最终胜出——这并非纯粹的技术优劣问题,而是生态系统锁定效应的典型案例。
关键数据对比:
| 特性 | Turbo Pascal | C语言 |
|---|---|---|
| 编译速度 | 极快(单遍编译) | 较慢(多遍优化) |
| 类型安全 | 支持范围检查数组 | 无内置边界检查 |
| 内存管理 | 手动(同C) | 手动 |
| 生态系统 | 有限(Borland主导) | 庞大(Unix/Linux) |
| 安全漏洞倾向 | 较低(可选检查) | 较高(缓冲区溢出常见) |
Carmack 指出,如果编程世界走了Pascal路线,许多C语言的安全问题可能被避免——这是一个被忽视的"技术分叉点"思考。
Carmack 提到今早还在Twitter上看到资深游戏开发者争论垃圾回收的利弊,这揭示了工程实践与理论理想之间的张力:
Carmack 的立场是务实的:99%以上的软件应该使用垃圾回收,只有在最严格的实时系统中才需要手动管理。这种"按场景选择工具"的思维,与他在游戏开发中"根据硬件限制选择算法"的方法论一脉相承。
Carmack 对JavaScript的比喻极具洞察力——将JavaScript比作生物演化:
> "这就像这个巨大的混乱,如果东西不工作,它们自然消亡;如果对人们有用,它们自然存活。"
这个类比揭示了几个关键点:
1. 效率不是唯一优化目标:JavaScript的"深度栈"(从一行代码到浏览器渲染)极其复杂,但依然能工作
2. 规模创造可能性:数十亿设备构成的生态系统允许"试错-存活"的演化机制
3. 局部最优 vs 全局最优:JavaScript可能不是任何单一指标上的最优解,但它在"存活"这个终极指标上胜出
Carmack 还提出了一个发人深省的观点:如果你能接受比"光速"慢1000倍的性能,很多问题就变得可解。这与他早期在游戏开发中"用技巧绕过硬件限制"的思路一致。
Carmack 对调试器的态度与主流"Unix文化"形成鲜明对比:
> "任何认为'只要读代码并思考就行'的人,这都是疯狂的言论。你甚至无法读完一个大系统的所有代码。"
他提出了一个关键观点:调试器不仅是找bug的工具,更是理解系统的实验平台。在游戏开发文化中,程序员"甚至在知道有问题之前就启动调试器",这种预防性使用方式与"等到山穷水尽才用GDB"的做法截然不同。
两种调试文化的对比:
| 维度 | 游戏开发文化 | Unix/Silicon Valley文化 |
|---|---|---|
| 调试器使用 | 日常工具,主动使用 | 最后手段,被动使用 |
| IDE偏好 | Visual Studio等 | Emacs/Vim |
| 调试时机 | 写代码后立即单步执行 | 出现无法理解的bug时才用 |
| 效率影响 | 高(即时反馈) | 低(编译-日志循环) |
Carmack 描述了一个极具启发性的经历:当他用代码分析工具彻底检查id Software的代码库时,即使是被公认为最稳健的代码,也充满了错误。
> "任何在语法上被语言允许的东西,如果代码库足够大,它最终会出现。"
这个发现导致了他的方法论转变:从依赖程序员的好意转向依赖自动化工具。他特别强调:
Carmack 提到自己的私有代码中10-20%是断言,这不仅是调试工具,更是设计意图的编码:
> "这段代码最初是在这种世界观、这种约束集下编写的。如果某些东西被打破,意味着你需要重新思考初始假设。"
这种"断言即文档"的理念,与他在游戏开发中"固定数组大小+断言"的做法一致——通过硬编码限制来捕捉环境变化,而不是让系统无限适应。
Carmack 提出了一个极具原创性的概念:游戏设计的"图灵完备性"。Wolfenstein 3D的块状世界无法容纳真正的创意多样性,而Doom的任意角度墙壁和可变地板/天花板则跨越了这条线。
设计空间对比:
| 游戏 | 设计自由度 | 社区创作数量 | 创意持久性 |
|---|---|---|---|
| Wolfenstein 3D | 低(90度块状) | 有限 | 低(很快被耗尽) |
| Doom | 中(任意角度+高度) | 数千个关卡 | 高(至今仍有新创作) |
| Minecraft | 高(1/8比例体素) | 无限 | 极高 |
Carmack 指出,Wolfenstein之后的技术许可没有产生任何有影响力的作品,而Doom的社区至今仍在创造新内容——这证明了"设计空间临界点"的存在。
Carmack 对Quake开发的反思是全书最宝贵的教训之一:
> "如果我能回去告诉年轻的自己,我会说:把这些创新分成两个阶段,做成两个独立的游戏。"
他建议的拆分方案:
这个教训的核心是:不要试图在一次迭代中解决所有问题。Quake同时推进了:
1. 全新3D渲染引擎
2. 客户端-服务器网络架构
3. 可编程游戏逻辑(QuakeC)
4. 光影映射表面缓存
如果分两步走,可以提前8个月推出一个"看起来像Doom但感觉像Quake"的游戏,然后再用6个月推出完整的3D引擎。
Carmack 反复强调一个看似矛盾的观点:真正的创新往往来自"假装"。
> "Doom有很多烟雾和镜子——人们认为它比实际更强大,但我们选择了正确的烟雾和镜子来部署。"
这种方法的本质是:通过牺牲某些能力来换取其他能力的极大提升。在Doom中,牺牲了倾斜墙壁和桥梁的能力,换来了极高的渲染速度和流畅的体验。
这与他在AGI问题上的观点一致:"烟雾与镜子"可能是通向真正智能的路径——先假装理解,然后真正理解。
Carmack 对VR发展的核心观点是:不要发明虚构用户,而要关注真实用户。
> "不要做Alice Bob Charlie来匹配你想要的市场细分矩阵。当你已经有真实用户时,想象用户是一个错误。"
他提出的"价值梯度"概念值得深思:
Carmack 对Beat Saber的分析展示了逆向工程成功的系统方法:
1. 控制器优势最大化:始终握持,从不碰撞
2. 舒适问题最小化:站立不动,物体飞来
3. 音频优势:VR隔绝外界,音频体验增强
4. 时间碎片化:3-4分钟的游戏窗口
5. 健身价值:意外但强大的附加功能
这个分析揭示了一个关键洞察:VR的成功应用不是"最好的"体验,而是"最匹配VR特性"的体验。
Carmack 对Meta内部效率的批评非常直接:
> "10亿美元这个数字让我感到胃不舒服,但这就是他们展示承诺的方式。"
他观察到的问题:
但他也承认大公司的优势:Meta对VR/AR的持续投入是Google等公司无法比拟的——后者会轻易取消项目。
Carmack 提出了一个具体的AGI里程碑定义:
> "如果我们达到一个点,你有一个学习障碍的幼儿——某种特殊需求的孩子——但仍然能与他们喜欢的电视节目和视频游戏互动,能够以类似人类的方式被训练和学习。到那时,你可以部署一支工程师、认知科学家、教育专家的军队。"
这个定义的关键要素:
1. 持续学习:不是一次性训练,而是终身学习
2. 任务无关:不是为特定任务优化
3. 可教育性:能够通过课程学习
4. 社会互动:能与人类进行有意义的互动
Carmack 对"快速起飞"(FOOM)的否定基于工程现实:
1. 硬件约束:AGI需要数千个GPU,这些不是可以随意获取的资源
2. 数据中心建设周期:需要数年
3. 网络带宽限制:即使有完美黑客能力,也无法超过TCP连接速率
4. 专用架构:AGI系统针对特定芯片和互连优化,不能随意迁移
> "即使你有完美的黑客能力,瞬间接管世界的想法根本不现实。"
Carmack 的核心假设是:AGI的代码量是数万行,而不是数百万行。
这个假设基于:
1. 大脑的简洁性:人类基因组只有约50MB,大脑结构相对简单
2. 关键洞察的数量:他认为少于6个关键洞察,每个都可以写在信封背面
3. 现有文献的宝藏:关键步骤的"前身"可能已经存在于现有文献中
Carmack 对意识和死亡的态度非常务实:
> "大多数关于意识的争论没有太多价值。意识是大脑运作时的一种感觉。"
关于死亡作为约束:
Carmack 对工作强度的辩护值得注意:
> "40小时工作周基本上是兼职工作。如果你真的投入其中,做你认为重要的事情,更多的工作会完成更多的事情。"
他提出的"小行星撞击"思想实验:
关键区分:
Carmack 承认自己从未经历过"倦怠":
> "我从来没有到过'我根本不在乎这个了,我不想再做这个了'的地步。"
他归因于:
1. 多项目灵活性:可以在不同任务间切换
2. 进度感:只要持续推动,就能突破困境
3. 乐观主义:相信问题可解
Carmack 对年轻人的核心建议是"武器化的好奇心":
> "你可以部署你的好奇心,去发现那些不立即显现的有用和有价值的东西。"
具体方法:
1. 深度理解:不只是表面能力,而是真正理解
2. 跨层认知:从硬件到软件到系统架构
3. 机会意识:准备工具,观察变化,寻找部署机会
| 特性 | Wolfenstein 3D | Doom | Quake |
|---|---|---|---|
| 渲染方式 | 射线投射 | BSP树+表面缓存 | 完整3D多边形 |
| 自由度 | 4 (移动+转向) | 4 (无俯仰/倾斜) | 6 (完整) |
| 地图结构 | 90度块状 | 任意角度+高度 | 完全3D |
| 网络 | 无 | 点对点 | 客户端-服务器 |
| 可编程性 | 无 | WAD文件替换 | QuakeC语言 |
| 设计空间 | 有限 | 图灵完备 | 完全开放 |
| 语言 | 开发效率 | 运行效率 | 学习曲线 | 适合场景 |
|---|---|---|---|---|
| Python | 极高 | 极低(循环慢1000倍) | 低 | AI/ML原型 |
| C++ | 中 | 高 | 高 | 系统编程 |
| C | 低 | 极高 | 中 | 底层/嵌入式 |
| JavaScript | 高 | 中 | 低 | Web/UI |
| Go | 高 | 高 | 低 | 服务端 |
| Lisp | 中 | 中 | 高 | 元编程 |
| 维度 | 初创公司 | 大公司(Meta/Google) |
|---|---|---|
| 决策速度 | 快 | 慢(跨职能会议) |
| 资源可用性 | 有限 | 几乎无限 |
| 风险承受 | 高 | 低(政治风险) |
| 人才密度 | 高(自选) | 高(但稀释) |
| 效率 | 高 | 低(1/10) |
| 持久性 | 低(易倒闭) | 高(持续投入) |
由于篇幅限制,以下主题未能在本次分析中深入:
1. Carmack的"逆向平方根"误解:他澄清这不是他的发明,但互联网无法被说服
2. .plan文件作为早期博客:从工作日志到哲学随笔的演变
3. 与John Romero的关系:从合作到分歧再到和解的完整叙事
4. Armadillo Aerospace的教训:为什么"有限承诺"导致失败
5. 核裂变的经济学:为什么燃料成本只占电力的2%
6. 自监督学习与AGI:Carmack对当前范式的批评
这些主题值得在未来的分析中单独探讨。