最好的编程语言,就是你已经在用的那一个

原标题The best programming language is the one you already use

John Carmack 与 Lex Fridman 聊了编程语言、id Software、VR、火箭,以及为什么通用人工智能(AGI)可能只需要几万行代码。

JCJohn Carmack嘉宾
频道
Lex Fridman Podcast
发布
2022年8月4日
视频
5:14:50
阅读
27 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

在一场 5 个小时的对话里,这位《毁灭战士》和《雷神之锤》的程序员认为,混用多种语言的项目几乎总会失败;语法允许的任何写法,迟早都会出现在大型代码库里;软件真正的工作,是跨越多年把代码交给一代又一代的维护者。他从 Softdisk 每月出一款游戏的岁月讲起,经过《德军总部》、《毁灭战士》和《雷神之锤》,再到 Oculus,以及他的一个判断:通用智能还差几个能写在信封背面的洞见。

  1. 1被问到最好的语言是什么,Carmack 拒绝评出一个冠军。最好的语言就是你已经在用的那个,因为在一个项目里混用多种语言,几乎总会让人们彼此的代码互相隔绝。
  2. 2他用各种分析工具把 id 那个百万行规模的代码库彻底过了一遍,结论是:语言允许你写的任何东西,迟早都会出现。良好的意图无法替代自动化的护栏。
  3. 3他在 Unix 上的 .plan 文件,可以被 finger 命令导出,也会被抓取到早期的网站上。在“博客”这个名字出现之前好几年,它们就已经是博客:一份公开的工作日志,只要足够好奇,谁都能跟着看。
  4. 4《德军总部》落在了一条线的错误一侧。《毁灭战士》额外的自由度,让设计空间几乎达到图灵完备(Turing-complete),这也是为什么 30 年后人们仍在发布新地图。
  5. 5如果能给年轻时的自己在《雷神之锤》上提个建议,他会把真正的 3D、互联网多人游戏、QuakeC 和新的光照拆成两款游戏,而不是强迫所有人一次性用上奔腾处理器。
  6. 6他说,自己并不是疯子:他认为通用人工智能很可能只有几万行代码,而不是几百万行;而且,在今天的 GPU 与能像人一样行事的东西之间,还剩不到 6 个洞见,每一个都能写在信封背面。
全文

按章节阅读整理后的全文

只看原始文稿
01

最好的语言,就是你已经在用的那一个

John Carmack 的第一个程序并不是 Hello World。他在 Radio Shack 的一台 TRS-80 上敲下 10 PRINT "JOHN CARMACK",然后学会了 GOTO 10,让名字一直滚出屏幕。他当时和 Unix 文化没有任何接触;Kernighan 和 Ritchie 还没有把那套仪式标准化。真正吸引他的更简单,也更奇怪:一台机器会精确地执行你的指令,带着精灵许愿般的陷阱,所以你最好小心你要的是什么。

问他职业生涯里最好的语言是什么,他给出的是一堆限定条件,并没有评出冠军。他在机器学习工作中写了不少 Python,但他不是在 Python 里长大的,也不会在 Python 里做梦。他说,一个三层嵌套的 Python 循环,可能比正经的 GPU 张量运算慢上一千到一百万倍,这些数字大到总是迎面打在他脸上。他的第一反应,总是把工作改写成一个大向量,交给 C++ 库去吞下。

真正严肃的编程仍然是用 C++ 完成的,而且是一种偏 C 风格的 C++。他与现代模板元编程保持距离,因为他见过过度抽象造成的车祸。多年使用 Lisp 和 Haskell,改变了他写 C 的方式:少用那种随意的可变状态,免得自己都跟丢了。真正难的是:程序能否随着世界变化而弯曲,以及维护者像旋转门一样来来去去时,能否有人接得住。在这一点上,C 有一个被低估的优点:它足够简单,任何懂它的人都能直接跳进 OpenBSD 的内核,理解正在发生的事情,而无需先学一套私有方言。

