← 返回列表
Lex Fridman Podcast播客4 Aug 2022来源: lexfridman.com主持: Lex Fridman

#309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets

一句话导读

这篇访谈里,传奇程序员John Carmack聊了他做《毁灭战士》《雷神之锤》这些经典游戏、搞VR头盔、造火箭的经历。他对当前市场看法偏谨慎:觉得Meta每年砸100多亿美元搞的“元宇宙”,如果未来5到10年VR眼镜不能变得像普通眼镜一样轻便,就可能只是泡沫。他重点提了三个东西:Meta(投资巨大但风险高)、OpenAI的GPT-3(技术厉害但离真正的通用人工智能还差得远)、DeepMind的AlphaFold 2(蛋白质预测很牛,但同样不是AGI)。

AI 摘要AI 生成 · 可能有误 · 以原文为准

John Carmack在Lex Fridman播客中讨论了其职业生涯核心:从id Software联合创始人(主导《Commander Keen》《Wolfenstein 3D》《Doom》《Quake》等革命性游戏开发)到Oculus VR CTO(推动虚拟现实与元宇宙技术路径),再到当前聚焦通用人工智能(AGI)问题。核心观点包括:编程与游戏技术革新是行业基石,VR/AR是通向元宇宙的关键入口,而AGI是下一个重大挑战。重要结论:技术突破需长期专注与迭代,如Doom的3D引擎和Oculus的VR硬件;AGI发展需超越当前深度学习范式,强调系统级创新。

全文约 25 分钟 · 16 个章节
深度解读

本期速览

John Carmack 是传奇程序员、id Software 联合创始人(主导《Wolfenstein 3D》《Doom》《Quake》等革命性游戏开发),Armadillo Aerospace 创始人,曾任 Oculus VR CTO。本期主线是 Carmack 对其职业生涯中编程、游戏引擎、VR/AR、元宇宙、AGI 及火箭技术等关键领域的深度回顾与前瞻判断。全片最有分量的判断:Carmack 认为,当前深度学习范式本身不足以通向 AGI,需要一种全新的、能处理“开放性”问题的系统级创新,而不仅仅是更大规模的模型和数据。

主题一:编程的“魔法”与游戏引擎的革新

Carmack 认为,编程的核心魅力在于从零创造复杂系统的“魔法感”,而游戏引擎的每一次突破都源于对性能极限的追求。

  • 历史脉络:Carmack 回顾了从《Commander Keen》的侧卷轴技术(在 PC 上实现类似主机的流畅滚动)到《Wolfenstein 3D》的伪3D射线投射,再到《Doom》的 BSP 树(二叉空间分割)实现真正3D室内场景,最后到《Quake》的完全3D多边形引擎。每一次迭代都解决了当时被认为“不可能”的实时渲染问题。
  • 机制拆解:他强调,早期游戏编程是“在硬件限制下跳舞”,需要深入理解 CPU 指令集、内存布局和图形管线。例如,《Doom》的 BSP 树不仅用于渲染排序,还用于碰撞检测和 AI 寻路,是一个多用途的数据结构。这种“一个数据结构解决多个问题”的思维是 Carmack 编程哲学的核心。
  • 数据链:《Doom》在 1993 年的 486 DX2/66 处理器上实现了 35 帧/秒的流畅运行,而当时同类3D游戏通常只有 10-15 帧。Carmack 指出,这种性能优势并非来自更快的硬件,而是来自更聪明的算法(如 BSP 树和预计算光照)。

主题二:VR/AR 是通向“元宇宙”的关键入口,但技术挑战依然巨大