他指出,Go 刚发布时曾被嘲笑为粗糙,但它和 C 一样,是因为同样的原因而流行起来。他的结论是:最好的语言,通常就是你当前正在用的那一个。在他见过的几乎每一个混合语言项目里,这种混合都是一个错误。在 Meta,这意味着 React 用 JavaScript,真正的工作用 C++,而 Android 那边是 Java,他说这是“可怕的东西”。他曾经对 Andrew Bosworth 说,希望公司只招 C++ 程序员。Bosworth 的回答是,他们找不到足够多的 C++ 程序员。

02

好的程序员服务用户价值,而非精巧的架构

什么样的人才算好的现代程序员?Carmack 在 Meta 技术项目管理(TPM)团队的一场讲座里,回答得很直接。一切都应该从用户价值出发。代码高尔夫是一种有趣的谜题,但它不该成为动机。你是在解决一个问题,或者提供一种娱乐,去替代别人生活中的另一件东西。如果你给人们带来的价值,超过了你和团队为此付出的成本,世界就变得更好了。如果你把钱一铲一铲地扔进木屑机,那你就不该对自己的架构感到那么得意。

对某一段特定指令序列感到自豪,允许有一点点多巴胺的刺激。最顶层的指标,是有人选择了你的产品,并且他们的生活变得更好了。在 Meta、谷歌、苹果、微软、亚马逊这些几乎拥有无限金钱的公司里,陷阱在于拒绝做选择。功能 A 和功能 B 不能仅仅因为两者看起来都不错,就都上线。没有严格的排序,就等于在回避一件事:告诉 B 团队“A 更重要”。

有数据的时候,就去听数据的。他见过一套花哨的遥测系统,结果自己引发了它本该诊断的性能退化。当你在做真正新颖的事情时,你不得不去猜,但 Meta 已经有足够多的 VR 用户,可以支撑别人想做的任何实验。别去虚构 Alice、Bob 和 Charlie,去和那些已经拥有头显的成千上万人谈一谈。一位热情的领导者,如果能把整个产品装在脑子里,是很有价值的。乔布斯的故事里,就有他在会上技术判断出错的桥段。独立的团队也一样有价值,它们能浮现出那个暗中操控的小圈子永远不会批准的成功。在 VR 里,没有人预料到的应用,才真正奏效。

03

每周 60 小时的高效工作,胜过 20 小时的英雄式爆发

Carmack 从来不是通宵编程的人。他说,他的大脑大约十二个小时之后就糊了。他几十年来做的,是每周工作 60 小时:每天 10 小时,每周 6 天,并尽量在这样的强度下保持效率。没有孩子的时候,他执行过一套循环式的作息,每天晚一个小时开始工作,有时下午两点才到,干到午夜之后。接送孩子上学把他拉回了常人的作息。他仍然在拿自己做实验。在德州的日落时分走 4 英里,再洗个澡,等于在一天里戳了个洞;于是他把步行挪到了早上,好让夜晚的时间保持完整。

他总是努力争取每晚睡够 8 个小时。只要懂得取舍,你一周也可以工作 100 个小时,同时睡够 8 个小时。他经常为此在网上和人争论。他认为,那些说超过 40 个小时就会效率下降的人,是误读了数据:8 个小时之后的边际产出,确实低于峰值,但你并不是真的在做得更少。开始把东西搞砸的那个点,不是 8 小时、10 小时或 12 小时。他设想过一个虚构的测试:一颗小行星正在撞来。你希望 SpaceX 那些正在造拦截器的人,到了五点就准时下班吗?

他从来没有感到过倦怠。他可以把目光转向另一个有趣的问题,然后玩得很开心。对他来说,能够努力工作,意味着手边随时有几种不同类型的工作可做:一篇需要高度专注一小时的研究论文,一些需要归档的笔记,几百行待写的代码,然后挑一件适合他大脑当前状态的去做。饮食从来不是一种宗教。作为一个身无分文的少年,他讨厌自己不能想买比萨就买比萨;等到他能买的时候,他就买了。在 id Software,每天都会送来一份比萨。送餐员认识他的名字,多年之后,Carmack 才知道他们从来没有涨过价。真正的仪式是健怡可乐:把罐子放下,拉开拉环,现在我们要认真干活了。至今他每天还是喝八九罐。

04

大系统装不进脑子,所以要靠实验

Carmack 说,游戏开发和硅谷是两种不同的文化,而硅谷对调试器的敌意,仍然让他百思不得其解。任何人如果认为你只要读读代码、想一想就行,那都是一种疯狂的说法。在一个大系统上,你连所有的代码都读不完。你必须做实验。加一行日志、重新编译、再运行,这是一种效率低得离谱的做法。他写 C 或 C++ 时,总是从调试器开始运行。写完一个函数之后,他的第一个动作就是设置断点,然后单步执行。别人说他们在脑子里就能做到这一点。“你的大脑是个有缺陷的解释器。”

id 的代码库以健壮著称。微软曾经告诉他们,Xbox 的崩溃次数少得离谱,大概都是硬件错误。后来 Carmack 把他能找到的每一个静态分析工具,都跑了一遍,整个代码库有两百万行左右。这很让人谦卑:复制粘贴却从没改过类型的代码,printf 格式字符串里的数据类型不对,缺失的空指针检查,还有他自己代码里的 bug,已经潜伏了一年,像水雷一样等着有人踩上去。他的结论是:语法上允许的任何东西,在足够大的代码库里迟早都会出现。良好的意图挡不住它。你需要自动化工具。

他喜欢把 assert 当作会动的注释,只要世界和你预期的一样,它就什么也不做。他常常更喜欢固定大小的数组加上对上限的 assert,而不是一个无限增长的容器。如果实际用量比你想象的高出十倍,你希望被告知,而不是默默承受一个悄无声息的平方级减速。在通信方面,早期的 id 用的是 NeXT 工作站。Unix 有一个 .plan 文件,finger 命令可以把它倒给互联网上的任何人。Carmack 开始在自己的 .plan 里记待办清单,做完一项就标上星号,然后再加上笔记和短文。当时多数《毁灭战士》玩家没有 Unix 机器,于是有网站把这些文件抓了下来。达拉斯的二十几位开发者也用类似的方式发布内容,那是在“博客”这个名字出现的好几年之前。

05

每月出一款游戏,是 id Software 的“汉堡时期”

在加入 id 之前,Carmack 在堪萨斯城做过一个穷困潦倒的外包程序员,在房租和杂货之间挣扎。给他派活最多的公司是 Softdisk Publishing,它的商业模式现在听起来很怪:一种按月订阅的软件。你付费,他们就寄来一张盘,里面是随机挑的程序。他会写一个小游戏,卖 300 到 500 美元,同一款游戏还要从 Apple II 移植到 IIGS,再到 IBM PC,才能勉强维持生计。Jay Wilbur 和 Tom Hall 一直劝他搬到什里夫波特(Shreveport)。他一直不肯,直到遇到两位程序员,他们懂的酷玩意儿比他还多:John Romero 和 Lane Roth。Romero 曾经在 Origin Systems 工作过。对他来说,编程不再只是一堆过时书籍的图书馆。

Softdisk 又成立了 Gamer's Edge,这是一项 PC 游戏订阅服务,每个月都要交出一款全新的游戏,从头到尾,不能拖延。Romero 曾经训练自己,为字母表上的每个字母做一款游戏。Carmack 把这段时光比作披头士在汉堡的那些岁月:那些被遗忘的演出,练出了他们的手。他说,资源限制出人意料地重要。给一个团队无限的时间和金钱,不一定能做出更好的东西。需要,依然是发明之母。与此同时,Apogee 的 Scott Miller 用同一个回信地址给 Romero 寄假的粉丝来信,想把他们拉进共享软件的阵营。他们以为他在撒谎,关于钱的部分。他没有撒谎。

PC 做不到、主机却能做到的,是一个巨大的滚动世界。重画整个屏幕,只能得到每秒 5 帧。Carmack 的第一个技巧,自适应瓦片刷新(adaptive tile refresh),会比较当前帧和下一帧,只重画变化的瓦片。在一个类似马里奥的关卡里,天空和重复的砖块,通常只有大约 10% 会变化。最坏的情况是棋盘格:每个瓦片都会变,于是又回到了每秒 5 帧。设计师不得不把关卡画得在视觉上朴素一些。他人生中第一次记忆深刻的通宵,是和 Tom Hall 一起克隆《超级马力欧兄弟》的开场关卡,把角色换成了他们自己的 Dangerous Dave。他们在桌上给 Romero 和 Wilbur 留了一张盘。到了下午,屋里的人就已经决定要开公司了。