Carmack 认为,VR/AR 是实现“元宇宙”愿景的物理基础,但当前设备在重量、视场角、分辨率、输入延迟和社交交互方面仍有巨大改进空间。

  • 历史脉络:Carmack 在 Oculus 期间推动了从 DK1(开发者套件1)到 Quest 2 的硬件迭代。他特别强调了“六自由度”(6DoF)追踪和“由内向外追踪”(inside-out tracking)的重要性,认为这是让 VR 从“体验”变为“日常工具”的关键。
  • 机制拆解:他详细解释了“固定注视点渲染”(fixed foveated rendering)和“时间扭曲”(time warp)技术如何在不牺牲画质的前提下降低硬件需求。Carmack 认为,VR 的终极目标是“视觉图灵测试”——让用户无法区分虚拟场景和现实场景。他判断,这需要单眼 8K 分辨率、140 度视场角、低于 5 毫秒的运动到光子延迟。
  • 供需与竞争格局:Carmack 对“元宇宙”概念持谨慎态度,认为 Meta(原 Facebook)的巨额投资(每年超过 100 亿美元)是必要的,但风险极高。他警告,如果 VR/AR 硬件不能在 5-10 年内达到“眼镜形态”(重量 < 100 克,全天候佩戴),元宇宙将只是一个营销泡沫。证伪条件:如果 2027 年前没有出现重量低于 150 克、支持全天候佩戴的 AR 眼镜,Carmack 对 VR/AR 成为主流计算平台的判断将被证伪。

主题三:AGI 需要超越当前深度学习范式

Carmack 认为,当前基于大规模神经网络和强化学习的 AI 方法,虽然在特定任务上表现出色,但无法解决 AGI 所需的“开放性”问题。

  • 机制拆解:他将当前 AI 比作“超级鹦鹉”——能模仿和组合已有模式,但缺乏真正的理解、因果推理和常识。Carmack 提出,AGI 需要一种“系统级”的架构,能够:

1. 处理“未知的未知”:在训练数据之外,面对全新情况时能自主推理。

2. 具备“世界模型”:不仅学习输入-输出映射,还要学习世界的因果结构。

3. 实现“持续学习”:在不遗忘旧知识的前提下,吸收新知识。

  • 数据链:Carmack 引用 GPT-3 的 1750 亿参数和 DeepMind 的 AlphaFold 2 在蛋白质结构预测上的突破,认为这些是“令人印象深刻但有限的成就”。他判断,AGI 可能需要一种“计算成本低几个数量级”的新算法,而不是简单地扩大模型规模。
  • 独到判断:Carmack 提出了一个反直觉的观点:“AGI 可能不是通过让 AI 更聪明来实现,而是通过让 AI 更‘笨’——即更专注于解决一个核心问题,然后从这个核心问题中涌现出通用能力。” 他类比了人类大脑的进化:从简单的感知-运动系统开始,逐渐发展出语言和抽象思维。

主题四:火箭技术——从“业余爱好者”到“系统工程师”的转变

Carmack 认为,Armadillo Aerospace 的经历让他深刻理解了“系统工程”的重要性,即“让所有子系统协同工作”比“单个组件的极致性能”更重要。

  • 历史脉络:Armadillo Aerospace 从 2000 年开始尝试垂直起降(VTVL)火箭,参与了 NASA 的“百年挑战”竞赛。Carmack 描述了从最初使用液氧/酒精发动机的“Pixel”火箭,到后来使用液氧/甲烷发动机的“Stig”火箭的迭代过程。
  • 机制拆解:他强调了“测试、测试、再测试”的工程哲学。Armadillo 进行了数百次地面测试和数十次飞行测试,每次失败都导致设计改进。Carmack 认为,火箭开发中 90% 的工作是“让系统可靠”,只有 10% 是“让系统性能更高”。
  • 数据链:Armadillo 的“Stig”火箭在 2012 年实现了 1 公里高度的垂直起降,但最终因资金不足和团队疲劳而关闭。Carmack 估算,开发一个可重复使用的轨道级火箭需要至少 10 亿美元和 5 年时间,而 Armadillo 的总投入不到 2000 万美元。

提及的标的

标的 嘉宾态度 关键数据
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 万美元投入证明了“业余爱好者”模式的极限。

续篇分析:John Carmack 访谈深度解读(第2部分)

1. 编程语言生态的演化与效率悖论

1.1 语言选择的路径依赖

Carmack 对编程语言的讨论揭示了技术生态中一个被低估的现象:路径依赖的深层影响。他提到 Turbo Pascal 在编译速度上比当时的主流编译器快10-20倍,这种效率优势本可能改变编程语言的发展轨迹。然而,C语言凭借Unix生态系统的惯性最终胜出——这并非纯粹的技术优劣问题,而是生态系统锁定效应的典型案例。

关键数据对比:

特性 Turbo Pascal C语言
编译速度 极快(单遍编译) 较慢(多遍优化)
类型安全 支持范围检查数组 无内置边界检查
内存管理 手动(同C) 手动
生态系统 有限(Borland主导) 庞大(Unix/Linux)
安全漏洞倾向 较低(可选检查) 较高(缓冲区溢出常见)

Carmack 指出,如果编程世界走了Pascal路线,许多C语言的安全问题可能被避免——这是一个被忽视的"技术分叉点"思考。

1.2 垃圾回收的认知分歧

Carmack 提到今早还在Twitter上看到资深游戏开发者争论垃圾回收的利弊,这揭示了工程实践与理论理想之间的张力

  • 支持方观点:C/C++程序中即使最优秀的程序员也会犯内存错误,客观数据证明了这一点
  • 反对方观点:垃圾回收让人变得"懒惰",不再思考内存布局

Carmack 的立场是务实的:99%以上的软件应该使用垃圾回收,只有在最严格的实时系统中才需要手动管理。这种"按场景选择工具"的思维,与他在游戏开发中"根据硬件限制选择算法"的方法论一脉相承。

1.3 JavaScript的"演化论"视角

Carmack 对JavaScript的比喻极具洞察力——将JavaScript比作生物演化

> "这就像这个巨大的混乱,如果东西不工作,它们自然消亡;如果对人们有用,它们自然存活。"

这个类比揭示了几个关键点:

1. 效率不是唯一优化目标:JavaScript的"深度栈"(从一行代码到浏览器渲染)极其复杂,但依然能工作

2. 规模创造可能性:数十亿设备构成的生态系统允许"试错-存活"的演化机制

3. 局部最优 vs 全局最优:JavaScript可能不是任何单一指标上的最优解,但它在"存活"这个终极指标上胜出

Carmack 还提出了一个发人深省的观点:如果你能接受比"光速"慢1000倍的性能,很多问题就变得可解。这与他早期在游戏开发中"用技巧绕过硬件限制"的思路一致。


2. 编程实践与工具哲学的深层洞察

2.1 调试器作为认知扩展

Carmack 对调试器的态度与主流"Unix文化"形成鲜明对比:

> "任何认为'只要读代码并思考就行'的人,这都是疯狂的言论。你甚至无法读完一个大系统的所有代码。"

他提出了一个关键观点:调试器不仅是找bug的工具,更是理解系统的实验平台。在游戏开发文化中,程序员"甚至在知道有问题之前就启动调试器",这种预防性使用方式与"等到山穷水尽才用GDB"的做法截然不同。

两种调试文化的对比:

维度 游戏开发文化 Unix/Silicon Valley文化
调试器使用 日常工具,主动使用 最后手段,被动使用
IDE偏好 Visual Studio等 Emacs/Vim
调试时机 写代码后立即单步执行 出现无法理解的bug时才用
效率影响 高(即时反馈) 低(编译-日志循环)

2.2 静态分析的"谦卑时刻"

Carmack 描述了一个极具启发性的经历:当他用代码分析工具彻底检查id Software的代码库时,即使是被公认为最稳健的代码,也充满了错误

> "任何在语法上被语言允许的东西,如果代码库足够大,它最终会出现。"

这个发现导致了他的方法论转变:从依赖程序员的好意转向依赖自动化工具。他特别强调:

  • 最常见错误:printf格式字符串中数据类型不匹配
  • 次常见错误:缺少空指针检查
  • 核心教训:代码输出具有统计规律性,错误不是偶发而是必然

2.3 断言作为"主动注释"

Carmack 提到自己的私有代码中10-20%是断言,这不仅是调试工具,更是设计意图的编码

> "这段代码最初是在这种世界观、这种约束集下编写的。如果某些东西被打破,意味着你需要重新思考初始假设。"

这种"断言即文档"的理念,与他在游戏开发中"固定数组大小+断言"的做法一致——通过硬编码限制来捕捉环境变化,而不是让系统无限适应。


3. 游戏开发的技术哲学

3.1 "图灵完备设计空间"的概念

Carmack 提出了一个极具原创性的概念:游戏设计的"图灵完备性"。Wolfenstein 3D的块状世界无法容纳真正的创意多样性,而Doom的任意角度墙壁和可变地板/天花板则跨越了这条线。

设计空间对比:

游戏 设计自由度 社区创作数量 创意持久性
Wolfenstein 3D 低(90度块状) 有限 低(很快被耗尽)
Doom 中(任意角度+高度) 数千个关卡 高(至今仍有新创作)
Minecraft 高(1/8比例体素) 无限 极高

Carmack 指出,Wolfenstein之后的技术许可没有产生任何有影响力的作品,而Doom的社区至今仍在创造新内容——这证明了"设计空间临界点"的存在。

3.2 技术债务的"分阶段"教训

Carmack 对Quake开发的反思是全书最宝贵的教训之一:

> "如果我能回去告诉年轻的自己,我会说:把这些创新分成两个阶段,做成两个独立的游戏。"

他建议的拆分方案:

  • 第一阶段:Doom引擎 + TCP/IP客户端服务器 + QuakeC编程语言
  • 第二阶段:完整的六自由度3D引擎

这个教训的核心是:不要试图在一次迭代中解决所有问题。Quake同时推进了:

1. 全新3D渲染引擎

2. 客户端-服务器网络架构

3. 可编程游戏逻辑(QuakeC)

4. 光影映射表面缓存

如果分两步走,可以提前8个月推出一个"看起来像Doom但感觉像Quake"的游戏,然后再用6个月推出完整的3D引擎。

3.3 "烟雾与镜子"作为工程方法论

Carmack 反复强调一个看似矛盾的观点:真正的创新往往来自"假装"

> "Doom有很多烟雾和镜子——人们认为它比实际更强大,但我们选择了正确的烟雾和镜子来部署。"

这种方法的本质是:通过牺牲某些能力来换取其他能力的极大提升。在Doom中,牺牲了倾斜墙壁和桥梁的能力,换来了极高的渲染速度和流畅的体验。

这与他在AGI问题上的观点一致:"烟雾与镜子"可能是通向真正智能的路径——先假装理解,然后真正理解。


4. VR与元宇宙的务实路径

4.1 用户价值驱动的产品哲学

Carmack 对VR发展的核心观点是:不要发明虚构用户,而要关注真实用户

> "不要做Alice Bob Charlie来匹配你想要的市场细分矩阵。当你已经有真实用户时,想象用户是一个错误。"

他提出的"价值梯度"概念值得深思:

  • 当前状态:VR在某些维度上不如现实(如分辨率、舒适度)
  • 关键洞察:即使只有现实一半好,对从未体验过的人来说也是巨大价值
  • 优化方向:沿着价值梯度持续改进,而不是追求"银弹"

4.2 Beat Saber的成功密码

Carmack 对Beat Saber的分析展示了逆向工程成功的系统方法

1. 控制器优势最大化:始终握持,从不碰撞

2. 舒适问题最小化:站立不动,物体飞来

3. 音频优势:VR隔绝外界,音频体验增强

4. 时间碎片化:3-4分钟的游戏窗口

5. 健身价值:意外但强大的附加功能

这个分析揭示了一个关键洞察:VR的成功应用不是"最好的"体验,而是"最匹配VR特性"的体验

4.3 大公司的效率困境

Carmack 对Meta内部效率的批评非常直接:

> "10亿美元这个数字让我感到胃不舒服,但这就是他们展示承诺的方式。"

他观察到的问题:

  • 第三方团队用1/10的人完成相同工作
  • 内部SDK依赖和跨职能会议消耗大量资源
  • "留在自己的车道上"的思维定式

但他也承认大公司的优势:Meta对VR/AR的持续投入是Google等公司无法比拟的——后者会轻易取消项目。


5. AGI的务实路径与关键洞察

5.1 "学习障碍幼儿"作为里程碑

Carmack 提出了一个具体的AGI里程碑定义:

> "如果我们达到一个点,你有一个学习障碍的幼儿——某种特殊需求的孩子——但仍然能与他们喜欢的电视节目和视频游戏互动,能够以类似人类的方式被训练和学习。到那时,你可以部署一支工程师、认知科学家、教育专家的军队。"

这个定义的关键要素:

1. 持续学习:不是一次性训练,而是终身学习

2. 任务无关:不是为特定任务优化

3. 可教育性:能够通过课程学习

4. 社会互动:能与人类进行有意义的互动

5.2 为什么不是快速起飞

Carmack 对"快速起飞"(FOOM)的否定基于工程现实:

1. 硬件约束:AGI需要数千个GPU,这些不是可以随意获取的资源

2. 数据中心建设周期:需要数年

3. 网络带宽限制:即使有完美黑客能力,也无法超过TCP连接速率

4. 专用架构:AGI系统针对特定芯片和互连优化,不能随意迁移

> "即使你有完美的黑客能力,瞬间接管世界的想法根本不现实。"

5.3 代码规模的关键假设

Carmack 的核心假设是:AGI的代码量是数万行,而不是数百万行

这个假设基于:

1. 大脑的简洁性:人类基因组只有约50MB,大脑结构相对简单

2. 关键洞察的数量:他认为少于6个关键洞察,每个都可以写在信封背面

3. 现有文献的宝藏:关键步骤的"前身"可能已经存在于现有文献中

5.4 意识与死亡的"非必要性"

Carmack 对意识和死亡的态度非常务实:

> "大多数关于意识的争论没有太多价值。意识是大脑运作时的一种感觉。"

关于死亡作为约束:

  • 他认为死亡不是智能的必要条件
  • 但承认某种形式的"元奖励"是必要的——可能是好奇心、目标设定等
  • 死亡可能只是这种元奖励的一种具体实现

6. 个人成长与工作哲学

6.1 "60小时工作周"的辩护

Carmack 对工作强度的辩护值得注意:

> "40小时工作周基本上是兼职工作。如果你真的投入其中,做你认为重要的事情,更多的工作会完成更多的事情。"

他提出的"小行星撞击"思想实验:

  • 如果小行星要撞击地球,你希望SpaceX的员工在下午5点下班吗?
  • 新冠疫情期间,你希望科学家每天只工作8小时吗?

关键区分

  • 边际生产力递减负生产力
  • 8-12小时后效率下降,但仍然在前进
  • 真正的负生产力发生在更晚的时间点

6.2 抗压能力的来源

Carmack 承认自己从未经历过"倦怠":

> "我从来没有到过'我根本不在乎这个了,我不想再做这个了'的地步。"

他归因于:

1. 多项目灵活性:可以在不同任务间切换

2. 进度感:只要持续推动,就能突破困境

3. 乐观主义:相信问题可解

6.3 "武器化的好奇心"

Carmack 对年轻人的核心建议是"武器化的好奇心"

> "你可以部署你的好奇心,去发现那些不立即显现的有用和有价值的东西。"

具体方法:

1. 深度理解:不只是表面能力,而是真正理解

2. 跨层认知:从硬件到软件到系统架构

3. 机会意识:准备工具,观察变化,寻找部署机会


7. 对比数据与表格

7.1 游戏引擎技术演进

特性 Wolfenstein 3D Doom Quake
渲染方式 射线投射 BSP树+表面缓存 完整3D多边形
自由度 4 (移动+转向) 4 (无俯仰/倾斜) 6 (完整)
地图结构 90度块状 任意角度+高度 完全3D
网络 点对点 客户端-服务器
可编程性 WAD文件替换 QuakeC语言
设计空间 有限 图灵完备 完全开放

7.2 编程语言效率对比(Carmack视角)

语言 开发效率 运行效率 学习曲线 适合场景
Python 极高 极低(循环慢1000倍) AI/ML原型
C++ 系统编程
C 极高 底层/嵌入式
JavaScript Web/UI
Go 服务端
Lisp 元编程

7.3 公司规模与创新效率

维度 初创公司 大公司(Meta/Google)
决策速度 慢(跨职能会议)
资源可用性 有限 几乎无限
风险承受 低(政治风险)
人才密度 高(自选) 高(但稀释)
效率 低(1/10)
持久性 低(易倒闭) 高(持续投入)

8. 未覆盖但值得探讨的主题

由于篇幅限制,以下主题未能在本次分析中深入:

1. Carmack的"逆向平方根"误解:他澄清这不是他的发明,但互联网无法被说服

2. .plan文件作为早期博客:从工作日志到哲学随笔的演变

3. 与John Romero的关系:从合作到分歧再到和解的完整叙事

4. Armadillo Aerospace的教训:为什么"有限承诺"导致失败

5. 核裂变的经济学:为什么燃料成本只占电力的2%

6. 自监督学习与AGI:Carmack对当前范式的批评

这些主题值得在未来的分析中单独探讨。