06

硬件绕了一圈回来,无限滚动就这样跑通了

《指挥官基恩》是 Tom Hall 的宝贝:一个孩子,拿着电枪,还有自制的火箭,在瓦片刷新的限制下,被做成了一个看起来像马里奥的样子。他们用大约三个月发布了共享软件三部曲,同时还在做每月的 Softdisk 游戏,代码复用的方式后来还惹上了法律麻烦。《指挥官基恩》一上市,就做到了 Apogee 上一款热门游戏三倍的生意,每个月大约 3 万美元。也就在这几个月里,Carmack 找到了一种更好的滚动方式。EGA 显卡有 256 KB,分成四个位面,每个位面 64K。你可以告诉显卡,从这个窗口中的任意位置开始扫描输出。大家都以为,只能在一个 2×2 屏的范围内平移,再远就不行了。

他问,如果你从 64K 块的末尾开始,会发生什么。结果是它会回绕。你可以无限滚动,而且只需要画出新露出来的那一条瓦片带。没有了那些朴素的天空,也没有了设计师的自我克制。账单是后来才来的。配备 512 KB 或 1 MB 的 Super VGA 显卡则不会回绕,它们会滚进真正未经初始化的内存里。在那些机器上,游戏会每隔一会儿卡顿一下。依赖一个没有人打算支持的硬件行为,你就得接受兼容性的代价。Carmack 把它称为非常规技术的双刃剑。

Steven Levy 的《Hackers》对他影响很大。Carmack 想活在书的第三部分里,也就是那些游戏黑客的世界。在他看来,这种伦理是:信息不是零和的,你可以为别人了不起的东西感到快乐。id 后来公开了它几部开创性作品的源代码。公司内部的程序员大多理解这一点;更广阔的行业,以及许多模组制作者,则更有占有欲,更像是守着署名的艺术家。他不打算为谁先发明而争。他在街机厅玩过 Battlezone 和《星球大战》,他是站在那些肩膀上的。常被归到他名下的平方根倒数(inverse-square-root)技巧,其实并非出自他手。他说,互联网是说服不了的。

07

从内部看同一款 2D 游戏,一位美术师差点从椅子上摔下来

《德军总部 3D》复用了早先一款俯视角游戏《Catacombs》里的敌人 AI、门逻辑和拾取物,那是一款类似 Gauntlet 的地牢爬行游戏。Hover Tank、Catacombs 3D、Keen 和《德军总部》甚至共用同一个地图编辑器。改动很小,却彻底改变了一切:把镜头从上帝视角移到了角色的眼睛里。Carmack 称之为他做过的最纯粹的 A/B 测试。美术师 Adrian Carmack 画了一个怪物,拿到钥匙,走到墙前。墙播放了一段小小的消失动画,而怪物就站在那里。他差点从椅子上摔下来。游戏从来没有做到过这一点。你可以为你的小角色高兴或难过,但你不是在里面。大脑里某个爬行动物般的部分喊了一声:“我靠!”

《Catacombs 3D》比计划晚了六周才发布,而且在边缘朝向的墙上仍然有故障。为了做《德军总部》,Carmack 放弃了那个半成品的区段渲染器,改用只有少量汇编的光线投射(ray casting)。每帧要发射 320 次,每条光线从玩家出发,一直走到撞上墙为止。在紧凑的牢房里,这很便宜,只需要三到四个瓦片。在 64×64 的地图上,一个空房间就可能迫使光线走几十步,帧率随之崩溃。角色没有 3D 模型,只有八个纸板式的视图,按比例缩放。一个通用的缩放器,恰恰会在怪物占满屏幕时最慢,而那正是你需要做出反应的时候。他写了一个程序,用来生成一百个小程序,每一个都硬编码为在某个高度绘制图像。在最大缩放时,它只需要一次读取和三四次写入,比直接复制还快。这个想法来自 Apple II 的精灵工作:预先移位的飞船、编译过的形状,把数据变成代码。

08

《毁灭战士》越过了《德军总部》永远到不了的设计界线

在《德军总部》、《指挥官基恩》和《命运之矛》之后,Carmack 看到了一堵很难翻过的创作之墙。地球上的每位美术师,都无法在《德军总部》那种方块网格里做出杰作;他们能做的,只是做出更多《德军总部》。《毁灭战士》增加了可变的地板和天花板高度、任意的墙面角度,以及更丰富的光照。他说,这些增量把设计空间推到了接近图灵完备的程度。人们至今仍在发布新的《毁灭战士》地图。《我的世界》从另一个方向说明了同一个道理:把方块缩小到足够小,盒子就不再显得太小。跨过那道门槛,比渲染器有多花哨重要得多。

技术的骨架是二叉空间分割树(BSP tree)。Carmack 是从 Foley 和 van Dam 那里学来的,并在把《德军总部》移植到超级任天堂的过程中熟悉了它。BSP 按墙壁一面一面地切分空间,直到任何视点都有一个确定的由前到后的顺序。先画最近的,屏幕画满了就停止。任意角度带来了浮点精度问题:两条斜线相交于一个机器无法精确表示的有理数,于是顶点被吸附,接缝就裂开了。他花了不少时间去追求精确的有理数,结果它们会爆炸。《毁灭战士》社区至今还有一个俗称,指那种残留的情况,叫镜厅:表面绘制失败时,会出现两帧的乱码。Ken Silverman 在《毁灭公爵 3D》中用的 Build 引擎,完全没有这些问题。正确的路从来不止一条。

《毁灭战士》也是 id 第一款设计成无需破解可执行文件就能修改的游戏。WAD 和 PWAD 文件把新数据叠加在干净的游戏副本之上。它仍然不是一个完全通用的 3D 引擎。你不能建造金字塔,也不能在一条通道上方架一座桥。你不能抬头看。是四个自由度,而不是六个。这份未完成的清单,正是《雷神之锤》想一口吞下的:真正的六自由度渲染、新的表面缓存光照模型、让游戏逻辑变成数据的 QuakeC,以及客户端与服务器结构的互联网联机,取代点对点。如果能回到过去,他会先把 TCP/IP 和脚本语言加到《毁灭战士》的渲染器上,提前八个月推出一款看起来像《毁灭战士》、玩起来像《雷神之锤》的游戏,并给奔腾级的硬件一些时间成为主流。486 也能跑《雷神之锤》,只是那时候的时机并不好。

09

《雷神之锤》是他第一次全力以赴,却仍差了一点

《雷神之锤》是第一个让 Carmack 感到自己已经全力以赴、但在时间上仍然差了一点点的项目。公司运转得很火热。QuakeC 教会了一代游戏程序员,但他说,它没什么值得拿回家炫耀的。你不会爱上一门语言的 BNF。你爱上它,是因为你可以打开霰弹枪,把伤害设成 200,然后咧着嘴笑着走来走去。他后来认为,用 C 解释器做宿主会更明智。Michael Abrash 曾在 Softdisk 时期珍藏他在《Dr. Dobb's Journal》上的专栏,后来他离开了微软的高级职位,去写最内层的汇编循环。工作方式很别扭,但有用:Carmack 会先粗略地写出一个区段光栅化器;Abrash 会花一个月把它打磨得漂漂亮亮;然后 Carmack 会发明一种区段缓冲,剔除掉 30% 到 40% 的像素,接口就得重写。他知道这让 Abrash 很累。但从全局看,这是对的。

他认为,他真正的优势在于看到这样一个角度:放弃某样你以为必需的东西,就能换来大得多的收益。了解整个技术栈,包括芯片、编译器、架构和人,才能察觉这种权衡。《毁灭战士》是一场烟雾与镜子的把戏,人们误以为那是更通用的引擎。他们挑对了镜子。那几年,他把 Romero 赶出了公司。他现在把这个决定归因于一种天真的平等合伙结构,以及一份旨在把外人挡在门外的买卖协议。那时他二十多岁,气恼于不是每个人都愿意永远保持他那种拼命的节奏。Romero 很快站稳了脚跟,为 Ion Storm 从 Eidos 拿到了大约 2000 万美元,后来又很早就投身手机游戏。他们至今仍然保持联系。看到 Tom Hall 推出 VR 角色扮演游戏 Demeo,Carmack 很高兴,那正是他们过去每个周日玩的《龙与地下城》,而 Carmack 担任地下城主。

10

《节奏光剑》赢在藏住了 VR 的每一个弱点

Carmack 希望元宇宙能以网络真正赢得胜利的方式被构建出来:先做出人们喜爱的东西,然后再扩展它。真正证明这件事可行的,是《我的世界》和《堡垒之夜》,而 VRML 没有。像 Horizon Worlds 这样以功能为先的世界,比一款慢慢长出社交持久性的好游戏更难让人喜爱。历史会记下那些“第一”,但他认为,这些名字很难准确地描绘出实际发生的事情,那是一堆相互重叠的 S 曲线。在他的叙述里,现代 VR 时代始于他在 E3 上用 Rift 原型机演示的《毁灭战士 3》。大家都以为,第一人称射击游戏和 VR 是天作之合;但它们的舒适性问题却是最糟的。最受欢迎的应用,结果成了没有人预料到的《节奏光剑》。

事后看来,工程上的道理很明显。他之前低估了控制器。手柄加上头部追踪感觉很棒,直到你试图捡起一副眼镜:悬停,按下抓取键,看着它们“啪”地一下贴进你的手里。这个动作一直在提醒你,这个世界是假的。《节奏光剑》从来不会让你松开一个实体手柄。光剑本来就是用来切开东西的,所以不存在漏掉碰撞的问题。音乐把你隔离出来,并用声音重建了空间,这正是 VR 天生的长处。每次游玩只有三到四分钟,这既符合头显的舒适度、移动设备的电量,也符合你站着不动的事实。健身是意外的好处。他那句广为流传、被解读为反乌托邦的口号是:头显里的世界应该比外面的更好。不是每个人都能拥有 Richard Branson 的私人小岛,但每个人都能拥有一座 VR 里的岛。

Quest 上的 Workrooms 在语音延迟上已经胜过 Zoom,并且给了人一点临场感的暗示。产品仍然比应有的操作步骤多出五倍的点击。要取代 Zoom,意味着每个人都得拥有一台头显,这就要求便宜、轻便。这是一个良性循环,他一直比功能繁多的 PC 头显更偏爱它。Reality Labs 每年 100 亿美元的花费,仍然让他感到反胃,尽管 Quest 2 大致就是他十年前想要的那种一体机:独立运行、由内向外追踪、4K、能连接 PC。小团队以十分之一的人手做着类似的工作。他不相信一家大公司的效率,会与它可能达到的水平相差不超过两到四倍。他珍视的,是数千人中那少数愿意钻进内核、发行版或固件镜像里,把一件事做对的人。

11

通用人工智能可能只需几万行代码和不到 6 个洞见

Carmack 和 Elon Musk 年龄几乎相同,早年读过类似的计算机书籍,也都习惯于揭穿同样的浪费。他是在 Armadillo Aerospace 起步时认识马斯克的,两人谈的是推进剂和飞行计算机。多年之后,他意识到自己的资源,大致相当于马斯克全力投入 SpaceX 和特斯拉时所拥有的,那是一场可能让他变成“富豪警示故事”的赌注。Carmack 把一笔有限的“John 的疯钱”放在一个盒子里,白天则做软件的工作。他下了一万美元的赌注,赌 2030 年前不会有人类登上火星,但基础设施可能会先到。一次英特尔的晚宴上,那屋子里的聪明人一旦真正要拿出真金白银,就都打了退堂鼓。2030 年之前实现自动驾驶则是另一场赌注,他是和 Jeff Atwood 一起押的,因为推动它的有十几家公司,靠的是多人合力,而非某一个人的热情。他认为,核裂变现在的样子,像是 SpaceX 出现之前的航天:物理学并没有变得更难。燃料只占电价的约 2%。一座效率只有五分之一、但成本便宜十倍的电站,仍然会是一项突破。核聚变需要大量荒谬的机械,才能把东西加热到高温;裂变则是两块石头,自己就会变热。

在 VR 之后,他要在便宜的裂变与 AGI 之间做选择。裂变意味着政治、一支规模不小的团队,以及他并不喜欢的跨职能协作。AGI 则看起来像是一个人这辈子可能遇到的杠杆最高的时刻。他说,自己并不是疯子:他认为代码很可能是几万行,而不是几百万行,这是一个人能写出来的东西,不像浏览器或操作系统。剩下的未知,很可能都很简单。他的赌注是,关键洞见不到六个,每一个都能写在信封背面。再加上大规模的 GPU,以及大家都已经拥有的数据,这就可能造出一个行为像活物的东西。2022 年,他给出的判断是 2030 年出现“生命迹象”的概率为 50%。在与 Fridman 的对话里,他把这个数字往上提到了 55% 或 60%。他怀疑,前人的成果其实早已埋在文献里,包括 1990 年代那些聪明的工作,它们在只有 12 个神经元的时候就被放弃了。

“生命迹象”指的是一个有学习障碍的幼儿:一个能够投入喜欢的节目和游戏,并以某种可辨认的人类方式学习的系统。到了那个时候,你就可以部署工程师、认知科学家和教育者,而且可以做回滚和 A/B 测试,那是任何真实的童年都不允许的。他不认为达到那一步需要机器人身体。模拟世界一直是他的事业;把自己绑在真实世界的物理上,就像脚踝上绑了个重物。航天让他明白,现实很难搞。他确实希望它能实时运行,也就是 Zoom 式的会议,而不是打字的机器人,因为有状态的对话,会比一具人形躯体更快地说服人,尽管他其实并不太在意说服别人。在他看来,快速起飞并不可信。一个人类水平的系统,启动时需要成千上万块 GPU,你不能随便租到这些。数据中心需要数年时间建成。无论多聪明,你都无法以超过某个速率打开 TCP 连接,而且一个为某块芯片和互连量身定做的模型,也不会直接跳上公网。那个“魔法”也许装得进一个 U 盘,可偷它的人,还是得去建数据中心,还得去经历一段童年。

他认为,大多数关于意识的争论都没什么价值。他更倾向于一种 Pandemonium 式的图景:稀疏、略带随机的记忆碎片漂浮着,直到共识浮现成为一个念头。这种随机性就是想象。把死亡当作期限,是个有趣的角度,但大概并非承重的部分;我们会设定奖励信号,那六个洞见中的一个,也许就是主奖励必须是什么。伦理与安全的争论,可以等到那个幼儿出现之后再说。他曾试过维多利亚时代绅士科学家的路子,后来注意到,他租用云端 GPU 并不是出于什么站得住脚的心理原因。他买了一台 25 万美元的 DGX,好让闲置的风扇来嘲笑他;然后他接受了投资人的钱,因为他觉得自己对别人的钱负有责任。Andrej Karpathy 的斯坦福课程和黑客指南式的文章,是 Carmack 早期学习阶段的一部分。他是这个领域里“程序员中的程序员”,在他邀请过的一百多人里,正是他请来一起工作的那一位。

12

你无法知道一切,但应当让自己相信,任何东西都能弄懂

Carmack 在柔术和道服格斗方面是一个称职的业余选手,从来不是明星,三十多岁时常常是垫子上年纪最大的那个。这让他结识了一些和游戏毫无关系的人;偶尔有人会说:“你就是做《毁灭战士》的那个人吧。”他大约四十岁时因为一根断裂的肋骨而退役,此后一直在争论要不要回去,也曾被 Carlos Machado 在 Joe Rogan 的节目之后提议加入的一个私人小俱乐部所吸引。他和 Fridman 都认同,训练带来的更深层的礼物,是被打压得谦卑。练习的人没有谁会觉得自己是世界第一,因为每个人都会拍地认输。这份教训也能带到工作里,只不过在工作里,让人谦卑要难得多。

他受邀在一所大学发表毕业演讲,那是他只读了两个学期就退学的学校。他告诉台下的人,这条路并不适合所有人。深度,也就是把一个系统从里到外都了解透彻,以便看清哪些低效可以绕开,是一种小众的偏好。大多数工程师需要做好分配到手里的那一份工作,可靠地完成,让别人能够依赖他们。对于那些想深入各个层次的人来说,这个世界从来没有比现在更好。拥抱苦功。准备一套宽广的工具,然后留意现在的做法与可能之间的那个缺口。你无法知道一切。但你应当让自己相信,任何特定的东西你都能弄懂,因为它是人做出来的。他称之为“武器化的好奇心”。他认为,他本可以像被游戏吸引一样,被操作系统或数据库吸引进去。

他几乎从不去想衰老、死亡或遗产。有限性唯一咬到他的地方,是他选择的问题有多大。裂变和 AGI 都是可能影响世界很大一部分的重拳,他估计自己大概还剩一两次全力挥棒的机会。之后,就是把写代码当作娱乐性质的复古编程,老人在代码的世界里打理花园。他并不为生命的意义担忧。人类是生物,带着进化碰巧装上的各种驱动力。他发现,那些不肯正视眼前事物的人,往往效率较低。所谓的魔法,就是梯度下降:世界上最聪明的人花了几十年,拒绝相信,正是微小的局部步骤,而不是宏大的愿景,才能得到最好的答案。

同频道的其他文章

3:36:56EN → 简体中文
Lex Fridman· 2026年9月16日播客精神病学至今没有属于自己的青霉素主持 Lex Fridman历史学家 Andrew Scull 与 Lex Fridman 谈到,这门学科对症状有所缓解,但没有哪一种重大精神疾病真正被根治;过度自信的时候,代价要由病人来扛。Mental HealthPublic HealthNeuroscience
5:15:51EN → 简体中文
Lex Fridman· 2026年8月26日播客 · 2 人对谈DHH 没有亲手写一行 Omarchy Quattro 的代码嘉宾 DHH · 主持 Lex Fridman与 Lex Fridman 一次充满怀疑的对话过去十三个月后,Rails 的创造者讲述了 Opus 4.5、一群编码智能体(Agent)和一个一分钟的 Linux 安装器,如何结束了他一凿一凿手写 Ruby 的时代。编程智能体Vibe Coding智能体工程+3
3:12:58EN → 简体中文
Lex Fridman· 2026年8月12日播客 · 2 人对谈一个冷水澡,二十位冠军:Khabib Nurmagomedov 是如何炼成的嘉宾 Khabib Nurmagomedov · 主持 Lex Fridman在马哈奇卡拉的一间学校体育馆里,七十个人共用一个淋浴间,而且只有冷水。Martial ArtsCombat SportsCoaching+3
3:46:18EN → 简体中文
Lex Fridman· 2026年7月28日播客 · 2 人对谈抽掉奴隶制,就没有美国内战嘉宾 Gary Gallagher · 主持 Lex Fridman1860 年,美国奴隶主名下的奴隶价值,超过了全美所有铁路和工厂的总和。Political PhilosophyLeadershipHistory
3:51:47EN → 简体中文
Lex Fridman· 2026年6月30日播客 · 2 人对谈46% 的皇帝被暴力推翻,帝国照样延续下来嘉宾 Anthony Kaldellis · 主持 Lex Fridman历史学家 Anthony Kaldellis 与 Lex Fridman 一起走过 2200 年的罗马史,并主张我们所说的拜占庭,其实就是罗马本身。Political PhilosophyGeopoliticsLeadership
2:53:42EN → 简体中文
Lex Fridman· 2026年5月29日播客 · 2 人对谈月亮一直在下落,却总也落不到地球上嘉宾 Biggest Mysteries in Physics · 主持 Lex Fridman费米实验室(Fermilab)物理学家 Don Lincoln 在与 Lex Fridman 的对谈中说,物理学的历史就是一部统一的历史;反物质(antimatter)、暗能量(dark energy)和万物理论(theory of everything)依然远在我们能做的实验之外。Quantum MechanicsScience CommunicationPhilosophy of Science