📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309

Lex Fridman5:14:51

Transcription

我记得他画出这些角色时的反应,他慢慢地走动,而人们对 3D 导航没有任何经验,一切仍然是键盘操作。那时我们甚至没有设置鼠标。但慢慢地移动,向上,捡起一把钥匙,走到一堵墙边,墙壁以一个小动画消失,然后一个怪物就出现在那里。他几乎从椅子上摔了下来。感觉就像,“啊”。而游戏那时根本不会这样做。游戏是上帝视角。你对你的小角色有点投入。当事情发生时,你可能会高兴或悲伤,但你就是得不到那种惊吓的反应。

——你没有置身于你的游戏中。

——你大脑深处,某种爬行动物的大脑在说,“哦,该死,刚才发生了什么事。”而那正是早期的一个关键时刻,让人觉得,“是的,这将带来改变。这将是强大的,而且很重要。”

——接下来是与约翰·卡马克的一次对话,他被广泛认为是历史上最伟大的程序员之一。他是 id Software 的联合创始人,也是多款革命性游戏的首席程序员,这些游戏在技术、体验和游戏在我们社会中的角色方面都带来了变革,包括《指挥官基恩》、《德军总部 3D》、《毁灭战士》和《雷神之锤》。他多年来担任 Oculus VR 的首席技术官,帮助创造了通往虚拟世界的门户,并定义了 Meta 的元宇宙技术路径。现在,他已将部分注意力转向了通用人工智能问题。这是本播客中最长的一次对话,超过五个小时,但我仍然可以和约翰聊很多很多次,我们希望如此。这是“Lex Fridman 播客”。要支持它,请查看描述中的赞助商。现在,亲爱的朋友们,这是约翰·卡马克。

你写的第一段程序是什么?你还记得吗?

——是的,我记得。我记得在一家无线电商店里,我接触到 TRS 80 电脑,并学到了足够多的知识,能够写出“10 PRINT John Carmack”。有趣的是,当然,卡内基和里奇对“Hello World”进行了标准化,使其成为你在每种计算机编程语言和每台计算机上做的第一件事。但由于我没有接触过 Unix 文化或任何其他标准化事物,我只是觉得,“好吧,我要说什么呢?”“我要说我的名字,然后你就学会了如何‘转到 10 并让它在屏幕上滚动’。”那绝对是我在电脑上做的第一件事。

——我可以问你一些编程建议吗?我一开始总是被告知不允许使用 Go-to 语句。那是非常糟糕的编程。这是正确的还是不正确的?在代码中跳转?我们可以看看 Go-to 语句的哲学和技术方面,它看起来很方便,但据说它是一种糟糕的编程方式?

——嗯,当然,在早期 BASIC 编程语言中,你没有适当的循环。你没有 for while 和 repeats,那是 Pascal 的领域,当时人们普遍可以接触到。所以,你别无选择,只能使用 Go-tos。当你编写当时的大型程序时,也就是一千行的 BASIC 程序,这是一个非常大的程序,它们确实会变得混乱。你没有好的编辑器或代码探索工具,所以你会在一个地方修复东西,添加一个小补丁。结构化编程通常有助于理解,但 go-tos 并非有毒。有时它们是正确的做法。通常是因为缺少一种语言特性,比如嵌套中断之类的,有时使用 go-to 清理或 go-to 错误比使用多个标志、多个 if 语句散布在各处要好。但这种情况很少见。我的意思是,如果你现在遍历我所有的代码,我认为我目前的代码库中不会有任何 go-to,但在一个大型游戏引擎的技术底层中,你可能会在几个地方看到一些 go-tos。

——是的,基础设施之上,越接近机器码,你越会看到更多的 go-tos,越会看到这些“技巧”,因为低级编程语言提供的功能集是有限的。所以,打印 John Carmack,第一次,如果我们能谈谈你爱上编程的时候。你说这真的很特别。

——这确实是一见钟情的事情,从我理解什么是计算机开始,我就一直如此。我记得翻阅旧的百科全书,看到 IBM 大型机的黑白照片,以及真正的磁带机。对于现在的人来说,很难理解当时的信息收集世界是什么样的,我会在图书馆里找到几本关于计算机的书,它们会非常过时,即使在那时,信息也不多,但我会抓住我能找到的一切并吞噬一切。每当《时代》或《新闻周刊》有关于计算机的文章时,我都会用剪刀剪下来,然后放在某个地方。对我来说,这感觉就像一种神奇的事情,计算机只会完全按照你告诉它的去做。我的意思是,这里有点像“猴子的愿望”的寓意,你最好非常非常小心你告诉它做什么。但它不会顶嘴,不会有不同的观点。它会执行你告诉它的。如果你有正确的命令,你就可以让它做一些相当神奇的事情。

——那么你一开始写的是什么程序呢?除了打印 John Carmack。

——所以,我记得在学习过程中,你发现一开始你只是在学习如何做最基本的事情。我记得像无线电商店委托制作的超人漫画,超人失去了一些超能力,孩子们必须使用无线电商店的 TRS 80 电脑进行计算来帮助他完成英雄壮举。我发现了一些类似的东西,然后找了几本 BASIC 书来学习。而且,那时它非常珍贵。我有几本书教我一些重要的事情。我有一本书可以让我学一点汇编语言,还有几本关于 BASIC 的书,以及一些我能从图书馆找到的东西。但早期我的目标几乎总是制作各种游戏。我喜欢街机游戏和早期的 Atari 2600 游戏,能够在电脑上自己做一些事情是我非常渴望的。这是一个完整的旅程,如果你学习普通的 BASIC,你就无法进行任何动作游戏。你可以写一个冒险游戏,你可以写一些你说“你在这里做什么?”“我拿剑,攻击,巨魔”之类的话。这可以在 BASIC 的上下文中完成,但要制作具有移动图形的东西,那只能是你能做到的最有限的事情。你也许可以用低分辨率图形来制作《打砖块》或《乒乓球》。事实上,我早期最喜欢的一个主要技术技巧是在 Apple II 电脑上。它们有一种叫做低分辨率图形的模式,当然当时所有的图形都是低分辨率的,但这是常规的低分辨率图形。它通常是一个 40x40 像素的网格,但它可以有 16 种不同的颜色。我想制作一个类似街机游戏《先驱者》的滚动游戏。我想让它垂直向上滚动,你可以移动一个小飞船。你可以在 BASIC 中做到这一点,但你不可能重绘整个屏幕。我记得当时,对我来说,这就像一个头脑风暴,我足够了解硬件是如何控制的,文本屏幕和低分辨率图形屏幕基本上是同一件事。而所有这些电脑都可以相当流畅地滚动它们的文本屏幕。你可以做一个列表,它会滚动东西。我发现我可以调整一些我几乎不理解的东西,把它变成图形模式,然后我可以绘制图形,然后我可以在屏幕底部做一个换行符,然后系统就会滚动所有东西,使用我当时不知道如何编写的汇编语言例程。所以,这就像第一个伟大的技巧,后来在我的职业生涯中,它在很多不同的事情上都有类似的类比。所以,我发现我可以绘制一个屏幕,我可以在底部换行,我们把它向上滚动一次,我可以在底部绘制几行东西。这就是我第一次滚动屏幕的方式,这很有趣,因为它在 id Software 时期也发挥了重要作用。

——所以,进行高效的绘图,你不需要绘制整个屏幕,而是从底部绘制,使用硬件为文本输出设计的那个东西。

——是的。直到最近,游戏设计在很大程度上受到计算机实际能做什么的限制,很容易说“好吧,我想滚动屏幕”。你只需要稍微偏移一点重绘整个屏幕。现在这很好。计算机速度快得离谱。但直到大约十年前,人们都想做很多事情,但如果他们知道足够的编程来做到这一点,它就会太慢而无法获得良好的体验,要么就是慢得离谱,要么就是慢到体验起来不有趣。所以,我早期几十年的编程工作很大程度上是弄清楚如何做一些每个人都知道他们想要发生的事情。它只需要发生的速度比通常的直接方法快两到十倍。现在情况不同了,因为在这一点上,你可以用最天真的方式做很多事情,而且仍然有效。你几乎没有创造性的限制或在那个层面进行优化的动力。这有很多优点和缺点。但我通常不会像愤怒的老人那样,挥舞着拳头对着天空说,在我那个时代,程序员必须做真正的编程。令人惊叹的是,你现在可以随便想出一个主意然后去做。你不需要成为一个汇编语言的巫师或深入研究 GPU 的奥秘才能实现你的愿望。

——嗯,仍然是,是的,这是真的,但让我戴上我的老人的拳头帽子说,未来定义我们的可能仍然需要你在当前系统的极限上运作。所以,我们可能会谈论这个,但如果你谈论构建元宇宙和构建一个引人入胜的 VR 体验,它可能需要你不要去汇编,或者可能不是字面上的,而是精神上地去探索系统的极限。

——这确实是虚拟现实对我来说特别有趣的原因,因为它有所有的联系,你可以说,即使在早期,我也有一些旧杂志文章谈论《毁灭战士》作为一种虚拟现实体验,当时只是看到任何东西都是 3D 的。所以,你可以说我们从一开始就在尝试构建这些虚拟体验。在现代,虚拟现实,尤其是在移动端,当它是独立的,你基本上使用一个手机芯片来产生这些非常沉浸式的体验时,这确实需要工作。它不像老式主机游戏程序员那样,他们会查看硬件寄存器并安排所有 DMA 访问,但它仍然肯定与 Web 开发人员甚至 PC Steam 游戏开发人员通常需要处理的级别不同。同样,对于那些想在那个光谱的任何一端工作并仍然为世界提供大量价值的人来说,有很多机会。

——让我问你一个关于偏好的大问题。你认为最好的编程语言是什么?你最喜欢的,也是最好的,你职业生涯中见过的?许多人认为你是最伟大的程序员。我的意思是,很难给任何人贴上这样的标签,但如果你要给任何人贴上,那就是你。所以,让我问你这些有点荒谬的问题,比如有史以来最好的乐队是什么?但在你的情况下,最好的编程语言是什么?

——一切都有其需要注意的地方,但就我而言,我使用,所以现在我为 AI ML 相关工作编写相当多的 Python。我不是一个原生的 Python 程序员。这是我在职业生涯晚期才接触到的。我明白它的优点。

——但你不会用 Python 做梦。

——我不会。它有一些令人惊叹的统计数据,当你开始,当你做一个三层嵌套循环并在 Python 中执行操作时,你可以比适当的 GPU 张量操作慢几千倍甚至一百万倍。这些数字令人震惊,你可以慢到我们进步的速度,以及所有其他奇迹般的事情。

——所以,你对 Python 中效率低下的直觉……

——它一直在打击我。现在已经到了我理解的地步。就像,好吧,如果你关心 Python 的性能,你就不能写循环。你必须弄清楚如何将它重新格式化为某种大的向量操作,或者一些将在 C++ 库中完全完成的操作。但另一方面,它非常方便,你看到人们能够通过导入一些不同的东西来完成一些事情,这是地球上没有人能在 10 年前做到的,而且你可以在一个小的食谱中完成,你从网站上复制粘贴。所以,这真的很棒。当我坐下来做我认为是严肃的编程时,我仍然使用 C++,而且实际上是一种 C 风味的 C++,我并不热衷于现代模板元编程之类的东西。我看到了很多来自过度抽象的火车失事。我花了几年时间深入研究了 Lisp 的历史工作、Haskell 和一些函数式编程方面的东西。它们在思考问题的方式上有很多价值。我根据我学到的关于不拥有随机可变状态的价值,改变了我编写 C 和 C++ 代码的很多方式,因为你可能会失去对它的追踪。因为很多人直到做了很长时间才会真正欣赏的是,最初编写程序并不是最重要的,而是整个程序的生命周期,那时,它不一定仅仅是你写它的速度有多快,或者它运行的速度有多快,而是它如何能够随着情况的变化而弯曲和适应。然后,我在 Meta 工作期间,在 Oculus 和 VR 工作中真正学到的是,它也取决于它如何顺利地在程序员不断轮换的维护和各种事情之间交接,以及你如何让人们在不同领域快速上手,还有所有这些不同的方面。

——C++ 是一个适合工程师交接的语言吗?

——可能不是最好的。这其中有一些非常有趣的方面,在某些情况下,语言本身并不被认为很好,原因有很多。比如 C 被广泛嘲笑,是的,显然所有这些内存不安全和缓冲区溢出的安全漏洞以及你拥有的东西。但语言有一个被低估的方面,它非常简单。任何人都可以去,如果你懂 C,你通常可以进入某个地方,而无需学习他们正在使用的范式,因为可用的范式不多。我认为,有一些非常非常好的 C 代码,比如我发现如果我在 OpenBSD 上捣鼓一些东西,我就可以在内核中行走,然后我说,我明白这里发生的一切。要做出我需要的任何改变并不难,而你可能拥有更重要的语言。比如,这是 Lisp 的一个缺点,我不后悔我花在 Lisp 上的时间。我认为它在某些方面帮助了我对编程的思考。

——是的。

——但 Lisp 的最大支持者说它是一种多么可塑的语言,如果你写一个巨大的 Lisp 程序,你基本上就发明了自己的语言和结构,因为你使用的语言的原始元素并不多。它都是你建立在它之上的东西。然后像 Racket 这样的语言,可以说是更现代的 Lisp 版本之一,它基本上被吹捧为一种构建其他语言的语言。我理解对于一个非常小的项目来说,它的价值,但对于一个由许多人长期支持的项目来说,这个想法让我感到恐惧,因为所有这些抽象,你就像,“好吧,你不能碰这段代码,直到你教育自己了解我们建立在它之上的所有这些东西。”我很有趣地看到,当谷歌创造 Go 时,很多批评是,“哇,这不是一种最先进的语言。“这种语言太简单了,几乎很粗糙。”你可以看到编程语言的人们,只是瞧不起它,但它似乎相当受欢迎,基本上是说这是 C 的优点。每个人都可以直接上手使用它。你不需要重塑你的大脑来用它写出好的代码。所以,我希望我有更多机会在 Go 中工作。Rust 是另一个每个人都在谈论的现代语言,我无法对其做出判断。我做过一些比“Hello World”更深入的工作,我写了一些视频解压缩工作,只是作为练习,但那是在几年前,我之后就没有真正使用过它了。最好的编程语言是有效的语言,通常是你目前正在使用的语言,因为这是另一个陷阱,在我见过的几乎所有情况下,当人们在一个项目上混合使用语言时,那是一个错误。我宁愿只使用一种语言,这样每个人都可以跨越整个项目工作。在 Meta,我们有很多项目使用 React 框架。所以,你在这里有 JavaScript,然后你为实际工作有 C++,然后你可能有 Java 与 Android 系统的其他部分进行交互,而这些都是可怕的事情。这是我记得和 Facebook 的 Boz 谈论过的一件事,我说,我真希望我们能说我们只招聘 C++ 程序员。而他从 Facebook Meta 的角度来看,我们根本找不到足够的人,他们有成千上万的程序员。这不一定是一种正在消亡的品种,但你肯定能找到更多的 JavaScript 程序员,我曾经对 Elon 提到过一次,他对此感到非常震惊。他说,好吧,你只需要出去找到那些程序员,而不要雇佣那些不使用你想要的语言的程序员。但现在,我想,是的,他们在 SpaceX 的一些工作中使用 JavaScript 来处理 UI。当你去找 UI 程序员时,他们是 JavaScript 程序员。

——我不知道那是不是因为有很多 JavaScript 程序员,因为我认为伟大的程序员是稀有的,如果你只看使用不同编程语言的人数统计,那并不能说明伟大的程序员在使用什么。所以你必须真正看看你所说的,那就是语言的基本原理。它鼓励你什么?它如何鼓励你思考,它鼓励你构建什么样的系统?C++ 有一些创造力的元素,但它迫使你成为一个成熟的程序员。

——[约翰] 它期望你成为一个成年人。它并没有强迫你。

——所以,它吸引了那些愿意在构建大型系统和提出有趣解决方案方面发挥创造力的人,但同时,他们也拥有良好的软件工程实践,这些实践可以适应现实世界的系统。让我问你关于另一种语言,JavaScript。所以,如果数千年后外星人来访,而人类早已不复存在,我有一种预感,他们发现的大多数系统都将运行 JavaScript。我有点认为,如果我们生活在一个模拟中,它就是用 JavaScript 编写的。很长一段时间以来,即使现在 JavaScript 也没有得到任何尊重,但它运行着世界上如此多的东西,而且越来越多。有一天一切都会用 JavaScript 编写吗?

——JavaScript 的工程学实际上非常出色。使 JavaScript 运行如此之快的系统在很多方面都是现代工程的奇迹。它确实感觉它不是所有它被用于的事情的最佳语言,也不是构建像这样的巨大应用程序的最佳分发系统,没有类型系统等等。但我认为对很多人来说,它确实能合理地完成必要的事情。它仍然是一种 C 风味的语言,它仍然是一种带有花括号和分号的语言。人们很容易接受 JavaScript 的培训,然后理解它的根源。我认为垃圾回收对于大多数程序来说是无可争议的好事。有趣的是,今天早上我还在看一个 Twitter 线程,一群非常资深的遊戲開發人員在爭論垃圾回收的優缺點。你会遇到一些顶尖程序员,他们只是说,“不,这绝对不是一件好事。”

——哦,因为它让你变懒?

——是的,它让你不思考。我不同意。我认为有如此多的客观数据表明 C 和 C++ 程序中发生的漏洞,有时是由世界上最好的程序员编写的。就像没有人足够好,可以避免用它来伤害自己一样。你写了足够多的 C 代码,你就会伤害自己,而垃圾回收对绝大多数程序来说是一件非常棒的事情。只有当你进入最严格的实时事物时,你才会开始说,“不,垃圾回收对我来说弊大于利。”但这并不是世界上 99% 以上的软件。所以,JavaScript 在这些方面并不糟糕,而且很多编程不是语言本身,而是围绕它的基础设施。所有你可以获得的库,以及你可以部署它的不同方式,它给你的可移植性。JavaScript 在很多方面都非常强大,长期以来,而且现在仍然如此,如果我看看它,但 Web 堆栈,当你用 JavaScript 做一些非常琐碎的事情并在 Web 浏览器中显示时,所有必须发生的事情,要 X 射线穿透它,看看你那一个小小的 JavaScript 语句变成你 Web 浏览器中可见的东西所必须发生的一切。这非常,非常令人不安,仅仅是那个堆栈的深度,以及如此少的人能够理解正在发生的所有级别。但是,我必须提醒自己不要成为那个“过去的好日子”的老古董,因为显然这里有巨大的价值。世界确实在很大程度上运行在 JavaScript 上,而且它并没有崩溃。有很多可怕的事情,当你查看控制台日志时,你只会看到所有这些正在发生的坏事,但它仍然在蹒跚前行,没有人真正注意到。但我很多系统设计和系统分析都围绕着,你应该了解光速是什么,就像这里你能做的最好的事情是什么?听起来很糟糕,但在很多情况下,你可能比光速慢一千倍,但仍然可以接受。事实上,从更大的系统角度来看,它有时甚至是最佳的,因为有很多事情你不想让像我这样的人去处理,然后说,让这个网页运行得快一千倍。把这个 Web 应用变成一个硬核的原生应用程序,在 37 毫秒内启动,并且所有响应都在一帧延迟内。这根本没必要。如果有人想付我数百万美元来做这样的软件,而他们可以从训练营里找一个人说,“为这个启动一个应用程序”,通常效率并不是最好的衡量标准。这适用于很多领域,有趣的是,我们很多电器和所有东西都是围绕着能源效率构建的,有时会以牺牲健壮性或其他方面为代价,或者在其他方面成本更高,有趣的是,在未来的世界里,能源或电力可能会变得便宜得多,这可能会改变我们构建某些东西的工程权衡,你可以放弃效率,实际上获得更多有益的东西。我的意思是,这是我考虑转向的方向之一,就是核能,当我思考,“我接下来想做什么?”时,要么是成本效益高的核裂变,要么是通用人工智能。我的一些想法是,人们不明白核燃料有多便宜,而且会有一些方法,你可以有四分之一的效率或更低,但如果它能让你的工厂便宜十倍,那可能是一种激进的创新。所以,有一些关于直接裂变能量转换、裂变碎片转换的想法,也许你可以构建一个不需要所有蒸汽轮机的东西,即使它效率较低。所以,这在编程中有很多应用,你知道,了解如果你真的坐下来把它做到极致,你能做什么总是好的,因为有时会有不连续性,比如用户反应时间,有些时候,在一秒和 750 毫秒之间运行的差异,并没有那么大。你会在网页统计数据中看到它,但大多数可用性方面的东西并不那么好。但如果你降到 50 毫秒,那么突然之间,这感觉太棒了。就像立即执行你的命令,而不是你发出命令,然后无聊地等待它响应。所以,有时重要的是要努力克服某个阈值,但对于很多工作来说,价值衡量标准中有宽广的盆地,即使去努力也得不到回报。有一些工匠,他们就是不想买账,如果有人只是想说,不,我将是,我的骄傲在于我的工作,我永远不会做我能做的最好的事情,我尊重这一点,有时我就是那样的人,但我试图更关注更大的价值图景,你选择你的战斗,并将你的资源部署在最终能给你带来最佳用户价值的领域。

——嗯,如果你把地球生命的演化看作一种编程努力,那么效率似乎并不是被优化的东西,比如自然选择非常低效,但它会适应,并通过适应过程,构建越来越复杂的系统,越来越智能,最终的结果相当有趣。所以,我以同样的方式看待 JavaScript。它就像一个巨大的混乱,如果不起作用,东西就会自然死亡,如果它们对人们有用,它们就会自然生存。然后你建立了一个由人们正在编写代码组成的庞大社区,有些代码是粘性的,有些不是,没有人知道效率或低效率或断点,这代码有多可靠,你只是运行它,假设它有效,然后就会令人不快地惊讶,然后这就是进化过程。

——所以,这是一个很好的类比,我们可以从那里去很多地方,在编程的早期,当你有限时,你可以计算出你必须处理的字节数。你所有的黑客都在玩代码高尔夫,比别人的乘法例程少一个指令来完成。它被完美地制作出来,它是一件艺术品,当你有一个程序时,因为数量不多。你不能以不同的方式偷懒。在很多方面,我认为这类似于符号人工智能工作,如果你没有资源说,“好吧,我们将在这里投入数十亿甚至数万亿的可编程权重,”你必须把它变成一些符号化的、精心制作的东西。但这绝对不是 DNA 和生命以及生物进化等运作的方式。一方面,我们身体里的编程代码少得令人谦卑。我们有几十亿对碱基,这就像现在可以装在拇指驱动器里好几年了。然后我们的大脑更是其中一小部分。你可能有 50 兆字节,这不像香农极限那样信息密度高的载体。这些是混乱的代码,它们被分解成氨基酸。很多它们没有做重要的事情,或者它们以非常笨拙的方式做事。但这是一个不断积累的过程。你需要规模,你需要人口规模才能成功。在 50 年代和 60 年代,计算机的古老时代,你可以计算出当他们说互联网开始时,即使在 70 年代,互联网上也有大约 18 个主机。这是一个很小的有限数字,你仍然在优化一切,使其尽可能好。但现在有数十亿设备和所有正在发生的事情,你可以有一个非常自然的进化过程,其中很多事情都被尝试,很多事情都在爆炸。风险投资家在初创公司投资了错误的技术栈时会损失金钱,而事情完全失败或未能扩展。但好东西确实从中涌现。看到不同事物发生的不同方式的模仿进化很有趣。比如开头提到的“Hello World”,很有趣的是,像这样的小事情,现在每个程序员都知道“Hello World”。那是一个完全随意的决定,它来自于 Unix 和 C 的主导地位以及早期的一些例子。所以,数百万的实验一直在进行,但有些东西确实会脱颖而出,并在竞争中获胜,无论是思想空间还是编程技术,还是其他任何东西。

——比如,Stack Exchange 上有一个叫做 Code Golf 的网站,人们在那里竞争用各种语言写出特定任务最短的程序。看到那些技艺大师玩弄编程语言的极限真的很有趣。看到这一点非常美妙,而且在所有不同的编程语言中,你可以看到一些奇怪的编程语言和主流的编程语言,Python 2 和 3 之间的区别。你可以看到 C 和 C++ 和 Java 之间的区别,你还可以看到 JavaScript,所有这些。看到编程语言中蕴含的无限可能性,代码高尔夫任务揭示了这一点,这令人鼓舞。我们大多数人,如果你做任何编程,你都会写一些非常普通的代码。那是构建大型系统的途径。但很高兴看到创造性天才的可能性仍然存在于这些语言中,它们蕴含在这些语言中。那么,鉴于你再次成为最伟大的程序员之一,你认为什么造就了一个好的程序员,也许是一个好的现代程序员?

——所以,我刚刚在 Meta 向 TPM 组织做了一个长篇的咆哮/讲座,我最大的观点是,我们所做的一切都应该源于用户价值。你知道,我们所做的所有好事。就像我们不是技术人员一样。就像你不应该仅仅为具体的事情感到自豪。比如代码高尔夫,它是一个有趣的益智游戏,但它真的不应该是你的主要动力。就像我们在为人们解决问题,或者为人们提供娱乐。我们在为人们提供有价值的东西,它正在取代他们生活中的某些东西。所以,我们希望提供比他们能做的更多的净价值,但他们仍然选择使用我们的产品。而这,我的意思是,听起来很陈词滥调或老套,但我从根本上认为这就是你如何让世界变得更美好。如果你给予人们的价值比你和你的团队创造的价值更多,那么世界就会变得更美好。人们已经从较低的价值转向了使用你的产品,他们的生活因此感觉更好。如果你在经济上实现了这一点,那是一件非常好的事情。另一方面,如果你花了巨额的钱,你就像把很多现金扔进了碎纸机,你可能不应该对你所做的事情感觉太好。所以,为特定的架构或特定的技术或你完成的特定代码序列感到自豪,得到一点微笑,就像一点点多巴胺的刺激,这很棒。但最高层级的指标应该是你正在构建有价值的东西。现在你可以争论什么是用户价值,你如何量化它?这可能是一个很大的争论,但很容易说,“好吧,那个用户没有从你正在做的事情中获得价值。“那个用户脸上带着大大的笑容。“当某事发生时,我看到了那个令人欣喜的时刻。“那里发生了价值。”我的意思是,如果你至少要接受用户价值的概念。即使你很难精确量化它,你通常也可以进行相对的论证,比如,这比那个好,我们改进了东西。所以,作为开发人员,你的工作就是为用户服务。你想创造一些其他人会觉得有价值的东西。如果你有技术倾向,那么找到正确的杠杆来设计一个能够以最少的努力产生最大价值的设计。而且它总是需要被区分。那里有一个比率,你,这是大科技公司的问题,无论是 Meta、Google、Apple、Microsoft、Amazon,这些公司几乎拥有无限的资金。我的意思是,我知道他们的 CFO 会抱怨说资金不是无限的,但从大多数开发人员的角度来看,确实感觉如此。而且几乎违反直觉的是,如果你作为一个开发人员在某件事情上努力工作,总有一个想法,如果我能有更多的资源、更多的人、更多的 RAM、更多的兆赫兹,我的产品就会更好。而那种感觉在某些点上,当然是真的,如果你真的被这个束缚住了,移除一个障碍就会让产品更好,创造更多价值。但如果你没有以这种极其竞争的方式做出核心设计决策,你说功能 A 或功能 B,你不能只是说我们都做。因为那样你就没有对它们做出价值判断。你只是说,“好吧,它们看起来都不错。“我不想一定得“挑出哪个更好,或者好多少,然后告诉 B 团队,抱歉,我们不做这个,因为 A 更重要。”但那种总是需要批判性地评估你正在做的事情、你花费的资源,甚至做其他事情的机会成本的概念,这非常重要。

——嗯,让我问你关于这个,你提到的关于如何衡量价值的争论。能否在数值上衡量它,或者你能走约翰尼的设计路线,想象某人使用一个东西,想象他们脸上的微笑,想象你使用那个东西时的爱和喜悦的体验,这是从设计角度来看的,或者如果你正在构建更像底层的东西,比如 Linux,你想象一个开发者可能会遇到它并使用它,并因此变得快乐和更好。那么,你在这方面有什么看法?它是可衡量的吗?所以,我想像 Meta 和 Google 可能会尝试衡量它,他们会尝试,就像你尝试优化参与度一样,让我们衡量参与度。然后我认为有一种,我的意思是,我钦佩设计师的道德,比如想象一个无法衡量的未来,然后你尝试让那个未来中的某个人变得与今天不同,并感到快乐。

——所以,如果能得到任何好的指标,我通常会赞成,无论如何都要听取数据。但你可能会走得太远,我们遇到过一些问题,比如,“嘿,我们有一个性能回归,因为我们花哨的新遥测系统正在进行大量的磁盘写入来存档这些东西,因为我们需要收集信息来确定我们的计划是否好。”所以,当信息可用时,你不应该忽略它。

——来自实际使用该产品的人,人类使用该产品,大量人类,你可以在所有大型……

——所以,当你在做一些真正新颖的事情时,存在一个零到一的问题,你确实需要猜测。但我在 Meta 提出的一个观点是,我们现在拥有足够多的用户,以至于任何人在 VR 中想尝试的东西,我们都有感兴趣的用户。你不能做一个完全全新的蓝天提案说,我要做这个,因为我认为它可能很有趣。我挑战每个人。会有一些人,无论是 VR 工作还是你的桌面替代品,还是以不同的方式与人交流,还是玩游戏。可能会有数百万人,或者至少如果你选择一个我们现在不在的非常小的细分市场,仍然会有数千拥有头显的人,他们将是你的目标市场。我告诉人们,关注他们。不要发明虚构的用户,不要创造一个符合你想要细分市场的各种倾向的爱丽丝、鲍勃、查理,因为在拥有你可以合作的真实用户时,去考虑虚构用户是一个错误。但另一方面,拥有产品的整体愿景是有价值的。像 Meta 这样的公司,它们了解权衡,你可以拥有一家像 SpaceX 或苹果在史蒂夫·乔布斯时代的公司,那里有一个非常有权势的领导者,他可以在非常低的级别上进行微观管理,并说,不,那个把手需要不同,或者那个图标需要改变颜色。他们显然从中获得了很多价值。他们也耗尽了很多员工,他们之后有很多恐怖故事要讲。我的立场是,当你有一个领导者,他处于他能够理解他下面所有事物的极限,并且他对正在发生的一切都有知情的意见时,你就处于最佳状态。你找一个人,你必须相信一个有 30、40 年经验的人,你希望他拥有刚出训练营的人所没有的智慧。如果他们说,嗯,那里错了,你不应该那样做,或者甚至不要那样做,换另一种方式做。所以,那里有价值,但它不能超过某个级别。我的意思是,我有史蒂夫·乔布斯的故事,他说了一些在我面前明显错误的技术事情,因为他没有在那个级别上运作。但当它奏效时,你确实得到了那个充满激情的领导者,他考虑着整个产品,并且真的非常关心,不让任何事情被遗漏,我认为这很有价值。但另一方面是那些说,“好吧,我们想要这些独立的团队,它们在涌现想法,因为”而且就像,这几乎是反资本主义或反自由市场地说,我希望我的伟大领导者去决定所有这些点,而显然自由市场会带来你意想不到的东西。就像在 VR 中,我们看到了一些东西,它并没有像早期人们认为的那样成为关键应用,而那些没有被决定进入商店的黑暗阴谋所批准的东西,在某些情况下却取得了巨大的成功。所以,是的,我绝对想在那里做一个我曾经提出的提议。就像,“嘿,让我当 VR 独裁者,我会把事情搞定。”这不符合 Meta 的文化,他们了解权衡。这只是不是方式,这不是他们想要的公司,他们想要成为的团队。

——是的,这很有趣,因为 VR,我们还会更多地谈论它。对我来说,VR 将如何改变世界仍然不清楚,因为 VR 似乎一定会以某种方式从根本上改变这个世界。但我不知道如何。

——[约翰] 是的,当你想要进入那个话题时告诉我。

——我们会,好吧,等等。所以,坚持你,作为最伟大的程序员,好吧,在早期,当你没有领导团队等成年人的责任时,你可以专注于成为一名程序员,约翰·卡马克的生产力的一天是什么样的?每天有多少小时在键盘上,睡多少?是什么燃料滋养了大脑?你是什么时候醒来的?

——所以,我能够非常一致地知道什么对我来说是好的工作条件,很长一段时间以来。我从来不是那种程序员,我不会通宵达旦,连续工作 20 小时。就像我的大脑通常在 12 小时左右就会变得一团糟,但努力工作确实很重要,而且我会工作几十年。我每周工作 60 小时。我每天工作 10 小时,每周工作六天,并努力在那里保持高效。现在,当我年轻时没有孩子,没有其他责任时,我的日程安排发生了很大变化,我处于那种轮班日程,我每天会晚一个小时,然后绕着……

整段时间,我常常在下午两三点才勉强收工,然后又得熬到午夜过后,甚至凌晨两点才能继续工作。那会儿,只有我一个人在努力让事情运转起来,而且我通常都孤零零地待在办公室里。人们一般不会怎么打扰我,这样我就可以完成很多编程工作。当我需要送孩子上学之类的,我才逐渐适应了更规律的作息。

所以,孩子是让你起床的那个“强制函数”,同时也是——我并不清楚这是否会带来生产力上的显著差异,因为我感觉如果我只是随心所欲地起床,每天都会比前一天晚一点。但最近我下定决心,要努力把我的作息稍微提前一点,争取早上八点起床,并尝试调整事情的安排。比如,我经常会做一些关于如何提高效率的自我实验。

我最近几个月意识到的一件事是,我会去散步或跑步。我每天能走四英里,通常是在德克萨斯州现在太阳快下山的时候,那时天气仍然非常炎热。我大概会在八点半左右出门,然后花费时间在路上,之后还要洗澡,这占用了我一天中几个小时的时间,之后我仍然有几个小时的空闲,有时我最好的工作时间是在晚上,那时周围没有人,也没有人打扰我。但白天出现的这个“空洞”是个问题。

所以,就在几周前,我做出了改变,我说:“好吧,我要早点起床,我要先去散步或者出去走走,这样我才能有更多不受打扰的时间。”因此,我仍在不断尝试这些因素,以优化我的工作。但它一直都是,很长一段时间以来,我每周工作六十个小时。在某种程度上,我脑子里有个小小的念头,我甚至有点嫉妒那些能进行马拉松式编程的程序员,比如戴夫·泰勒,他就是那种有时会睡在自己办公桌下的人,还有那些经典的黑客传说。

我的一部分总觉得有点困扰,因为我不是那样的人。我不会连续编程二十个小时,因为我会在十二小时后就精疲力尽,效率低下。我是说,是的,十二小时的编程是可以的,但之后你就无法进行高效的思考了,至少我不能,但每个人的情况不同。很多人并不真正理解这一点,有些人可以只睡四个小时,依然保持头脑清醒,并能继续做出出色的工作,但也有很多人会彻底崩溃。

所以,我确实会告诉人们,我总是尽量保证八小时的睡眠。这不是那种“更努力地工作,更早地起床”的模式。我只是工作效率会下降,你可以每周工作一百个小时,只要你把事情安排得当,仍然能保证八小时的睡眠。但我确实相信努力工作,多工作。

一位游戏开发者曾说过这样一句话,我知道在很多情况下,人们对“努力工作”会有抵触情绪,我经常为此在网上争论。但他的基本意思是,是的,每周工作四十小时,那基本上算是兼职了,如果你真的投入其中,做你认为重要、你充满热情的事情,工作时间越长,完成的事情就越多。如果你曾与那些以如此高强度工作的人共事过,你很难反驳这一点,你不能简单地说,他们应该停下来。

几年前,我重新审视了这个问题,我曾用一个虚构的例子来说明,有些人会一本正经地说,他们认为如果你每周工作超过四十小时,你的生产力就会下降。他们通常是在误解事情,你的每小时边际生产力,在八小时之后确实会低于你的高峰时段,但你并不是真的完成得更少。确实存在一个临界点,你会开始搞砸事情,行为变得更糟,甚至会适得其反,但这并不是在八小时、十小时或十二小时的时候。

我曾用过一个虚构的例子:想象有一颗小行星即将撞击地球,毁灭所有人类生命。你希望埃隆·马斯克或 SpaceX 的员工,那些正在建造拦截器来偏转小行星的人,他们能在下午五点打卡下班吗?因为他们再多工作几个小时就会效率低下。这似乎很荒谬,但这只是一个假设,每个人都可以不予理会。

但当新冠病毒来袭时,你看到所有这些医务人员都在拼尽全力。我会说,好吧,你希望所有这些科学家,那些研究治疗方法和疫苗,以及照顾所有这些病人的人,他们每天工作超过八小时是在把事情搞砸吗?当然,人们会说,“我只是想说点什么,”但这是事实。工作时间越长,完成的事情越多。

所以,这基本上是第一层。但我也想说,至少我相信,根据不同的人、不同的任务,更努力、更长时间地工作,会让你在接下来的几周里,在那些高峰时段表现得更好。所以,对某件事的深度投入会让你变得更深层次。努力工作不仅仅是为了原始的工作时间。它也会对你几周甚至几个月后的状态产生影响。

你在某种程度上是在磨练自己。

我认为,这就像《寿司之神》一样。如果你全身心地投入制作寿司,日复一日地投入漫长的时间,你就会成为你所做事情的真正工匠。当然,也有关于你是否牺牲了大量个人关系?你是否牺牲了可以用这些时间做的其他可能的事情的讨论。但如果你纯粹是想成为你所从事的艺术的大师或工匠,那么更长的工作时间不仅仅是为了做得更多,而是为了让你在所做的事情上变得更好。

是的,我不会反对任何想做最低限度工作的人,他们有自己生活中的其他优先事项。我唯一要争论的是,并不是每个人都应该努力工作,而是如果你想成就某事,更长时间、更努力地工作就是实现这一目标的途径。

好吧,那让我问你关于这个。神话般的工作与生活平衡,对于工程师来说,似乎程序员这个职业,努力工作确实能带来更高的生产力,但这也引发了关于个人关系、家庭等等问题,你是如何找到工作与生活平衡的?你能提供一些建议吗,也许是来自你之外的?在你的人生阅途中,你是否已经获得了关于这方面的智慧?

我认为人们的需求范围很广,不同的人有不同的需求。这并非一刀切。我肯定会说,对我来说有效的方法。我可以告诉你,我与普通人不同,事情对我的影响方式也不同。我想做的事情,我的目标也不同,影响事情的杠杆也不同,我从来没有感到过倦怠。我知道有很多才华横溢、聪明的人,他们做着世界领先的工作,但他们会感到倦怠,而我从未有过这种感觉。我从未到过那种“我就是不在乎了,我不想再做了”的地步。但我一直有灵活性,可以从事很多有趣的事情。我总能把目光转向别的事情,并在那里度过愉快的时光。而这一切,能够真正努力工作很大程度上在于能够有多种选择,并将你的时间用在最合适的事情上。

比如,有时是我阅读新研究论文的最佳时机,我需要认真思考它。然后,有时我可能只是需要浏览和整理我旧的笔记,因为我跟不上节奏了。然后,有时是时候,好吧,让我们开始吧,为某件事敲出几百行代码。所以,在它们之间切换一直很有价值。

所以,你总是对你所做的一切事情心怀喜悦,这是一种工作与生活的平衡,作为第一步。所以你总是快乐的吗?

是的。我是说,很多人会说,我经常看起来像个愁眉苦脸的人,只是坐着,表情平淡,甚至眉毛紧锁,脸上带着愁容,当我盯着某样东西看的时候。

那就是你快乐的样子。

是的,这有点真实,就像,好吧,我正在推动这件事,我在这里取得了进展。我知道这不适合所有人。我知道这不适合大多数人。但我在这些情况下总是努力去做的是,我不想让像我这样的人被别人告知,“不,你甚至不要尝试那作为一种选择,”因为工作与生活的平衡与你的人生事业相比,有一小部分人可以非常快乐地痴迷于某些事情,而痴迷往往能完成那些普通、谨慎、平庸的工作无法完成的事情,或者至少需要很长时间才能完成的事情。

关于你早期的饮食习惯,有一些传说。作为一名程序员,作为一种运动员,你能谈谈你当时的营养摄入吗?是什么样的营养让你保持活力?

我从来没有真正擅长于真正关注它,我足够好,我吃得不多,我从来不是一个大胖子。但有趣的是,我记得我曾是一个不快乐的青少年,没钱,而且,让我烦恼的一件事是没钱,我不能随时买披萨。所以,我变得富有,然后我买了大量的披萨。

所以,那是定义性的,这就是富有的感觉。你可以买披萨。

有很多小事,比如披萨。我可以买所有我想要的披萨、漫画书和电子游戏,而且真的花不了多少钱。但披萨是其中之一,而且确实是这样,很长一段时间以来,它一直伴随着软件。我每天都订披萨。送货员认识我的名字,而且多年后我才知道,原来我是一个如此好的顾客,他们从未提高过我的价格。我还在用六年前的价格买披萨,他们每天仍然会送过来。

所以,你是一天吃一顿饭,还是——?

它是分散的。你会吃几块披萨,稍后还会吃一些,我可能在家也会吃点东西。Facebook Meta 的好处之一是他们会提供食物,你会有不同的,我想现在是 DoorDash 这样的配送服务,但他们会确保每个人都能吃饱。而且我可能在 Meta 办公室工作的这六年里,吃的东西比以前好多了。但对我来说,这已经足够了。我的健康一直很好。我做相当多的运动,而且我不会暴饮暴食,我也会避免很多其他不太健康的东西。所以,我这个年纪仍然过得很好。

你有没有过,我不知道,与食物或咖啡之类的东西有关的精神体验?我是说,编程体验与音乐有关,或者我听着棕色噪音编程,或者创造一个环境,以及你摄入身体的东西。你构建的一切都可以成为一种仪式,为整个编程过程注入活力。你和披萨有这种关系吗?

这真的与健怡可乐有关。我是说,仍然有那种放下罐子,打开健怡可乐罐的感觉。好吧,现在,我是说真的,我们要开始工作了。

但直到今天,健怡可乐仍然是其中的一部分。

是的,可能每天八到九罐。

很好,好的。你的设置怎么样?有多少屏幕,什么类型的键盘,有什么有趣的东西,什么类型的 IDE,Emacs,Vim 还是现代的?Linux,什么操作系统笔记本电脑,或者有什么让你开心的有趣的东西?

我基本上迁移了文化,早期在整个游戏开发领域,有一种非常独特的文化,与硅谷的风险投资文化截然不同。它们是不同的群体,在思考问题的方式上也有很大的差异。而且我仍然认为很多大公司可以从硬核游戏开发的方面学到东西,这让我感到难以置信的是,如此多的硅谷风险投资支持的大公司,对调试器和 IDE 如此敌视。

哦,这很有趣。抱歉,你的意思是像谷歌和 Meta 这样的大公司对——?

它们对调试器和 IDE 不太重视。比如,很多都是 Emacs、Vim 之类的,我们只是假设调试器在大多数情况下对系统不起作用。而这很大程度上源于一种对很多事情的 Linux 偏见,我是在个人电脑,然后是 DOS,然后是 Windows 上成长起来的,使用的是 Borland 工具,然后是 Visual Studio。

[Lex] 你欣赏调试器吗?

非常欣赏。我是说,调试器是你了解一个过于复杂的系统的方式。我是说,任何认为只需阅读代码并思考它的人,这都是一个疯狂的说法,你甚至无法阅读一个大型系统的所有代码。你必须在系统上做实验。通过添加日志语句、重新编译和重新运行来做到这一点,是一种极其低效的方式。我是说,是的,即使你只能用石刀和兽皮工作,你总能完成事情。一个优秀程序员的标志是,无论给你什么工具,你都能找到完成它的方法。但有时拥有更好的工具,你就能取得惊人的成就,而不是仅仅经历这种迭代的编译、运行、调试周期,你还有像 Lisp 那样的方向,你有一个 riple,你可以进行交互式工作,在那里取得惊人的成就,但在许多情况下,调试器是一个非常强大的用户界面,可以停止、检查你程序中所有不同的东西,设置所有不同的断点。当然,你可以用 GDB 或其他工具做到这一点,但这是一种用户界面的基本原则,当某件事很复杂时,你不会经常使用它。有些人会在他们走投无路时拿出 GDB,他们已经为解决一个问题苦苦思索了很长时间。但对于那些在游戏开发中成长起来的人来说,就像他们甚至在知道有问题之前就已经在使用调试器了。你只需要停下来看看发生了什么。有时你甚至可以在不知道之前,甚至在进行一次编译周期之前,你就可以在调试器中,你可以说,我只是在这里改变这个,是的,它完成了工作并修复了它,然后继续。

对于不知道的人来说,GDB 是一个很受欢迎的,我想主要是用于 C++ 的 Linux 调试器。

它们处理大多数语言。好的,但它基于 C,是最初的类 Unix 传统。

而且它有点像命令行,不用户友好。它不允许清晰的可视化,你说得完全正确。所以,你通常在走投无路时使用这种调试器,并且有一个你无法通过查看代码来弄清楚的问题。我猜普通程序员就是这样使用它的。但你认为应该有工具能够可视化并作为编程过程的一部分来帮助你,只是一个正常的编程过程来更深入地理解代码吗?

是的,当我处理我的 C、C++ 代码时,我总是从调试器中运行它,我输入代码,运行很多次。写完代码后,我做的第一件事就是设置一个断点,然后单步执行函数。现在其他人会说,“哦,我是在脑子里做的。”好吧,你的大脑是对所有这些东西的错误解释器,我已经写了全新的代码,我想在那里单步执行,我会单步执行它,检查很多东西,看看它是否真的按照我期望的那样工作。

它就像一个伴侣,调试器,就像你现在以一种交互式的方式与另一个存在一起编码,调试器是一种愚蠢的存在,但它是一个可靠的存在。这是一个有趣的问题,人工智能在其中扮演什么角色,像 Codex 和这些生成代码的能力,你可能会开始拥有能够以有趣而深刻的方式理解代码的工具,并与你一起工作。

因为那里有一个完整的范围,从静态代码分析器和各种动态工具,到可以理解人类无法理解的程序的 AI。它们太庞大、太纠缠不清、太相互关联,但并非不可能理解。只是超出了我们工作时可以在脑海中保持的可变状态。我再次强烈支持静态分析器和类似的东西,你会发现有些人不喜欢被程序斥责他们写东西的方式,就像,“哦,我比你懂。”有时你是。但那是我非常、非常有价值的经历,而且不是很多人有机会获得,这几乎是程序员的一种精神体验和觉醒,无论是软件代码库还是几百万行代码。一度我使用过几种不同的分析工具,但我下定决心要真正地使用我能找到的每一种工具来审查代码库。这令人大开眼界,我们以拥有一些最健壮、最强大的代码而闻名,我记得从微软那里听到过关于 Xbox 崩溃的事情,而我们只有少数几个,他们说那可能真的是硬件错误。然后你还有其他重要的游戏,它们不断记录着数百万个错误。所以,我在很多层面上都为我们的代码感到自豪,但当我用这个代码分析刮刀清理一切时,里面有多少错误真是令人震惊。你可以说,“好吧,这是复制粘贴,‘这里没有改变什么。’”很多东西,最常见的问题是打印格式字符串中的数据类型不正确,这可能导致崩溃,而你确实希望得到这类警告。然后是下一个最常见的问题,缺少对可能导致程序崩溃的 null 的检查。这些显然是 C、C++ 的主要问题。每个人都有这些问题,但所有不同的小问题都构成了长尾。我们有优秀的程序员,我自己的代码也是如此,我并不是在看,“哦,我写了那段代码,那肯定错了。”我们已经使用了一年了,它就像一艘潜艇,这个大脑在那里等着我们踩上去。这令人谦卑。我得出的结论是,你的语言在语法上允许的任何东西,如果它最终出现在足够大的代码库中,你就无法,良好的意图不会阻止它的发生。你需要自动化工具和护栏。这些从静态类型开始,甚至在更动态的语言中也有类型提示。但那些反对此的人基本上说,这会减慢我的速度。这有一定的道理,我写过,我在笔记本里拼凑过东西,我当时想,“哇,这太棒了,它就这么发生了,”但是的,那有点可疑,但它运行得很好。我不在乎。这又回到了价值分析,有时不关心是正确的,但当你关心时,如果它将持续多年,并且会有其他人参与其中,并且将部署给数百万人,那么你就想使用所有这些工具,你想被告知。就像,不,你在这里、这里和这里搞砸了。这确实需要一种关于事物的自我检查,你必须对你所做的一切都充满瑕疵的可能性持开放态度。不是说,“哦,你偶尔会有一天过得不好,”而是说,你输出的任何代码流都会有统计上的规律性,你就是会犯错。而且我认为关于测试驱动设计和单元测试与分析和其他东西的整个争论。我更倾向于分析和那种“你必须先修复这个才能运行程序”的东西,而不是你可以运行它,并希望单元测试能以某种方式捕捉到它。

是的,我的私人代码里到处都是断言。

[John] 是的。

对我来说,有一种愉悦感,关于那种专制的规则,比如,“这一点应该是真的。”我犯了太多本不该犯的错误,我以为我不会是那种会犯这种错误的人,但我一直在犯这种错误。因此,断言确实抓住了我,一直以来都非常有帮助。所以,我想说我大约 10% 到 20% 的私人代码,只是供个人使用,可能都是断言。

它们是活跃的注释。理论上,它们对程序没有任何影响。如果一切都如你所料,它们永远不会触发。但即使你做得对,并且最初写对了代码,然后情况也会发生变化。外部世界也在变化。事实上,这是我喜欢静态声明的一个方面,我经历了一个时期,就像,好吧,现在我们有了通用集合类,我们应该让一切都变得可变,因为我曾有过这样的经历,在早期,你得到了 Doom,它有一些固定的限制,然后每个人都开始制造越来越疯狂的东西,他们不断提高不同的限制,这么多行,这么多扇区。这似乎是个好主意。好吧,我们应该让它变得完全通用。它可以一直增长到任何程度,在某些情况下这是正确的做法。但它也有另一个方面,世界在你周围的变化,当你得知世界发生了比你想象的更大的变化时,这是件好事。如果你有一个不断增长的集合,你永远不会知道。你可能会遇到二次减速,你曾想,“哦,我只会有一小部分这些东西,”但有些事情改变了,有了新的设计风格,“突然之间,你有了一万个。”所以,在很多情况下,我喜欢选择一个数字,一个漂亮的圆整的二的幂数,然后把它设置在那里,并有一个断言说,“嘿,你达到了这个限制。”你可能应该考虑你围绕这一切所做的选择,如果有人使用的数量是你预期的十倍,这仍然相关吗?

是的,这段代码最初是用这种世界观,用这种约束集写的。你当时是这样看待世界的。如果有什么东西坏了,那就意味着你必须重新思考最初的东西。它这样做很好。键盘或显示器呢?

我在这方面相当普通,我确实在几年前搬到了三显示器。我双显示器已经很久了,而且我大概晚了几年才意识到,视频卡现在通常有三个输出端口。我应该把第三个显示器放上去。这纯粹是赢了。我对此非常满意。但没有,我没有花哨的键盘或鼠标,或者真正有什么特别的东西。

关键在于一个拥有有用调试器和有用工具的 IDE,所以不是 Emacs、Vim 的路线,然后是健怡可乐。

是的,我花了一个星期的时间进行了一次长达一周的静修,我当时想,好吧,我要强迫自己使用,实际上是经典的 VI,我知道人们会说你不应该那样做。你应该直接使用 Vim。但我给了它一个认真的尝试。就像,好吧,我处于一种经典的 Unix 开发模式,我花了一周时间在上面。我使用 Enter 键来教自己各种小组合键。最后,它就像,好吧,这有点像我的内战重演阶段,就像我出去,像过去那样做。从这个角度来说,这很有趣。

你现在冒犯了很多人,他们听着的时候都在尖叫。

所以,再次强调,这是因为这不是现代 Vim,但仍然是的,我很高兴最终回到了我的 Visual Studio。

是的,我在这方面确实很挣扎,因为我使用 Kinesis 键盘,并且主要使用 Emacs,我觉得我可以像你所说的那样,理解代码,导航代码。你可以在 Emacs 中用 Lisp 构建很多东西。你可以为自己定制很多东西来帮助你内省代码,帮助你理解代码并可视化代码的不同方面。你甚至可以运行调试器,但这是工作,世界在你身边前进,越来越好的想法不断涌现。这让我感到,我需要进行和你谈论的同样的静修,但现在我还在打内战。我需要进入 21 世纪。

而且世界似乎正在,或者世界的一大部分正在朝着 Visual Studio Code 发展,这对我来说很有趣,一方面是 JavaScript 生态系统,而 IDE 是你希望无限快速的东西。你希望它们立即响应。而且,我认识一个人,我是一个老派的游戏开发者,他仍然使用 Visual Studio Six,在现代计算机上,一切都非常即时,因为它被设计成在慢一万到十万倍的计算机上工作。所以,一切都立即发生,而所有现代系统都感觉,它们感觉如此粗糙,就像,“哦,为什么这个在刷新屏幕,然后移动,然后在这里更新,然后那里闪烁一下,你应该更新这个。”我们确实失去了一些东西,拥有这种不可思议的灵活性,但很多人从中获得了巨大的价值。我很高兴它似乎甚至战胜了许多老派的 Vim 和 Emacs 用户,他们就像,“嘿,Visual Studio Code 可能没那么糟糕。”也许这是最终的和平解决方案,让每个人都对它感到满意。

你能解释一下 dot plan 文件是什么,它在你的生活中扮演了什么角色吗?它是否仍然发挥作用?

在 id Software 早期,我们做的一个重要而独特的事情是,我采用了史蒂夫·乔布斯在苹果公司之外的 NeXT 电脑,或者说 NeXT 系统。它们基本上,这很有趣,因为我之前并没有 Unix 系统方面的背景。所以,很多人在大学里就沉浸其中,这为他们设定了很多文化期望。而我没有这些,但我知道我的背景是,我是一个狂热的 Apple II 粉丝,我一直对 Mac 有点怀疑。我并不确定我真正想选择什么。但当史蒂夫·乔布斯离开苹果公司创办 NeXT 时,这台电脑似乎就像来自未来的神奇之物,它拥有所有这些酷炫的东西。而那时我们还在使用 DOS,一切都会崩溃。你必须有重置按钮,因为在开发过程中,你的电脑会冻结,一天几十次。你的电脑会不断重启。所以,任何 Unix 工作站都会提供一个稳定的开发平台,让你不会一直崩溃和重启。但 NeXT 也有一个非常惊人的图形界面,非常适合构建工具,它使用了 Objective C 作为一种有趣的。

[Lex] 哇哦。所以,NeXT 是基于 Unix 的,而不是 Objective C。所以,它有很多元素。

它变成了 Mac,我是说,苹果公司被 NeXT 反向收购,然后它变成了现代 Mac 系统。

并定义了一些开发者,比如工具和整个社区。

是的,如果你现在在 Apple 上编程,仍然有所有这些 Ns 开头的,最初是 NeXTSTEP 对象,各种各样的东西。但这些 Unix 系统的一个方面是,它们有一种点计划文件(dot plan file)的概念,一个点文件(dot file)通常是不可见的,通常在你主目录或其他地方。当时大多数 Unix 系统上都有一个简单的服务器,当有人运行一个简单的命令,叫做 finger 时,你可以 finger 然后是某个人的地址,如果连接正确,它可以在互联网上的任何地方,然后那个服务器所做的就是读取那个用户主目录中的 dot plan 文件,然后把它吐出来给你。最初的想法是,它可以是你是否在度假,你当前的项目是什么,它应该像你计划要做的事情一样,人们会用它来做各种事情。但它所做的只是将该文件转储到发出 finger 命令的那个人的终端上。

一度我开始在那里保留一份我正在做的事情的清单,那就是我当天在做什么。我有一个自己发明的小语法,比如,这是我正在做的事情,我用星号标记完成的事情,我还可以有一些其他的小标点符号。当时,它最初只是我的待办事项清单,而且会是一些琐碎的、晦涩的小事情,比如我修复了碰撞检测代码中的某个东西,让火球做了一些不同的事情,只是那些关注游戏的人可以破译的一行行简短的文字。但我确实开始写更深入的东西。我会有一些想法和见解的笔记,然后我最终会开始写一些小文章。我有时会把它们写进 dot plan 文件,穿插着我正在做的事情的工作日志。所以,在某种程度上,它就像一个超级早期的 proto blog,我只是在倾倒我正在做的事情。但它足够有趣,以至于有很多人对此感兴趣。所以,大多数人没有 Unix 工作站。所以,当时有一些网站会跟踪 Doom 和 Quake 的开发,它们基本上会创建一个小服务,去抓取所有的更改,然后人们就可以用浏览器获取它们。而且有一段时间,就像所有在那个轨道上的达拉斯游戏流散人群一样,有几十个 plan 文件在运行,这比博客真正流行起来早了几年。这预示着事情的发展方向。而且,它已经被收集起来了,可以在不同的地方在线找到,回顾一下我当时的想法,我当时在做什么,以及在不同的领域,这很有趣。

你有机会回顾一下吗?有没有一些有趣的、非常底层的具体待办事项,也许是你从未完成的事情,以及高层次的哲学论文式的东西脱颖而出?

是的,两者都有一些不错的东西,其中很多是关于游戏开发的低级细节,而且我学到了很多东西,现在没有一个我曾经做过的项目是我不能做得更好的。我是说,如果你做得对,你就会学到东西,随着年龄的增长,你应该能够把早期的事情做得更好。在 Wolfenstein、Doom、Quake 中有一些东西,就像,“哦,我肯定可以回去做得更好。”无论是渲染引擎方面的东西,还是我如何实现怪物行为,还是管理资源。

你现在回顾时,是否看到了自己思维中的缺陷?

是的,我看到了。我是说,有时我会看着它说,“是的,我有一个非常清晰的看法,我当时做得很好,”而我还没有真正达到那个点,有另一个程序员,格雷厄姆·德文,他曾在 id 和《第七访客》工作过,他有一次评论说,他回顾了他的一些旧笔记,然后说,“哇,我当时真的很聪明。”而我并没有太多这种感觉,我是说,我看着它,我总是知道,是的,随着年龄的增长,你处理问题的方式会发生某些变化。但我处理过的所有问题,我确信我都能做得更好。

哦,哇。

所以,你仍然可以介入。如果你能回到过去和那个人谈谈,你会教他一些东西。

[John] 是的,绝对。

太棒了。高层次的哲学方面呢?有没有一些你还记得的、让你印象深刻的见解?

我理解了一些关于开发和行业等等的方面,当时它们还处于一个更原始的阶段,我肯定在后来的几年里学到了更多关于商业、组织和团队结构的东西。我确实有一些方面,我不是管理团队内部运作、人们如何合作的最佳人选,甚至不是一个很好的人选。我只是,让我走开,让我去写代码,做这个。我越来越意识到,在更大的图景中,有些事情有时相对不重要。它的核心是用户价值的创造。这是所有这一切的总体重要性。而在我早年的很多时间里,我并没有正确地关注这一点。有些事情,如果我以不同的方式处理,我可以获得更多。如果我以不同的方式处理,我可以做出一些更成功的产品。我们犯了一些我们无法真正知道结果的错误。但后来看到 Activision 这样的公司表明,嘿,你真的可以每年都做同样的游戏,让它变得更好,这很有趣。你可以从负面角度看待它,说,“哦,那只是在模仿,等等。”但如果你再次退后一步说,不,买它的人还在享受吗?他们享受的程度是否比他们可能购买的其他东西更高?你可以说,“不,如果你处于能够做到这一点的位置,那实际上是一个伟大的价值创造引擎。”不要因为你认为需要而被迫重新发明一切,很多关于商业和团队的事情都可以做得更好。但我仍然对技术工作,那种技术远见类型的工作感觉很好。有一些经典的例子,比如我为 OpenGL 而不是 D3D 辩护,这后来被证明是其中最重要、最具有里程碑意义的事情之一,它在 Windows 上一直是一场后卫战,微软就是不想让它获胜。但当我回顾它时,为了让 OpenGL 在很多年里保持相关性,这意味着当移动设备开始出现时,OpenGL 就存在了。OpenGL ES 是推动整个移动行业加速的东西。直到最近几年,随着苹果转向 Metal,一些其他公司转向 Vulkan,这种情况才有所改变。但真的退后一步看,就像,是的,我为不同的东西卖了数千万款游戏,但数十亿设备最终拥有了合适的图形 API,这在很大程度上要归功于我,我认为我们不应该放弃并使用微软当时非常糟糕的 API,这真的非常重要。微软的问题在于,API 不会一直很糟糕。它们一开始很糟糕,但几个版本后它们实际上相当不错。而且有一个完全公平的论点是,到 DX9 出来时,它可能比 OpenGL 更好的编程环境。但我们仍然拥有一个开放的标准,可以在 Linux、Android 和 iOS 上显示,甚至至今仍然可以在 WebGL 上显示,这真是太棒了。所以,这是我可能会列入“最精彩时刻”清单中的一项,我曾推动过——对数十亿设备产生了影响,是的。那么,让我们来谈谈吧。你能讲述一下 id Software 的起源故事吗?再次,它是最伟大的游戏开发公司之一。它创造了 Wolfenstein 3D,这些游戏在很多方面定义了我的生活,让我意识到计算机在图形和性能方面的能力。它只是在我内心深处解锁了某些东西,让我理解了这些机器的本质,因为游戏可以做到这一点。所以,Wolfenstein 3D、Doom、Quake 以及所有令人难以置信的工程创新。那么,这一切是如何开始的呢?

我先声明一下,我通常不认为自己是软件方面的历史学家。我通常会,我倾向于让约翰·罗梅罗来讲述早期的事情,因为我一直以来,我曾评论过我在某些方面是一个非常不感伤的人,除非有人明确地提醒我,否则我不会花很多时间去回顾事情的早期。而且我并没有特意去整理我脑海中的一切。而且我越是研究机器学习和人工智能以及记忆的各个方面,以及当你回去打磨某些东西时,它并不一定完全是它发生的方式。但话虽如此,从我的角度来看,导致这一切发生的方式是,在我成年并上了一些大学课程后,我决定辍学,我从事的是艰苦的合同编程工作,真的在努力维持生计和支付房租。我为之工作最多的公司是 Soft Disc Publishing,这在现在听起来很奇怪,它的商业模式是每月订阅软件。在互联网出现之前,人们可以连接并获取软件,你支付一定的金额,每个月他们会寄给你一张光盘,上面有一些随机的软件。喜欢电脑的人觉得这很酷。他们有不同的版本,适用于 Apple II、2GS、PC、Mac、Omega,还有很多其他的东西。所以,这是一个古怪的小生意。但我为他们做了很多合同编程工作,我写一些小游戏,卖三百到五百美元。我当时为了维持生计,我决定我可以做一个程序,然后把它移植到多个系统上。所以,我会写一个像 Dark Designs 或 Catacombs 这样的游戏,然后在 Apple II、2GS 和 IBM PC 上开发它,这显然引起了在那里工作的人们的注意。比如,杰伊·威尔伯是我的主要编辑,汤姆·霍尔是次要编辑,他们一直问我,“嘿,你应该下来为我们工作。”我推迟了几次,因为我真的很享受自己独立自主的自由,即使我几乎入不敷出。我喜欢它。我整天都在编程。但我确实有过几次濒临破产的危险,也许我应该找一份真正的工作,而不是一次性签订这些合同。杰伊·威尔伯很棒,他会在我需要的时候像联邦快递一样把支票寄给我,让我渡过难关。所以,我终于接受了他们的邀请,去了路易斯安那州的什里夫波特。我当时在堪萨斯城,开车穿过奥索克斯山脉一路来到路易斯安那州,看到了 Soft Disc 的办公室。我进去,和很多人谈了谈,见了当时我一直在远程工作的人。但对我来说最重要的是,我遇到了两位程序员,约翰·罗梅罗和莱恩·罗斯,我第一次遇到了比我懂更多酷东西的程序员,那时候的世界完全不同了。我在堪萨斯城,我就是那种“学校里最聪明的孩子”,做所有电脑相关的事情,老师没有什么可以教我的。但我唯一能学习的就是图书馆里的几本书。根本没什么。而且有些编程方面的东西对我来说就像是黑魔法。比如,“哦,他知道如何在低级驱动器编程接口上格式化一个磁道。”当时,我仍然不确定我是否会接受这份工作,但我遇到了这些做着酷炫事情的了不起的程序员。而且罗梅罗曾在 Origin Systems 工作过,他之前做过很多不同的游戏,所以我很快就决定了。是的,我会去那里工作。然后我安顿下来,搬了进去,开始做更多的小项目。在那里发生的第一个重大变化是,公司想做一个专注于 PC 游戏的订阅服务,就像他们其他的服务一样。他们对所有事情都使用同样的模式,每月支付一笔费用,你就会得到一张光盘,上面有一两款游戏,每个月都有,而且你无法选择你得到什么,但

我们认为这会很有趣。这就是他们感到舒适的模型,他们说:“好吧,我们要成立这个游戏玩家边缘部门。”我们所有对此感兴趣的人,比如我和罗梅罗,汤姆·霍尔从他的角度在某种程度上帮助我们。杰会偶尔来看看,当时还有一些程序员和我们一起工作,我们打算开始制作游戏。就是同一个模型。我们投入其中,这太棒了。

“所以,你必须制作新游戏。”

“每个月。”

“每个月。”

“是的。回想起来,我曾做过所有这些合同编程工作,约翰·罗梅罗做得更多,他曾做过一项自学努力,他为字母表中的每个字母制作了一个游戏。就像,我要制作 26 个不同的游戏,给它们不同的主题。当你通过并以双周或月度等频率快速推出这些东西时,你会学到很多东西。”

“从头到尾。”

“所以,它不仅仅是一个想法。它不仅仅是从头到尾。它完成了,它必须完成,没有拖延,它完成了。”

“是的,你有截止日期。那种快速迭代的压力锅环境对我们所有人来说都非常重要,它培养了我们最终走向成功所需的技能。我是说,人们会说,就像披头士乐队的历史一样,不是他们成为了披头士,而是他们演奏了所有这些早期的作品,在他们成名之前,他们有机会打磨了所有的技能,这对他们后来的成功至关重要。我认为这里有很多这样的情况,我们制作了没人记得的游戏。很多小事情促成了我们最终成名的技能的积累。”

“陀思妥耶夫斯基写了《赌徒》,他必须在一个月内写完,只是为了赚钱。而且可能没人记得,因为他必须弄清楚,因为他真的没有足够的时间写得快。所以,想出一些技巧,实际上真的写得更快。”

“它归结于压力和资源限制出乎意料地重要。”

“是的。”

“而且在很多方面,这都是反直觉的,你只是认为如果你有无限的时间和无限的资源,你当然会得到更好的东西。但有时确实是这样,必要性是发明的母亲,你知道,当你有资源限制并且别无选择时。你所能做的令人惊讶。”

“你说,在那段时间里写过什么好游戏吗?”

“有些游戏现在玩起来仍然很有趣,它们都关于更现代的术语是‘游戏感觉’,关于事物确切的感觉,不是设计的宏大策略,而是跑步、跳跃和射击以及这些事物在当下感觉如何。其中一些你坐下来玩,你会觉得,有点不同。它没有相同的移动感觉,但你移动过去,你会觉得,‘砰,跳,砰’。就像,‘嘿,这仍然有点酷。’”

“所以,你可以沉浸在游戏的节奏中。你是指感觉吗?就像它有什么东西吸引着你。”

“如今,人们又在谈论强迫循环和事物,即你正在做什么,你的手指在键盘上做什么,你的眼睛看到什么。并且会有这些序列。抓住战利品,射杀怪物,跳过障碍物,到达关卡末尾。在很多方面,这些都是游戏设计的永恒方面。但所有这些都有好有坏的方法。我们制作了这么多游戏,我们为此进行了大量练习。”

“所以,当时发生的一件奇怪的事情是,约翰·罗梅罗收到了一些奇怪的粉丝来信。在那个年代,这是电子邮件出现之前的时代,所以我们有时会收到信件,告诉他,‘哦,我想和你谈谈你的游戏。’‘我想联系你,做些不同的事情。’最终,这些信都来自 Apogee Software 的斯科特·米勒,他试图联系我,他认为他无法直接联系约翰,他会被拦截。所以,他试图通过一种‘秘密’的粉丝来信方式让他联系他,因为他基本上说:‘嘿,我通过共享软件游戏赚了很多钱。’‘我想让你制作共享软件游戏。’”因为他看到过罗梅罗做的一些游戏,而我们看了斯科特·米勒的游戏,我们觉得它们不太好。我们觉得,他不可能赚到他说的那么多钱,比如 1 万美元。我们真的认为他在撒谎,试图引诱他加入。”所以,这在某种程度上正在发生,当罗梅罗意识到他把这些信钉在他墙上,上面写着他所有粉丝的名字时,那一刻很有趣。然后我们注意到,它们都有相同的回信地址,但名字不同,这有点像一把双刃剑。”

“但试图解开摆在他面前的谜题。”

“是的,我当时正在研究很多新技术,我第一次完全投入到 IBM PC 上,我一直坚持使用 Apple II。我爱我的 Apple II,那是我从小就一直想要的电脑。当我终于得到一台时,我有点坚持它,远远超过了它的使用寿命。”

“你会说它是你做过的最好的电脑吗?”

“我不会对此做这样的判断。但它的定位方式,尤其是在学校系统中,它影响了许多美国程序员,至少有 Apple II 进入学校,并且它们有足够的能力,发生了很多有趣的事情。在欧洲情况不同。你有你的欧米茄、雅达利和英国的橡树,以及其他不同的东西。但在美国,它可能是 Apple II,对我的那一代许多程序员产生了最大的影响。所以,我一直在深入研究 IBM,而且由于我搬到了一个我认识任何人都不认识的城市,我有一个小公寓,然后在 Soft Disk,再次,吸引我的东西,我有几个程序员比我懂得多,他们有一个图书馆,他们有一套书和一套杂志。他们有几年的杂志,《Dr. Dobbs Journal》以及所有这些包含信息的杂志。所以我完全沉浸其中。我吃、呼吸、睡觉、计算机编程,特别是 IBM 的一切。我一直在深入研究许多人们通常不关注的底层硬件细节。IBM EGA 卡的工作方式,这对我来说很有趣。我没有在那个层面上进行过经验。当时你可以获得硬件文档,就在寄存器级别。这是 CRTC 寄存器所在的位置,颜色寄存器的工作原理以及不同事物的应用方式。它们的设计都有原因。它们是为应用程序设计的。它们有预期的用途,但我开始寻找其他方式来利用它们,而它们最初并不是为了这个目的。”

“你能评论一下,首先,当时有什么操作系统?它是什么指令集?我们说的是什么?”

“所以,这是 Dawson X86。所以 16 位 8086,286 已经存在,386 也存在。它们很少见。我们有几个用于开发系统,但我们仍然针对更广泛的群体,所有这些都是 DOS 16 位。这些都不是 DOS 扩展器之类的东西。”

“与今天的系统相比,它有多么不同,它是类似的前身吗?”

“几乎没有。如果你打开 Windows 上的 command.com,你会看到一些残留的东西。但这是一个不同的世界。那是‘640K 足够了’的世界,而且没有任何东西是受保护的。它总是崩溃。你会在上面使用 TSR 或终止并驻留的技巧,这会导致配置问题。所有硬件都在你的 auto exec 中手动配置。所以,这是一个非常不同的世界。”

“代码还是一样的。”

“你仍然可以写。我最早的代码是用 Pascal 写的。那是我之前学到的东西。”

“所以,在 Basic 和 C++ 之间有 Pascal。”

“所以,当 basic 汇编语言和我的一些-”

“退一步。”

“是的,我的中间内容是,嗯,你必须为了性能,basic 太慢了。所以,我十几岁时作为合同程序员所做的大部分工作都是汇编语言。”

“你用汇编写游戏吗?”

“是的,完全用汇编语言编写游戏。那是成千上万行的三字母缩写指令。”

“你不会再次获得‘有史以来最伟大的程序员’的称号,除非你能用汇编写游戏,好吧。”

“但那又来了,每个人都写了,每个认真的人都用汇编语言写了他们的游戏。”

“相当认真,你听到了他说的话吗?每个人都很认真。”

“使用 Pascal 有点像一个例外,有一个著名的程序叫做《Wizardry》。那是早期伟大的角色扮演游戏之一。它是用 Pascal 写的,但几乎没有人使用 Pascal。但我确实学了 Pascal,我记得我做了我所有的,直到今天,我在思考某事时都会用数据结构来构思,我会打开一个文件,然后开始写 struct 定义,说明数据将如何布局。Pascal 对此有一定程度的形成作用,因为我记得我用 Pascal 的记录结构等来设计我的 RPG。所以我为 Apple IIGS 获得了一个 Pascal 编译器,我可以在上面工作。我开发的第一个 IBM 游戏,是用 Pascal 做的。而且,这实际上是一个有趣的故事,再次谈到约束和资源,我有一个 Apple IIGS,我没有 IBM PC。我想把我的应用程序移植到 IBM,因为我认为我可以从中赚更多钱。所以,我所做的就是租了一台 PC 一周,并买了一份 Turbo Pascal。所以我有一周很辛苦,这削减了我本已微薄的利润。但我有一周的时间拥有这台电脑。我必须在归还 PC 之前移植我的程序。”

“是的。”

“这就是我在 IBM PC 上做的第一件事,也是我后来去 Soft Disk 工作的原因。”

“还有 Turbo Pascal。它和普通 Pascal 有什么不同?它是不同的编译器还是什么的?”

“它是 Borland 的产品,在微软将其击败之前,它们是热门的开发工具公司。你有 Borland Turbo Pascal 和 Turbo C 和 Turbo Prologue,我意思是所有不同的东西。但他们所做的是采取一种极其务实的做法,制造有用的东西。这是 Pascal 是一门学术语言的一个很好的例子,你拥有像 UCSDP 系统这样的东西,Wizardry 实际上是用它写的,他们确实设法用它制作了一个游戏。但它不是一个非常实用的系统。而 Turbo Pascal 是,它之所以被称为 Turbo,是因为它的编译速度非常快,比当时大多数其他编译器快 10 到 20 倍。但它也提供了非常实用的访问方式,你可以用不同的方式直接访问硬件。我们有允许你做事情的库。这是一个写游戏的完美方式。这是人们谈论过的不同计算机发展道路之一,C 语言因为 Unix 和最终的 Linux 的原因而风靡全球。这绝非必然。人们可以提出有理有据的论点,如果世界走 Pascal 路线,可能会更好。我对这一点有些不确定,因为根据经验,我知道它足以做到这一点。而且它有一些根本性的改进。例如,它有一个可选的范围检查数组,可以避免 C 语言在安全领域中发生的许多危险。但 C 语言,它们基本上运行在相同的抽象级别上。它是一种系统编程语言。”

“但你说 Pascal 更侧重于数据结构。实际上,在语言的谱系中,Pascal 在 C 之前,它是否启发了许多-”

“它们相当同时期。所以,Pascal 的谱系发展到 Modula-2,最终发展到 Oberon,这是 Niklaus Wirth 的另一门实验性语言。但它们在那一级别上都足够好。现在一些经典的学术导向的 Pascal 缺少一些基本的东西。比如,哦,你无法访问这个核心系统,因为我们只是用它来教学生。但 Turbo Pascal 表明,只有适度的改变,它就能成为一门完全有能力的语言,而且它有一些原因可以将其实现为单遍编译器。所以,它可以快得多,尽管如果那样做,优化空间会小一些。而且它确实有一些范围检查选项。它有一些更好的类型能力。你会有正确类型的枚举等等 C 语言所缺乏的东西。但 C 语言也显然足够好,而且它拥有来自 Unix 生态系统的巨大惯性以及随之而来的一切。”

“垃圾回收。”

“不,它没有垃圾回收。”

“和 C 语言一样。”

“同样的手动。所以,你仍然可以拥有使用后冻结和其他问题,但仅仅消除数组溢出,至少如果你用那个调试选项编译,肯定会避免很多问题,并且可以带来很多好处。但,所以,无论如何,这是下一件事,我必须学习 C,因为 C 似乎是大多数事物的发展方向。所以我放弃了 Pascal,开始用 C 工作。我开始研究这些硬件的东西,处理图形控制器和 EGA 系统,以及我们最想做的事情。所以,当时我们坐在黑暗的办公室里玩各种街机视频游戏,我们正在思考我们想为我们的游戏玩家边缘产品做什么样的游戏。所以,我们有最早的超级任天堂之一,我们有一个旧的任天堂,我们看着所有的游戏。而这些游戏机所做的核心事情是 PC 游戏所没有的,那就是拥有一个巨大的滚动世界的能力,而你现在在 PC 和早期个人电脑上制作的大多数游戏都是静态屏幕。你在上面移动小东西,你像那样互动,也许当你移动时你会进入额外的屏幕。但街机游戏和游戏机拥有这种美妙的能力,可以拥有一个你正在缓慢移动窗口的大世界。对于那些类型的游戏,动作探索、冒险游戏来说,这是一件非常非常重要的事情。而 PC 游戏就是做不到的。我偶然发现了几种在 PC 上实现这一目标的技术。它们并不难复杂。当我解释它们时,它们非常直接,但就是没人这样做。”

“你听起来像爱因斯坦在描述他的五篇论文时说它们非常直接。我明白了。但它们仍然是革命性的。所以,横向滚动改变了游戏规则。”

“是的,它是滚动-”

“这是一项天才的发明。”

“有更严格的垂直滚动。一些游戏机在这方面有不同的限制,你只能做其中一个,而不能做另一个。即使在游戏机领域,也有类似的进展,比如最初的马里奥游戏只是水平滚动。然后后来的马里奥游戏增加了垂直方面以及你正在做的各种探索,以扩展那里的能力。而几十年来,早期游戏设计的很大一部分就是消除限制,让你做你作为设计师所设想的事情,你想让玩家体验的事情,但硬件却无法真正做到,或者你不知道如何实现。感觉不可能。”

“你可以想象你想创造一个巨大的世界,你可以在其中横向滚动,就像你可以走过一样,然后你问自己一个问题,我该如何构建它,以便延迟足够低,硬件能够以引人入胜的体验交付它。”

“是的,我们知道我们想做什么,因为我们玩了所有这些游戏机游戏,玩了所有这些任天堂游戏和街机游戏。显然,那里有一个很棒的世界,我们至少一开始在 PC 上做不到,因为每个程序员都可以告诉你,如果你想滚动,你只需要重绘整个屏幕。但事实证明,你每秒只有五帧。这不是一种互动有趣的体验。你想要每秒 30 或 60 帧。而且感觉似乎不可能。感觉 PC 必须快五倍才能在那里制作出可玩的游戏。有趣的是,我最终为滚动问题找到了两种完全不同的解决方案。这是贯穿一切的主题,所有这些重大的技术进步,结果总是会有几种不同的方法。而且这不像你找到了唯一正确的方法。当我们进入 3D 游戏等领域时,我们就会看到这一点。所以,滚动,我得到的第一个滚动技巧是硬件能够,你可以在内存窗口中移动。所以,当时的 EGA 卡有 256KB 的内存。而且它的设置很笨拙,是平面格式,而不是拥有 256 或 2400 万种颜色,你有 16 种颜色,也就是 4 位。所以你有四个位平面,每个 64K。当然,64K 是一个不错的数字,用于 16 位寻址。所以,你的显卡有一个 16 位窗口,你可以看到它,你可以告诉它在里面任何地方开始视频扫描。所以,有几个游戏采用了这种方法。如果你能制作一个 2x2 的屏幕或一个 1x4 的屏幕,你就可以很容易地滚动,你可以把它全部铺开然后四处移动,但你就是不能让它更大,因为内存就那么多。我关于滚动的第一个想法是,如果我们制作一个比屏幕大一倍的屏幕,我们通常有 16x16 像素的图块,你遇到的经典马里奥方块,很多艺术都是这样绘制的,而你的屏幕是特定数量的图块。但如果你有一个小缓冲区区域,你就可以轻松地在那个 16 像素区域内滚动,那将是完美的流畅。但如果你到达边缘并想继续前进呢?我们做的第一种滚动方式是我称之为自适应图块刷新,这实际上只是一个问题,你到达边缘,然后你回到原来的点,然后只更改实际不同的图块。在当时的大多数游戏中,如果你想想经典的《超级马里奥兄弟》游戏,你有大片的蓝天,长排相同的砖块纹理,而且有很多共同之处。这有点像数据压缩。如果你把屏幕拿下来叠在一起,一般来说,只有大约 10% 的图块实际上是不同的。所以,这是一种说,好吧,我要把它移回去,然后我只改变那些 10%、20%、无论多少百分比的图块。这意味着它实际上比重绘所有图块快五倍。这足以让我们为游戏玩家边缘制作很多游戏,我们有很多这样的滚动游戏,比如 Slurred Acts 和 Shadow Knights 等等,我们以这种高速度制作了这些游戏,它们具有这种滚动效果。而且效果很好。那里有一些设计上的挑战,如果你在整个屏幕上制作一个棋盘格,你滚动过去,每个图块都会改变,你的帧率现在是每秒五帧,因为它必须重绘所有东西。所以,设计师们有点担心,他们必须制作相对朴素的关卡,但仍然很神奇。这是我们以前从未见过的事情。我们做的第一件事是,我刚把这个弄好,汤姆·霍尔就坐在我旁边,我们看着旁边的超级任天堂,上面运行着《超级马里奥 3》,我们有技术,我们有工具在那里设置,我们熬了一整夜,我们基本上克隆了《超级马里奥兄弟》的第一个关卡。”

“性能方面也是如此吗?”

“是的,我们的小角色在那里跑跳。背景和所有东西都接近像素精确,但游戏玩法只是我之前写的游戏的拼凑而成。我只是把整个东西拼凑起来制作了这个演示。这是我很少做的通宵编程之一,我能想到的只有两个令人难忘的。一个是通宵编程,是为了让我们的《危险的戴夫》侵犯版权,我们这样称呼它,因为我们有一个叫做《危险的戴夫》的游戏,就是拿着霰弹枪四处射击。我们只是把我们当时最喜欢的游戏,《超级马里奥 3》,然后把戴夫放进去,用这种新的滚动技术,它运行得很流畅。我和汤姆第二天早上就离开了,把一张光盘留在了桌子上,让约翰·罗梅罗和杰·威尔伯看,然后说,运行这个。我们下午晚些时候才回来。他们抓住了我们,把我们拉进了房间。那一刻,他们说,我们必须做点什么。我们要成立一家公司,我们要自己做游戏。我们能够用一种体验的冲击来打动他们,‘哇,这比我们想象的要酷得多。’起初,我们试图让任天堂让我们在 PC 上制作《超级马里奥 3》。我们真的想这样做。我们说:‘嘿,我们可以完成这个。’‘这是视线范围,这会很棒。’我们给任天堂发了东西,我们听说它在日本被看了,但他们不感兴趣。但这是另一件可能完全改变生活的事情,我们可能在那时成为任天堂的 PC 团队。”

“然后《德军总部》和《毁灭战士》和《雷神之锤》的方向可能就是任天堂的创作。”

“是的,就在我们制作第一个滚动演示的同时,我们联系了 Apogee 的斯科特·米勒,说:‘嘿,我们想做一些游戏。’你认为你想要的东西,那些都不算什么,看看我们现在能做什么?这会很棒。’他立刻就来了,给了我们一张支票,当时我们仍然认为他可能是个骗子,他一直在撒谎。但他关于他通过共享软件游戏赚了多少钱是完全正确的。这是他关于这个的真正头脑风暴,共享软件是一种软件没有固定价格的想法。如果你使用它,你就出于好意给创作者一些钱。有几个实用程序确实取得了显著的成功,但总的来说,它并没有真正奏效。现在,纯粹的共享软件模式下并没有多少成功的软件。Apogee 的创新是拿一些东西,称之为共享软件,分成三部分。你总是制作一个三部曲,然后你发布第一部分,然后你以某种共享软件的价格购买整个三部曲,实际上,这意味着第一部分是一个演示,演示到处都是免费的,你付钱买整套,但它仍然被当作共享软件玩。我们很高兴第一部分到处传播。它不是一个残缺的演示,所有三部曲的第一集,它是一个真正的完整游戏,可能玩过这一部分的人的 20 倍,他们认为他们有一个很棒的游戏,对它留下了美好的回忆,但从未付给我们一分钱。但足够多的人对此感到满意,它确实非常成功。而这些我们不太看重的早期游戏,与商业质量的游戏相比,但它们做得非常好,一些相当粗糙的东西,人们,这是很好的生意,人们喜欢它。而且不像你是在赌博你得到什么。你只玩了三分之一的体验,你足够喜欢它,以至于手写一张支票,把它放进信封,写上地址,然后寄给 Apogee 来获取其余部分。所以,这是一个非常令人愉悦的商业前景,因为每个人都很高兴,他们知道他们寄出东西时会得到什么。而且他们会寄来粉丝来信,如果你费心写信封,你就会在里面写点东西。共享软件游戏有成袋的粉丝来信。所以,人们喜欢它们。”

“我应该提到,对你来说,财富的定义是随时可以吃披萨。对我来说,这是一个梦想,因为我会一遍又一遍地玩共享软件游戏,免费的部分一遍又一遍地玩。这是一个非常有意义的经历。但我梦想着有一天我能负担得起完整的体验。这就是地平线之外的梦想之地,在那里你可以发现还有什么。在某种意义上,即使只是玩共享软件,它的局限性,生活是有限的,最终都会死去。从这个意义上说,共享软件 somehow 令人非常满意,有一种神秘的东西超越了免费的东西。我不知道,也许是因为我童年的一部分是玩共享软件游戏。那是一次非常有意义的经历。很有趣的是,那个模型仍然给这么多人带来了快乐。玩过它的人的 20 倍。”

“是的,我对此感觉很好。我遇到过人们,他们会说,哦,我喜欢你早期那个游戏,《Commander Keen》,或者别的什么。他们指的是他们到处都能看到的第一个剧集。”

“那是我,我玩了《Commander Keen》玩得太厉害了。”

“那都很好。”

“是的,是的。”

“所以,我们处于这种情况,斯科特·米勒只是给我们预付现金说,是的,做一个游戏。但我们没有正确地按下扳机说:‘好吧,我们要辞职了。’我们想,我们要两者兼顾。我们要继续在 Soft Disc 工作,同时还要为 Apogee 制作一个新游戏。这最终导致了一些法律问题,我们遇到了麻烦。最后都解决了,但当时不是一个好决定。”

“你当时的法律头脑并不出色。你不是从法律角度思考的。”

“不,我绝对不是。我们都不是。事后看来,是的,就像我们怎么认为我们会逃脱,甚至使用我们的工作电脑为我们新成立的公司编写软件。那不是一个好计划。”

“《Commander Keen》是怎么来的?”

“所以,设计过程,我们从,我们有一些想法,我们想做什么。我们想做一个类似马里奥的游戏。它将是一个横向卷轴游戏,它将使用这项技术。我们对它看起来应该是什么样子有一些感觉,因为自适应图块刷新技术的限制。它必须有相对恒定的图块区域。你不能只是画一个背景然后移动它。早期的设计,所有《Commander Keen》的设计都来自汤姆·霍尔,他是早期 id Software 作品的主要创意人物,我们有一个有趣的划分,汤姆是所有创意和设计。我全是编程,约翰·罗梅罗是一个有趣的桥梁,他既是一个非常好的程序员,也是一个非常好的设计师和艺术家,并且在这些领域之间游走。但《Commander Keen》非常像是汤姆·霍尔的孩子,他想出了所有设计和背景故事,关于一个疯狂的科学家小男孩,我,建造一艘火箭飞船和一把电击枪,访问外星世界,做所有这些背景,我们把游戏放在里面。这些东西并没有太多。对我们来说,设计总是我们所需要的,以便制作一个非常有趣的游戏。我们制定了我们的,我们制定了我们的第一套三部曲游戏,共享软件公式。它将是三部分。我们将制作《Commander Keen》一、二、三。我们真的开始努力工作。它进展得非常快。就像三个月左右,虽然我们还在为游戏玩家边缘每月制作游戏,我们在这两者之间共享技术。我会写很多代码,然后我们就会同时使用它。再次,那不是一个特别好的主意,它给我们带来了后果。但在三个月内,我们推出了我们的第一个游戏,突然之间,它的成功程度是 Apogee 之前最成功游戏的 3 倍。我们立即从《Commander Keen》的东西中赚了大约 3 万美元。这再次让我们感到惊讶。这比我们预期的要多。我们说,好吧,我们肯定会继续推出另一套作品。在这三个月里,我找到了一种更好的滚动技术方法,而不是自适应图块刷新,这在某些方面甚至更简单。这些东西,许多伟大的技术思想都是在便签纸上设计的。我评论现代机器学习,过去十年中所有真正重要的东西,每一个都适合写在便签纸上。它们是简单的小东西,不是非常密集、难以理解的技术。所以,第二个滚动技巧只是一个问题,就像,好吧,我们知道我们有这个 64K 窗口,问题总是像,嗯,你可以做一个 2x2,但你不能超出边缘。但我终于问了,如果你超出边缘会发生什么?如果你把你的起点说成,好吧,我可以移动过去。我正在滚动,我可以移动过去,我可以向下移动。我正在滚动。我到达了内存窗口的底部。就像,好吧,如果我继续前进,我说我将从 FFFE 开始,在 64K 块的末尾,结果它只是绕回到块的顶部。我心想:“哦,这让一切都变得容易了。”你可以滚动屏幕,你只需要绘制一行新的图块,你暴露的所有东西,它可能与屏幕内存的各个部分不对齐,但它就是有效。这不再有问题,你必须有相似颜色的区域,因为无论你做什么,你都可以拥有一个完全独特的世界,你只是绘制新出现的条带。”

“但它可能像你说的,不对齐,所以它可能到处都是。”

“是的,结果并不重要。我会有两个页面翻转的屏幕。只要它们不重叠,它们就会在这个二维图形窗口中连续移动。这是其中一个,嗯,这太简单了,它就是有效。它在那里更快。似乎没有缺点。有趣的是,在我们发布了带有这个的标题之后,出现了所谓的超级 VGA 卡,那些允许更高分辨率和标准卡没有的不同功能的卡。在其中一些卡上,这是一个奇怪的兼容性问题,因为没有人认为这不是它的设计目的。其中一些卡有更多的内存,它们有超过 256K 的四层。它们有 512K 或 1MB。在其中一些卡上,我向下滚动窗口,然后它进入了实际存在的初始化内存,而不是绕回到顶部。然后我陷入了困境,我必须跟踪每一个吗?当时真是疯了,有 20 家不同的显卡供应商,他们对非标准功能的实现略有不同。所以,我需要直接为所有 VGA 卡编程,将内存映射进去,然后继续滚动。或者我选择了一个简单的解决方案,当你最终到达屏幕边缘时,我接受了一个卡顿,然后复制了整个屏幕。所以,在其中一些卡上,这是一个兼容模式。在正常的卡上,当一切正常工作时,一切都非常流畅。但如果你有一张卡,它不像我想要的那个方式环绕,你就会滚动,滚动,然后最终你会有一个小卡顿,大约 200 毫秒,不是很流畅。”

“是的,它冻结了一会儿。这是一个二元的事情。它是标准屏幕之一,还是奇怪的屏幕之一?超级 VGA 的。”

“是的。”

“好的。”

“所以,我们默认使用,我想这是随着部署过程而改变的,早期我们有一个正常模式,然后如果你在游戏的某个点屏幕出现疯狂闪烁,你就会启用兼容标志。然后后来,我认为它可能默认启用了,因为越来越多的卡。它没有完全做对。这就是使用技术做非传统事情的双刃剑,你可以找到一些没有人想过要做的事情,比如那个滚动技巧,当他们设置那些卡时。但没有人认为那是主要原因,当我依赖它时,它在一些后来的卡上就坏了。”

“让我稍微跑题一下,但问你关于黑客精神,因为你提到了共享软件,这是一个有趣的世界,赚钱的人的世界,商业和构建系统的人,工程师。黑客精神是什么?你一直是一个人民的代表,并且至少体现了那种精神的一部分。它意味着什么?它对你当时意味着什么?它对你今天意味着什么?”

“所以,斯蒂芬·利维的《黑客》一书对我十几岁时产生了深远的影响。我读了好几遍,里面有早期麻省理工学院黑客时代的各种传说,最后以,它贯穿了早期的麻省理工学院黑客,然后是硅谷硬件黑客,然后在第三部分是游戏黑客。当时我十几岁,我确实在某种程度上感到苦涩。我以为我生晚了,我以为我错过了机会,我真的认为我属于书中第三部分的那个游戏黑客。他们谈论的是塞拉的威廉姆斯和理查德·加里奥特的起源系统,我真的很想在那里。我知道那已经是几年前的事了,但不可能了,但早期,尤其是早期的麻省理工学院黑客时代,很多人都在谈论黑客精神,认为这是关于分享信息,做好事,不要把它藏起来,而且它不是一个零和游戏,你可以与另一个程序员分享一些东西,它不会从你那里拿走。然后你就会有别人在做事情。而且我也认为,它有一个方面是能够从别人的成就中获得快乐,而不是那种‘我必须是第一个,我必须被公认为做这件事的人’的竞争。而是能够看到别人做某事,然后说,“我的天,太棒了。”然后从别人做出的令人惊叹的事情中获得快乐。我通过 id Software 能够做到的最重要的事情是,最终能够发布我们大多数,比如我们所有开创性游戏的代码。这是一个,这是一个循序渐进的过程,我们早期就感到惊讶,人们能够破解现有的游戏。当然,我有这方面的经验。我记得破解我的《创世纪》副本,所以我给自己 9999 枚金币,提高我的等级,然后破解扇区编辑器。所以我熟悉所有这些。所以,当我开始看到人们对我们的游戏这样做时,我微笑着。为《Commander Keen》制作关卡编辑器,或者破解《Wolfenstein 3D》,但我提出了内部的建议,我们应该发布我们自己的工具,比如我们用来创建游戏的工具。这有点可疑,嗯,我们会给人们一个优势。总是会想,‘这对竞争对手意味着什么?’”

“是的。”

“但真正艰难的提议是发布游戏的完整源代码,这与公司里的其他人之间是一种平衡。有趣的是,程序员们通常会理解,当然,我密切合作的人们,他们确实理解那种黑客精神,你想要分享你的代码,你为此感到自豪,你希望别人拿走它并做一些很酷的事情。但有趣的是,更广泛的游戏行业比我们 id Software 的团队更不愿意接受这一点。我一直觉得很有趣的是,游戏模组社区的许多人对他们的代码非常占有欲。他们不想分享他们的代码,他们希望它是他们的,这是他们成名的资本。这更像是我们通常看到的艺术家,艺术家理解一些关于功劳和希望它被认为是他们的作品。而许多游戏程序员,感觉更像艺术家而不是黑客程序员,因为这是关于创造一些对他们来说感觉更像艺术的东西,而不是更偏向工具和探索性的黑客文化方面。”

“是的。所以,这种担心功劳不会被充分归于你的恐惧真是太有趣了。”

“这是我经常遇到的事情之一,因为我尽量不装腔作势。我的意思是,对我来说很容易说,因为 id Software 方面得到了很多赞誉。但当人们过来,他们想争论,说不,第一个人称游戏不是这样来的。你可以指出一些我从未意识到的晦涩的标题,或者像旧的 Plato 系统,或者每台个人电脑都有一些 3D 左右的东西,我很高兴地说,不,我的意思是,我看到了《Battle Zone》和《Star Wars》在街机上。我见过 3D 图形,我见过所有这些东西,我站在很多人的肩膀上,但有时他们举出的例子,就像,“不,我不知道它存在。”我的意思是,我以前从未听说过,它也没有为我所做的贡献。但有很多东西确实有。而且我认为有很好的论据,显然《毁灭战士》、《雷神之锤》和《德军总部》是之后所有事物的开创性例子。但我不需要去争论并声称拥有任何东西的优先权或最初发明权。但很多人确实想要。”

“我认为当你这样争取功劳时,它就违背了黑客精神,你破坏了文化中,社区中构建酷东西的根本。我认为功劳最终,我有一种,有一种著名的摔跤手和自由式摔跤手,叫做 Tatsuhiro Saito,他总是宣扬你应该只专注于摔跤的艺术,让人们随意书写你的故事。艺术的最高形式就是专注于艺术。这是黑客精神的一部分,就是专注于构建酷的东西,与其他人分享,功劳最终会在历史的长河中得到正确的分配。”

“是的。我通常认为这是真的,而且你有,就像,有些东西,有些图形技术被称为 CarMax Reverse,字面意思是这样命名的,结果我并不是第一个弄清楚这一点的人。就像大多数科学事物或数学事物一样,你最终会发现,‘哦,这个人实际上比我早一点做到了。’然后有些事情被归功于我,比如我实际上没有做的反平方根技巧。我完全不是我。这很奇怪,互联网的模仿力量。我无法说服人们,是的。”

“现在一切都被归功于你了,即使你从未寻求过这些功劳。我的意思是,但这种谦逊吸引了这些归因。让我们谈谈一个游戏,对我来说,有史以来最伟大的游戏之一。我知道你可以谈论《毁灭战士》和《雷神之锤》等等,但对我来说,《德军总部 3D》就像,哇,它让我大吃一惊,这样的世界竟然可以存在。那么,《德军总部 3D》在编程、设计以及一些令人难忘的技术挑战方面是如何诞生的?还有你实际上还没有提到的东西。”

这是你的想法如何进入你的脑海,自适应的横向滚动。所以,这些技术挑战的解决方案。——所以,我通常可以内省地回顾,非常详细地描述技术解决方案和我的设计选择是如何产生的。在技术上,我们之前已经做了两个这样的游戏,3D游戏,比如“悬浮坦克”,它是第一个有平面着色墙壁的游戏,但里面有缩放的敌人。然后是“地下城3D”,它有纹理墙壁、缩放的敌人以及更多功能,比如消失的墙壁和其他一些东西。但从游戏开发的角度来看,真正有趣的是,像“地下城3D”、“悬浮坦克”和“德军总部”这样的游戏,它们在很多角色行为上使用的代码与我早期制作的一个名为“地下城”的2D游戏几乎完全相同,那是一个俯视视角的游戏,有点像“Gauntlet”,你在里面跑来跑去,可以开门,捡东西,基本的游戏操作。想法是,这种完全相同的游戏体验,只是以不同的视角呈现。它可能完全是同一个游戏,只是从不同的角度来看,会对玩家产生截然不同的影响。——所以,你不是说它是真正的3D,而是说你可以“假装”它是3D。你可以像缩放敌人一样,也就是说,离你远的东西,你可以让它们变小。——所以,从游戏来说,它是一个2D地图,就像我们所有的游戏一样,我们使用相同的工具进行创作。我们使用相同的地图编辑器来创建“Keen”、“Wolfenstein”、“Hover Tank”和“Catacombs”以及所有这些东西。所以,游戏是一个由方块组成的2D网格,你可以说,这些是墙壁,这些是敌人开始的地方。然后它们开始移动。像“Catacombs”这样的早期游戏,你玩的时候严格来说是2D视角。它是一个滚动的2D视角,当时是利用自适应瓦片刷新来实现的。然后想法是,这些早期游戏,它们所做的就是采用相同的基本敌人逻辑,但不是从上帝的视角俯视,而是你身处其中,左右转动你的视野,前后左右移动。这是一个令人震惊的事情,你总是说想要隔离和分解数值的变化。而这是其中最纯粹的案例之一,游戏的其他部分变化很小。我们通常会改变某些东西的颜色,然后为它画一张不同的图片,但本质上是一样的。但是视角发生了根本性的变化,而且效果截然不同。我仍然记得艺术家Adrian的反应,他一直在为游戏绘制图片,我们在“Catacombs 3D”中有一个很酷的大型巨魔,我们有这些墙壁,你可以拿到一把钥匙,然后让方块消失,非常简单的东西,方块要么存在要么不存在。所以,我们对门的想法是能够让一组方块消失。我记得他的反应,他画了这些角色,他慢慢地移动,人们没有3D导航的经验,一切都还是键盘操作。当时我们甚至还没有设置鼠标。但是慢慢地移动,向上走,捡起一把钥匙,走到一堵墙边,墙壁消失了,有一个小动画,然后一个怪物就在那里。他几乎从椅子上摔了下来。他只是说,“啊”。游戏当时根本不这样做。游戏是上帝的视角。你对你那个小角色有点投入,当事情发生时,你可以高兴或悲伤,但你就是得不到那种惊吓的反应。——你不在你的游戏里。——你大脑的某个地方。某种爬行动物的大脑在说,“哦,该死,发生了一些事情。”而那是早期的一个关键时刻,就像,是的,这将产生影响。这将是强大的,它将很重要。——你能在构思阶段就想象到这一点吗,还是不能?——不是完全一样。所以,再次,我们有像街机游戏“Battle Zone”和“Star Wars”这样的例子,你可以看到一个3D世界,东西向你冲来,你对此有所感觉。但没有游戏做到我们正在做的那种世界和那种动作。当时的3D很大程度上是关于模拟的想法。而这是,如果不是因为id Software在游戏中的方法,这可能会朝着不同的方向发展,当时有飞行模拟器,有驾驶模拟器,你有像“Hard Drive”和“Microsoft Flight Simulator”这样的游戏,它们在做3D和通用3D,而且比我们做的游戏更灵活。但它们被视为模拟。它们不一定追求速度或响应性,也不让你做一些激动人心的机动,因为它们试图模拟现实,它们借鉴的是大型系统,比如Evans and Sutherland和Silicon Graphics在做的事情。但我们借鉴的是家用机和街机游戏,我们想要的是那种能让你投入硬币、节奏快、能把你甩来甩去的游戏,而不是让你平稳地从一个地方滑到另一个地方。——所以,投入硬币的游戏。——有趣的是,其中很多都融入了我们,所以“Wolfenstein”仍然有生命,你还有这些游戏中最大的强化道具之一,就像一条额外的生命,因为你一开始有三条生命,你失去生命,然后就游戏结束了,而且当时大多数游戏都没有存档。说出来可能有点疯狂,但在“Doom”中没有生命是一种创新。你可以想玩多久就玩多久“Doom”。你只需要在关卡的开头重新开始,为什么不呢?就像我们不是在试图拿走人们的硬币,他们已经为整个游戏付了钱。我们希望他们玩得开心,而且你会有一些老派的纯粹主义者可能会认为,从头开始完成史诗般的旅程,在一定次数的尝试后必须从头开始,这有什么意义。但现在,当你让人类在卡住的时候继续尝试,而不是让他们从头开始学习不同的东西时,会获得更多的乐趣。——所以,你推荐了这本书,“Game Engine Black Book Wolfenstein 3D”,用于对游戏进行技术探索。那么,回望30年,有哪些令人难忘的技术创新,使得这种视角转变到这个令人身临其境的世界,以至于怪物出现时会让你感到害怕?你不得不解决哪些问题?——所以,回到关于截止日期和资源限制的主题,一个有趣的事情是,我们发售了“Catacombs 3D”,我们本来应该按月发布给Gamers' Edge,但我拖延了,我实际上迟到了,拖了六周,因为这是我以前从未做过的纹理贴图墙壁。在六周的时候,它仍然有点故障和错误。我知道有些事情,比如如果有一堵墙几乎是边缘对边缘的,你就可以滑到它旁边,然后你就能看到一些东西失控或消失或不起作用。我讨厌那样,但我已经没有办法了。我们必须发布游戏。它仍然很有趣。它是新颖的,没有人见过。它给了你那种惊吓的反射反应。所以,它值得发布,但它有一些我当时知道是有点不稳定和粗糙,不是我真正引以为豪的东西。所以,我在“Wolfenstein”中做的一件非常不同的事情是,我去了,而“Catacombs”几乎使用了传统的方法,你有一个一个维度的多边形片段,它们被裁剪和背面剔除,就像专业人士使用的非常粗糙的3D引擎一样。但我没有做好。我做得不够好。我真的没有视线来修复它,对吧?当然,我回顾的时候,会觉得,哦,这很明显该怎么做,怎么做数学?正确裁剪,检查所有这些,如何处理精度。但当时我不知道怎么做。——那是你写的第一个3D引擎吗,“Catacombs 3D”?——“Hover Tank”在那之前不久,但它有平面着色的墙壁。所以,墙壁上的纹理贴图带来了一些挑战。这对我来说很难,当时我没能正确解决。——你能描述一下平面着色和纹理贴图吗?——所以,“Hover Tank”中的墙壁是纯色,16种颜色之一。所以,这很简单,很快。你只需要为所有东西绘制纯色。纹理贴图是我们今天看到的那种,你有一个图像被拉伸和扭曲到你正在处理的墙壁或表面上。我花了很长时间才弄清楚如何做到这一点而不产生错误的扭曲,而且我在“Catacombs”中并没有完全弄对,而且我有一些缺陷。所以,这对我来说足够重要,以至于我没有继续在这上面钻牛角尖,因为我不能确定我能做到,我采取了一种完全不同的方法来绘制,来确定墙壁在哪里,那就是射线投射法,我在“Catacombs 3D”中做过,我有一些C代码试图让它正常工作,但它没有正常工作。在“Wolfenstein”中,我最终转向了非常少量的汇编代码。所以,从某种意义上说,这应该是一种更慢的方法,但通过减少工作量,我可以更紧密地优化它,它奏效了。而“Wolfenstein 3D”简直是坚如磐石。里面没有任何故障。游戏几乎通过了所有这些,我为此感到非常自豪。但最终,就像在后来的游戏中一样,我回到了更基于跨度的东西,当我真正弄清楚如何做到这一点时,我能获得更高的整体效率。所以,对于“Wolfenstein”来说,有两个关键的技术方面。一个是射线投射法,直到今天,你仍然看到人们说让我们写一个射线投射引擎,因为它是一种易于理解的做事方式,可以让你制作出非常像那样的游戏。所以,你可以在JavaScript中看到射线投射器,在Python中看到射线投射器,人们基本上在重新实现这种方法,将一个瓦片世界投射出去。它效果很好,但不是最快的方法。——你能描述一下射线投射是什么吗?——所以,你开始的时候,你有你的屏幕,当时是320像素宽,如果你没有缩小窗口以获得更快的速度。在每个像素处,从你的世界中的位置出发,都会有一个角度,你将沿着那个角度一直运行,直到碰到一个方块。所以,最多320次,它会从你的起点向世界投射一个投射数组,直到它碰到一堵墙,然后它就能确切地知道它在墙上的哪个点碰到。性能挑战在于,它在穿过每个方块时都会检查,这是一个实心墙吗?所以,这意味着在像早期的“Wolfenstein”关卡中,你身处一个小牢房,走向一条小走廊,这对它来说非常高效,因为你只跨越三四个方块。但如果有人制作了一个房间,覆盖了,我们的地图限制在64x64方块。如果你制作了一个房间,里面全是墙壁,它会相当慢,因为它会跨越80个瓦片测试或类似的东西。——顺便说一句,我们宇宙的物理定律似乎也在竞争这个。所以,这很好地映射到了我们世界的实际物理定律。——是的,你会有……——直观地——我稍微理解一点,比如斯蒂芬·沃尔夫勒姆关于互联网络信息状态的工作,这超出了我能发表意见的范围。但有趣的是,人们正在考虑这样的事情,并且有支持它们的东西。是的,那里有很多有趣的方面。——所以,“Wolfenstein 3D”使用了射线投射。——所以,射线投射,然后另一个关键方面是我称之为编译缩放器,你在这个早期的经典街机游戏中看到了这一点,比如“Space Harrier”之类的,你拿一张图片,通常直接画在屏幕上,然后如果你有能力让它变大或变小,大块的像素或模糊的、小的采样像素。这就是我们在这些3D游戏中角色的基本方面。你会有,就像你可能画了一个很小的角色,但现在我们可以让它们变得非常大,让它们变得非常小,然后移动它们。这就是我们对角色有限的3D能力,让它们转身,实际上有八种不同的视角。你实际上没有一个可以旋转的3D模型,你只有这些纸板剪影,但这足以产生那种惊吓的战斗反应,而且这是我们当时必须处理的事情。所以,一种直接的方法是,你可以写出你的双重嵌套循环,你有你的拉伸因子,就像你有一个点,你稍微拉伸一点。它可能在同一个像素上,可能在下一个像素上,可能跳过了一个像素。你可以写出来,但它不够快,尤其是当一个角色离你很近时,怪物几乎覆盖了整个屏幕。用一个通用缩放例程来做这件事,会太慢了。当角色很小时,它会起作用,但当它们离你越来越近时,它会越来越慢,直到你最需要快速反应的时候,游戏就会卡顿。所以,当时绘制像素最快的方法是,而不是说,我有一个通用版本,可以处理任何比例,我使用了一个程序来制作大约一百个或更多的独立的小程序,这些程序是为“我将获取一张图片,然后将其绘制成12像素高,我将获取一张图片,然后将其绘制成14像素高,每隔两个像素向上”,所以,你会有最优化的代码,所以,在大多数情况下,世界大部分是相当大的,比如像素很大,我们没有很多内存。所以,在大多数情况下,这意味着你将加载一个像素颜色,然后将其存储多次。所以,这比在普通情况下复制图像要快,因为大多数情况下图像是扩展的。所以,而不是做一个简单的复制,一个读取,一个写入,你可能要做一个读取和三个或四个写入,因为它变得非常大。这有一个有益的方面,就是当你最需要性能的时候,当东西覆盖屏幕时,它会给你最大的加速。——顺便说一句,你是通过思考来理解这个的,还是你在测试正确的速度?——所以,这又回到了,我可以找到这些东西的先例。所以,在Apple II时代,图形基本上是一次一个比特。如果你想让你的小飞船,你想让它平稳地穿过世界,如果你只是把图像拿到下一个位置画出来,你一次会移动七个像素。所以,它会“咔哒,咔哒,咔哒”。如果你想让它平稳移动,你实际上必须制作七个预移位的飞船版本。你可以写一个程序动态地移动它,但在一个一兆赫兹的处理器上,这速度不会很快。所以,如果你想做一个平稳快速的动作游戏,你就必须为每个精灵制作单独的版本。现在,你可以做一些额外的技巧,如果它仍然足够快,你可以制作一个编译形状,而不是这个程序通常会复制一个图像,然后说,从这里获取这个字节并存储在这里,获取这个字节并存储在这里。如果你有内存空间,你可以说,我将编写一个程序,它只绘制这个形状。它会是这样的,“我将加载立即值25,这是一个位模式。然后我将把它存储在这个位置,而不是从内存中加载涉及寄存器索引和其他慢速的东西。”你可以继续说,不,我将硬编码图像的所有确切值到程序中。这总是一个糟糕的权衡,但你没有多少内存,也没有多少速度。但如果你想要一些东西运行得非常快,你可以把它变成一个程序。了解这种技术让我思考一些事情,为PC展开它,那些没有这个背景的人不太可能想到这一点。——我的意思是,这与人类认知也有一些深刻的相似之处。优化和压缩新信息的处理需要你预测游戏或世界可能展开的各种方式。你有一个编译缩放器之类的东西。所以,你有一个对世界如何展开的预测,并且你有一个优化的数据结构来支持这个预测。然后,如果世界证明不同,你可以稍微修改一下。——而且,就构建技术而言,大脑的很大一部分是关于联想语境的。当你学到某样东西时,它是在另一个东西的语境中,你可以有一些微弱的、微小的提示。我认为有一些深刻的东西,比如稀疏分布式记忆和增强。就像,如果你能稍微高于噪声基底,有一些东西的提示,你就可以把事情提炼出来,把记忆拉回来。所以,作为一个程序员,拥有一个工具箱,里面有我以前编程任务的所有这些东西,它们仍然对我很有意义,关于我如何能够提取出其中一些东西。就像在这种情况下,是我曾经在Apple II上做过的事情,现在对PC来说仍然相关。我仍然有这样的情况,当我从事移动开发时,我会想,“好吧,我在Doom时代做过类似的事情,但现在环境不同了,”但我仍然有那个联系。我可以把它带进来,然后把它转化为世界现在需要的东西。而且,我认为这实际上是人类认知和大脑运作的核心要素之一,就是找到这些方法,你的大脑就像一切都在同时发生。它只是所有这些东西的一个集合,通过查询被提取回来,这些查询进入它,它们可能只是稍微高于噪声基底,你的神经元和突触中的随机噪声会影响确切被提取出来的东西。——所以,你的意思是,你为不同的游戏找到的这些非常具体的解决方案,你发现其中有一个深刻思想的核心,可以推广到其他事情上。——是的,你无法预测它会是什么,但那种想法,比如,我在为“Game Engine Black Book”写的序言中称之为编译着色器,就像代码展开的终点。但这是其中之一,思考它并把它放在你的脑子里,我敢肯定有些程序员听到这个,想一想,这是一种令人惊叹的时刻。就像,“哦,你可以把所有这些数据变成代码”,现在你有指令缓存问题,这不一定是最好的主意。但有不同的,它是一个有力量的想法,并且可能在其他领域也有相关性。也许是从硬件的角度来看,你有一种构建硬件的方法,它具有相同的,你甚至不需要考虑迭代,你只是把所有东西都烘焙到里面,在一个地方。——你为什么会开始编程Doom?游戏中有哪些令人难忘的技术挑战或创新?——所以,在“Wolfenstein”发布之后,我们走上了一条疯狂的道路,Keen 1到3比我们预期的更成功,Keen 4到6,更成功,Wolfenstein,更成功。所以,我们走上了一条疯狂的轨迹。所以,实际上我们的第一个商业项目是Commander Keen游戏,但“Wolfenstein”将有一个游戏,叫做“Spear of Destiny”,这是一个商业版本,有60个新关卡。所以,团队的其余人基本上采用了游戏引擎,然后开始工作。我们有了新的怪物,但基本上是现有东西的重新着色。关于这一点,有一个非常有趣的方面,我直到很久以后才意识到,那就是“Wolfenstein”显然已经达到了它的极限,你不想玩所有关卡,还有我们的一些授权项目。有一个硬性的创意墙,你继续在这个上面打磨并没有太多好处。但像“Doom”和其他更现代的游戏,比如“Minecraft”之类的,它们有一种图灵完备的设计自由度,你在“Wolfenstein”中显然处于一边,世界上所有的创意人士,都无法仅仅用“Wolfenstein”的技术来创作杰作。Wolfenstein可以做Wolfenstein,但你真的不能做一些疯狂而不同的事情。但它不需要太多的能力就能达到Wolfenstein,拥有自由的线条和更多的艺术自由,就能达到人们至今仍在宣布新的Doom关卡的地步,而且多年来都没有完全耗尽创造力。——你怎么称之为图灵完备的?——就像图灵完备的设计空间。——设计空间。——就像我们在很多事情上都有计算通用性,以及不同的基底如何工作。但是的,有些事情是,一个盒子可以太小,但超过某个点,你就差不多到了那个点,你几乎拥有无限的创造力。——而Doom是你第一次跨越那条线。——是的,有成千上万的Doom关卡被创建,其中一些仍然有新的、有趣的东西可以告诉世界。——那条线,你能内省一下那条线是什么吗?它在设计空间里吗?是关于你能够添加到游戏中的编程能力吗?——所以,图形保真度是必要的,因为“Wolfenstein”中的方块限制,我们当时拥有的还不够。全尺寸的方块,虽然“Minecraft”确实表明,也许堆叠在3D中的方块,而且其体积是其四分之一或八分之一,就足以拥有这一切。但我们在“Wolfenstein”中拥有的墙壁大小的方块对创造力来说是太大的限制了。我们把技术授权给了其他几个团队。他们都没有取得太大的进展。只是创意能力不够,但多一点点,无论是“Doom”中的可变地板和天花板以及任意角度,还是“Minecraft”中的更小的战壕方块,就足以打开它,获得无数新的能力。——什么是二叉空间分割?这是其中一项技术,对吗?——是的,所以我们稍微跳了一下故事线。——是的。——所以,当团队还在为“Wolfenstein”工作“Spirit Destiny”的时候。我们在威斯康星州遇到了另一个开发团队,Raven Software,他们有RPG背景,我仍然很喜欢。我主动为他们做一个游戏引擎,让他们做一个3D渲染的RPG,而不是像大多数RPG游戏那样是手绘的。他们让它看起来有点3D,但它是通过艺术家工作完成的,而不是真正的引擎。在“Wolfenstein”之后,这仍然是一个基于瓦片的が表示,但我增加了地板和天花板,一些照明,以及在不同区域拥有倾斜地板的能力。那是我为一款名为“Shadow Caster”的游戏准备的中间步骤。它慢了下来,不够快,无法进行我们的那种动作。所以,屏幕裁剪得有点小,所以你不能达到全屏宽度,就像我们在“Wolfenstein”中尝试做的那样,但我学到了很多。我得到了地板和天花板以及照明,它看起来很棒。他们是那里的伟大艺术家。它启发我们看一些那方面的东西。但我从中学到了足够多的东西,我有了计划,我知道更快的照明和阴影方法,我想做这种自由形式的几何。我想摆脱这种基于瓦片、90度世界的限制。所以,那时我们得到了我们的下一代工作站,我们正在使用这些更强大的系统,我们构建了一个编辑器,让我们能够绘制任意的线段。我努力想做出一些能够足够快地渲染的东西。我对自己要求很高。我们已经到了可以看到一些看起来非常酷的东西的地步,但对于我当时的方式来说,它不够快,对于这种灵活性,它不再是,我不能再用射线投射了。我有很多复杂的线段和简单的世界是可以的,但我们想要做的酷东西,就是不够快。然后我休息了一下,我做了移植,我把我们的游戏“Wolfenstein”移植到了Super Nintendo。这是一件极其困难的事情,因为它有一个更慢的处理器。它就像一个几兆赫兹的处理器。我们把工作外包了,但进展不顺利。我把它拿回来,试图让它在那里运行得更快,但它确实没有多少处理能力。像素被极大地拉伸了,看起来相当丑陋,但最终它确实运行得足够快,可以玩,而且仍然很有趣。但那是我开始使用BSP树或二叉空间分割树的时候。这是我必须让它更快的东西之一。这是一个垫脚石,在“Wolfenstein”的网格世界中,它相对容易理解,因为一切仍然是90度角。BSP树,我用它来让自己轻松上手,而且非常成功。然后当我回来继续开发“Doom”时,我有了这个新工具。对于“Doom”的任意角度来说,这会更难。这就是我真正开始处理Epsilon问题的时候,直到那时,我才真正不得不处理这样一个事实,我有很多数字问题。这几乎让我感到背叛,因为人们告诉我,我把数学家放在了一个很高的位置,他们认为我是一个数学奇才,但我不是。我真的,我所做的一切都是基于扎实的高中数学理解,代数二,三角学。这就是我一路走到“Doom”和“Quake”以及所有这些的,只是理解矩阵的基本原理,并且足够了解它来做一些事情。——你遇到的Epsilon问题是什么?——所以,当你取一个,比如一个斜线,然后你说,我要把它与另一条斜线相交,然后你会得到一个不在这些漂亮的网格边界上的东西。在“Wolfenstein”的瓦片地图中,你只有水平线和垂直线,从上面看。如果你切断其中一条,另一条就会在那一点被切断,这是显而易见的。但当你有了斜线时,你就是在做一个斜率截距问题,你会得到有理数,这些数字不会均匀地落在整数或你拥有的任何固定点值上。所以,一切最终都必须捕捉到某个固定点值。所以,线条的角度会稍微改变。你会得到,如果你在这里切断某样东西,这个会向这个方向弯曲一点,它不会完全笔直。然后你会遇到所有这些问题,嗯,这个点是在一条斜线上。你无法在有限精度中回答这个问题,除非你使用实际的有理数。后来我确实浪费了太多时间,去追逐这样的事情。如何用有理数进行精确算术?而且随着你做的越来越多,它总是会指数级地爆炸。——所以,这些东西在电脑上是不可能的?——它们是可能的。再次,有方法可以做到,但你不能方便地将它们放入任何数字中。你需要开始使用大数和不同的跟踪。——对,所以如果你有任何强迫症的元素,你想完美地做某事,如果你使用浮点数,你就完蛋了。——是的。——所以,你第一次不得不处理这个问题。——那里有很多挑战,比如,好吧,他们建造了这个很酷的东西,而BSP树的工作方式是,它基本上把墙壁拿出来,然后用那些墙壁以一种巧妙的方式切割其他墙壁,然后你就可以把所有这些碎片拿出来,然后你就可以从任何给定的点得到一个排序。你可以说,这个在前面,这个在前面,一直到最后一个。这对于图形来说非常宝贵,因为一种经典的图形算法是画家算法。你先画最远的东西,然后是下一个,然后是下一个,然后它就出现了,一切都完美了。这很慢,因为你不想那样画所有东西。但你也可以把它翻过来,画离你最近的东西,然后如果你聪明的话,你可以找出需要画什么才能看到它。——而这正是BSP树让你能够做到的。——是的,它与其他一些东西结合在一起,但它提供了排序。这是一种巧妙的做事方式。我记得我从我的图形圣经之一,一本叫做“Foley and van Dam”的书中学到的。而且,当时是另一个世界。有少数整数数量的书籍,而这本书,这是一本巨大的大学教科书,我读了很多遍。我并不完全理解其中的一切。有些对我没有用,但它们有一个关于有限排序的小东西,你画一个小的T形的东西,然后你可以说,你可以提前做一个固定的顺序,然后你可以用BSP树来推广它。我得到了更多关于这方面的信息,而且很有趣。后来,在我开发“Quake”的时候,我遇到了Bruce Naer,他是开发这些技术到学术文献中的原始研究人员之一。这很有趣。但我非常只是找到一个工具来帮助我解决我正在做的事情。我以一种非常粗糙的方式使用它,以二维方式,而不是通用的3D。Epsilon问题在“Quake”中变得更糟,当东西以各种角度倾斜时。但最终我确实在“Doom”上可靠地解决了这个问题。在“Doom”中仍然有一些边缘情况不完全完美,甚至在社区中都有术语。比如,当你遇到一个搞砸了的东西时,它就是一个镜子屋效应,因为你会扫过它,它就不会画出什么东西,然后你就会剩下残余物,当你在这两个页面之间切换时。但BSP树对它很重要,但值得注意的是,在我们做了“Doom”之后,我们的主要竞争对手来自Ken Silverman的Build Engine,它被用于“Duke Nukem 3D”和3D Realms的一些其他游戏。他使用了一种完全不同的技术,与BSP树无关。所以,事情并非只有一种真正的方式。为了让任何一款游戏运行得更快,你必须将绘图分开,你绘制垂直线,你绘制水平线,只是改变你用它们绘制的东西。这对于当时的技术至关重要。而且,像所有类似的游戏一样,最终都做了类似的事情,但仍然有很多其他决定可以做出。我们在“Doom”上做出了足够好的决定。我们显著地引入了多人游戏,这是我们第一个被设计成由用户社区修改的游戏,我们有我们的WAD文件和PWADs,以及人们可以使用的工具,我们发布给了他们。他们最终重写了它,使其比我们发布的更好。但他们可以制作东西,你可以把它添加到你的游戏中,而不会破坏性地修改它,而这在所有早期游戏中都是必须的。你实际上是在黑客攻击数据文件或可执行文件,而“Doom”的设置非常灵活,你可以简单地说,运行正常的游戏,并在其之上添加这个,它只会叠加你想要的东西。——你会说Doom是你创造的第一个真正的3D游戏吗?——所以,不,它仍然是,Doom通常被称为2.5D游戏,它有三维点。这是另一个人们喜欢争论的关于什么是第一个3D游戏的琐碎事情,我仍然喜欢,而且每个月可能都会有人问我,Doom真的是3D游戏吗,还是别的什么?我给出的观点是,角色有三个坐标。所以,你有X、Y和Z,卡卡恶魔可以从很高的地方进来然后向你冲来。墙壁也有三个坐标。所以,在某种意义上,它是一个3D游戏引擎,但它不是一个完全通用的3D游戏引擎。你不能在Doom中建造一个金字塔,因为你不能制作一个倾斜的墙壁,这与之前的“Shadow Caster”游戏略有不同,我不能有顶点和倾斜的地板。但为了获得更高的速度和不同的灵活性,我为Doom所做的改变牺牲了这种能力。但你真的不能做到这一点,你可以制作不同高度的通道,但你不能在另一个区域上方建造一座桥。你不能从上面过去。所以,这更多的是,它仍然有一些2D限制。——这更多的是关于建造,而不是实际的体验,因为体验是。——感觉东西会向你冲来,但同样,你也看不到上面。——[Lex] 对。——你只能俯仰,它是四自由度,而不是六自由度。你没有能力这样倾斜你的头,或者上下俯仰。——那么,这就把我们带到了Quake。那里的飞跃是什么?有哪些引人入胜的技术挑战,或者说你提出的创新?——所以,Quake是我不得不面对我的局限性的第一个东西。这是我第一次真正全力以赴,但仍然在我想要完成的事情和时间方面稍有不足。整个项目公司都承受着巨大的压力。我们承担了很多。所以,我们设定的目标是,它将是一个真正的3D引擎,可以实现六自由度。你可以拥有所有的视角,你可以建模任何东西。它有一个非常出色的新照明模型,带有表面缓存等。这是其中之一,它开始做一些即使是在非常高端的系统上也没有做的事情。而且它将是完全可编程的,从模组的角度来看,你在Doom中做不到的事情,你可以替换几乎所有的媒体,但你不能真正改变游戏。仍然有一些人通过修改可执行文件来做黑客设置,他们修改了东西,你可以改变一些规则,人们做了一些早期的夺旗类型的东西,通过修改可执行文件,但它并没有真正为此而设计。Quake将拥有自己的编程语言,游戏将用它来实现,并且可以像任何媒体一样被覆盖。代码将是它的数据。你将能够拥有扩展包,改变基本的东西和模组等等。多人游戏将可以在互联网上玩。它将支持客户端服务器,而不是点对点。所以,我们有可能支持更多数量的玩家在不同的地点,拥有这种完全灵活的编程覆盖,拥有完全的六自由度建模和观看,以及这种漂亮的新的光照贴图,表面缓存之类的。这很多。这是其中之一,如果我能回到过去告诉年轻的自己做些不同的事情,那就是将这些创新分成两个阶段,两个独立的游戏。——第一阶段和第二阶段会是什么?——所以,可能就是,采用Doom的渲染引擎,并引入TCP/IP客户端服务器。——[Lex] 专注于多人游戏。——还有Quake C,或者说是Doom C编程语言。所以,我会把它分成编程语言和网络,使用相同的Doom引擎,而不是强迫所有人转向Quake引擎,这实际上意味着需要一台Pentium,虽然它可以在486上运行。那不是一个很好的体验。我们可以让更多人满意,并且在50%的时间内完成两款游戏。——说到让人们更开心,我们共同的朋友乔·罗根,他生命中最重要的时刻似乎围绕着Quake。所以,它是他生命中的一个决定性部分。所以,他会同意你的想法,他们应该分开吗?所以,他作为一个热爱Quake并玩了很多Quake的人,他会同意你应该做Doom引擎并专注于第一阶段的多人游戏,还是在你回顾时,Quake创造的3D世界也对丰富体验至关重要?——所以,我想说的是,会发生的是,你会有一款看起来像Doom但感觉像Quake的游戏,早八个月,然后可能在Quake实际发货六个月后,就会有完全运行在Pentium上,六自由度图形引擎类型的东西。所以,它不会在那里,它会是更早的令人惊叹的东西,然后是稍晚的更令人惊叹的东西,我宁愿去完成两个为期一年的开发周期,让它们循环起来,更务实一点,而不是把自己逼死在整个Quake开发上。但我会说,最终结果当然很好,但回顾过去,并说,我将如何优化和做事情?这似乎是一个明确的案例,我们继续,我们在Doom上有巨大的动力,我们在Doom 2之后做了商业盒装版本,在我们最初的共享软件成功之后,但我们可以再做一个Doom游戏。添加这些新功能将是巨大的。我们会学到同样的教训,但更快,而且它会给六自由度以及Pentium级别的系统更多的时间来普及,因为我们确实因为Quake的硬件要求而淘汰了很多用户。——你个人在面临如此严苛的截止日期和艰难的技术挑战时,有没有经历过黑暗的时刻,心理上?——所以,我从来没有真正经历过黑暗的黑洞。我的意思是,我不能确切地站在别人的角度,但我理解很多人在心理健康和福祉方面面临着重大的挑战。我压力很大。我十几岁的时候在各种方面都不开心,但我从来没有真正陷入过非常黑暗的境地。我似乎基本上对那些能摧毁人们的东西免疫。我的意思是,我有很多时候对某件事感到非常不开心和痛苦,但它从来没有像我相信它会击中其他一些人那样击中我。我很好地承受了落在身上的任何压力。而且我总是能最好地应对,当所有我需要做的就是努力工作的时候。我通过取得进展来把自己从任何我可能滑下去的洞里拉出来。我的意思是,也许如果我处于一个我从未能取得进展的境地,我可能会滑得更远。但我一直处于一个地方,好吧,再多一点工作。也许我在这里处境艰难,但我总是知道,只要我继续努力,最终我会突破,取得进展。我对我在做的事情感到满意。我一直以来都足够了。——你有没有在远处看到过,比如抑郁的想法或自杀的念头?你有没有远距离看到过这些东西?——所以,有趣的是,当我十几岁的时候,我可能在某种程度上是一个有问题的年轻人。我大部分的青少年时期都不开心。我真的,我想自己一个人,一直做编程。一旦我18、19岁,即使我很穷,我也在做我想要做的事情,而且我非常快乐。但高中对我来说不是一段美好的时光。我曾和学校辅导员谈过,他们就像在念稿子。就像,好吧,这里有个奇怪的孩子,让我们小心地探究一下。就像,你有没有想过结束这一切?我说,不,当然没有。从来没有,一点也没有。我这是暂时的,事情会好起来的。——[Lex] 哇。——我一直都是这样。显然,对每个人来说都不是这样,其他人反应不同。——你从那个麻烦的青年时期逃脱了什么?比如音乐、电子游戏、书籍?你是如何逃离一个充满残酷、痛苦和荒谬的世界的?——是的,我的意思是,我不是残忍和痛苦的受害者。就像我是一个不开心、有点叛逆的年轻人,我没有把自己的痛苦与别人的痛苦相提并论,但我客观上不开心。而且,我童年时期的一些特点是,我有书、漫画书、龙与地下城、街机游戏、电子游戏。就像我童年最美好的回忆之一是便利店,7-Eleven和QuikTrips,因为它们有一个漫画书的旋转架,还有一个小房间,里面有两三个电子游戏,街机游戏。那确实是我的快乐之地,如果可以的话,我会买我的漫画书,如果我能去图书馆翻阅那些,那些000区,计算机书籍应该在那里。那里有一些可怜的小书,但即使只是能够坐下来翻阅它们。

而我作为一个青少年,读了数量惊人的书籍,包括小说和非小说。我在高中时的叛逆,就是坐在那里,埋头读书,无视课堂。而且贯穿了大部分时间。老师们对此的反应各不相同。有些比其他更能接受。——我同意你的看法。那么,让我们回到《雷神之锤》的那些技术挑战上来。将所有东西整合在一起,从网络到图形。你还记得有哪些是你必须想出的创新,才能让这一切都实现吗?——是的,《雷神之锤》有很多方面,一方面,我构建了自己的编程语言来实现游戏,回想起来,我试图告诉人们,就像每个高级程序员在其职业生涯的某个时候都会经历并发明自己的语言一样。这似乎是一件相当普遍的事情。人们会说,我要去写一门计算机编程语言。我并不后悔这么做。但在此之后,我从《雷神之锤》C语言切换了过来,我那古怪的小的、伪面向对象的语言。在《雷神之锤II》中,我回到了使用C语言的DLL,然后在《雷神之锤III》中,我实现了自己的C解释器或编译器,这比最初为《雷神之锤》做的要明智得多。但构建自己的语言是一次经历,我从中学习了很多。然后有一代游戏程序员是用《雷神之锤》C语言学习编程的,我对此感到有点抱歉,因为我的意思是,我们给了JavaScript很多批评,但《雷神之锤》C语言算不上什么值得称道的东西,但它让人们能够做一些神奇的事情。你之所以开始编程,不是因为你热爱一门语言的BNF语法,而是因为这门语言能让你做你关心的事情。——在这里,你可以在一个完整的美丽的三维世界里做很多事情。——是的,这个想法以及游戏代码是公开的事实,你可以说,我喜欢霰弹枪,但我希望它更厉害。你进去说,好的,现在它造成200点伤害。然后你带着灿烂的笑容,在游戏中炸毁怪物。所以,是的,我今天不会用那种语言去做,但那是其中的重要一部分,学习网络知识,因为有趣的是,我通过读书来学习这些东西。所以,我会找一本关于网络的书,找到我读过的所有内容,然后学习,好的,数据包可能会乱序、丢失或重复。这些都是理论上可能发生到数据包上的事情。所以,我花了所有的时间来思考如何处理这一切。结果当然是,在现实世界中,这些事情确实可能发生,尤其是在有多个路由的情况下,但它们并不是你99.999%的数据包必须处理的事情。所以,有很多学习经历,比如为什么TCP比UDP更合适,以及如果你在UDP中做事情,几乎所有情况下你都会糟糕地重新发明TCP。所以,对于游戏过程中从一个关卡过渡到另一个关卡的不同部分,使用两者都有充分的理由。但图形是《雷神之锤》的全部亮点。那是没有人见过的图形技术。而且过了一段时间,才出现了竞争性的东西,而且内部很长一段时间都没有真正起作用,我们甚至在构建关卡时,游戏根本就无法发布,因为世界的大部分区域会消失,不存在,或者在某些部分非常慢。这是一种信念。就像,我认为我能解决这个问题。我认为我能让它奏效。很多东西都改变了,关卡设计师会构建一些东西,然后不得不放弃,因为一些根本性的图形或关卡技术发生了变化。所以,在那段时间里,有两件大事促成了它的实现。两件新事物。当然有经过硬核优化的低级汇编语言。我就是从微软挖来了迈克尔·阿布拉什,他是我早期灵感来源之一,在那个软绵绵的日子里,他们拥有的杂志库中,我最珍贵的几本就是迈克尔·阿布拉什在《Dr. Dobbs journal》上的文章。令人惊叹的是,在我们《毁灭战士》取得巨大成功之后,我们能够联系到他,说:“嘿,我们希望你来id Software工作。”他在微软担任高级技术职位,并且前途光明,就在微软开始腾飞的时候,我最终说服了他,我们正在做的《雷神之锤》将是惊人的。它将是前所未有的。它具有我们所谈论的那些方面。当时我们有元宇宙的讨论。我们读了《雪崩》,我们知道这一点,迈克尔对科幻小说很感兴趣,我们会谈论所有这些,然后编织这个故事。这和我们今天谈论元宇宙的一些对话是一样的,关于如何将不同的区域通过传送门连接起来,以及如何拥有用户生成的内容并改变所有这些东西。——所以,你真的在《雷神之锤》中创造了元宇宙吗?——我们谈论过诸如虚拟现实体验之类的东西。那是第一波虚拟现实,在80年代末和90年代初。你有像《剃刀侠》这样的电影,有《时代》和《新闻周刊》谈论早期的VPL头显。当然,它崩溃得如此厉害,以至于人们在之后的几十年里都不想看虚拟现实了,因为它只是烟雾和镜子。它不是真正意义上的,你可以用它做一些真实而有价值的事情。但我们仍然有那种共同的谈话要点,我们谈论这些游戏可以变成什么样子,以及你希望看到人们构建所有这些创造性的东西,因为我们当时看到了《毁灭战士》的爆炸式增长,人们在做令人惊叹的酷炫事情。就像我们看到了比我们自己构建的更酷的关卡,来自用户社区。然后人们找到了以不同方式改变角色的方法。这很棒。我们知道我们在《雷神之锤》中所做的就是消除这些最后的东西。有一些数据类型存在一些奇怪的问题,导致无法正确覆盖。然后是编程模型的核心,我肯定会在《雷神之锤》中涵盖所有这些,但图形方面,它仍然是,我知道我想做什么,这是其中一种傲慢的事情,就像,嗯,到目前为止,我都能做到我设定的目标。但《雷神之锤》确实比当时能舒适地咀嚼的要多一点。但迈克尔是我认识的最强大的程序员和图形程序员之一,他是我信任的人之一,他能写出比我更好的汇编代码。我可以指出一些人,关于这类事情,我是一个世界级的优化者。我的意思是,我让东西跑得很快,但我认识到有很多人可以写出比我更紧凑的汇编代码、更紧凑的SIMD代码或更紧凑的CUDA代码。我最好的优势在于系统层面。我的意思是,我在这方面都很擅长,但最大的杠杆来自于做出更高层级的决策,你找出如何改变你的大规模问题,以便这些低层级问题更容易解决,或者能够以独特的方式快速解决。所以,我很多时候最大的胜利,从早期的游戏到VR,再到我正在做的航空航天工作,以及我希望现在正在做的AI工作,都是找到一个角度,这意味着你放弃了你可能认为需要的东西,但事实证明你不需要它。通过在一个地方做出牺牲,你可以在另一个地方获得巨大的优势。——这是否清楚在系统的哪个层面可以获得这些巨大的优势?——不总是清楚。这就是为什么我试图让我的核心价值观之一,并且我向很多人宣扬的是,努力了解整个堆栈,努力看清发生的一切。在像网络浏览器这样的层面,这几乎是不可能的,因为它有很多层,但你应该至少了解它们是什么,即使你无法理解每个层面的所有性能特征。但它一直深入到硬件层面。那么,这个芯片能做什么,你写的软件能做什么?然后,你在此之上构建的架构,然后是围绕它的生态系统,所有为之工作的人。所以,有所有这些决定,它们从来没有以全局最优的方式做出,但有时你可以通过它来推动全局最优的线程。你无法看到一切。它太复杂了。但有时你可以退一步,做出不同的决定。我们在《雷神之锤》的图形方面就经历了这种情况,在某些方面,这有点糟糕,迈克尔会花时间编写,比如我粗略地写出基本例程,比如,这是我们的跨度光栅化器,他会花一个月的时间来编写这个,漂亮的周期优化汇编语言,它能做我要求的。它比我原来的代码快,或者可能比我花一个月时间写得快。但有时我会说,好吧,我在更高层级上找到了解决方案,而不是在这里按画家顺序绘制这些,我使用跨度缓冲区,它消除了30%或40%的像素,但这意味着你需要重写,所有的接口。我能感觉到这让他有点疲惫,但最终这是正确的做法,我们改变了光栅化方法,我们得到了一个超级优化的汇编语言核心循环,然后是一个好的系统,它最大限度地减少了调用次数。——所以,为了能够进行这种系统级别的思考,无论我们谈论的是游戏开发、航空航天、核能、人工智能、VR,你都必须能够理解硬件、低级软件、高级软件、设计决策,整个过程,完整的堆栈。——是的,这就是很多事情变得可能的地方,当你真正,当你把未来带到前面时。我的意思是,一切都有一个节奏,它只是在滑向一个方向,我们取得了很大的进步,以至于,以如此多的不同方式。你只是滑向进步,仅仅依靠自己的程序,程序就会变得更快,有一段时间不清楚它们是否会变得更胖,而不是更快,然后它们就会抵消。但现在回想起来很清楚,程序只是变得更快,而且已经快了很长时间。但如果你想做一些事情,就像回到最初谈论滚动游戏时,说这需要快五倍,好吧,我们可以等六年,它自然就会快那么多。或者你找到一种非常巧妙的方法来做到这一点。所以,在许多不同的领域都有这样的机会。现在,大多数程序员不需要考虑这些。没有那么多,有很多机会,但这不是每个人的日常工作。所以,每个人都不必知道所有这些东西是如何工作的。他们不必知道他们的编译器是如何工作的,处理器芯片如何管理缓存驱逐以及所有这些低级的事情。但有时会有强大的机会,你可以看着说,我们可以把未来提前五年。我们可以做一些事情,如果能做到这一点,那不是很好吗?嗯,我们可以今天就做到,如果我们做出一定的决定。在某种程度上,这是烟雾和镜子,就像《毁灭战士》有很多烟雾和镜子一样,人们认为它比实际能力更强,但我们选择了正确的烟雾和镜子来部署在游戏中,通过这样做,人们会认为它更通用,如果我们用他们所拥有的东西来让他们惊叹,他们就不会注意到它没有做其他事情。所以,在那个时候做出明智的决定,这就是那种全局整体的自上而下的视角可以发挥作用的地方。我坚信技术应该坐在那个桌子上,参与那些讨论,因为你确实会遇到这样的情况,你说,嗯,你想成为乔纳森·艾维(Jonathan Ivy)或什么的,那是一个纯粹的设计解决方案。在某些情况下,现在你几乎拥有无限的资源。就像如果你现在想在PC上做一个滚动游戏,你甚至不需要和技术人员交谈。你可以让任何实习生都能让它以所需的速度运行,而且它完全可以基于设计。但如果你想做一些困难的事情,要么是因为资源不足而无法完成,比如在移动芯片组上做VR,要么是我们还不知道如何做的事情,比如通用人工智能,这很可能需要从一个角度来处理。就像,我的意思是,对于AGI,我们有一些关于如何SI的更难的原则,或者有一些理论方法可以说明这是最优的学习算法,可以解决一切,但它完全不切实际。你就是做不到。所以,显然你必须对通用智能做出一些让步,而且还没有人知道正确的让步是什么。所以,人们正在采取不同的攻击角度。我希望我能在这个领域想出一些聪明的东西。——这让我感到惊讶,我认为这也许是进步的一个原则,烟雾和镜子某种程度上是构建未来的方式。你假装自己能做到,直到你真的能做到,而且你几乎总是能做到。我认为这就是我们将实现AGI的方式,这就是我们将把意识构建到我们的机器中的方式,哲学家们争论图灵测试本质上就是关于假装做到,直到你真的做到。你从假装开始。我认为这总是会导向成功。因为如果我们看看历史——当人们开始谈论意识和中文房间之类的事情时,我就会退出,我只是觉得这些对话没有任何价值。就像,去吧,告诉我它不会奏效。我将尽我最大的努力来让它奏效。——我不知道你是否和有腿的机器人打过交道,有很多这样的机器人,它们确实让我觉得它们在某种程度上很谨慎,而这种谨慎今天还不存在,但你可以看到它的核心。就像火焰,火焰的开端。——我们没有视线,但所有这些事情在远处都有闪光点。——是的,我听到远处房间里有低语声。好吧,让我问你一个关于人的问题。在游戏设计领域,你做了很多令人难以置信的工作,但在游戏设计方面,你改变了世界,你身边有几个人也做了同样的事情。所以,众所周知,你和约翰·罗梅罗之间存在一些敌意,有很多爱,但也有一些敌意,这种敌意和人际紧张的核心是什么?——所以,实际上并没有,很长一段时间以来,即使在开始的时候,也是如此,是的,我确实把罗梅罗赶出了公司,这是我回顾时,如果我能回到过去给年轻的自己一些建议,id Software最初的创始公司结构确实导致了一系列问题。我们开始时是平等合伙人,我们有买卖协议,因为我们不想让外部人士告诉我们在公司内部做什么。这确实导致了一系列问题,我坐在那里想,就像,好吧,我比任何人都努力工作。我正在做这些前所未有的技术,但我们都是平等合伙人,然后我看到有人不那么努力工作。我的意思是,我不能说我当时最成熟。我二十多岁,这确实困扰我,我当时想,大家,好了,我们需要齐心协力,我们以前也这样做过。大家,我们知道如果我们团结起来,努力奋斗,我们就能做到。但不是每个人都想永远这样做,而我是其中最年轻的。我有着不同的背景和动机,然后离开了,当时的情况是,要么每个人都必须贡献,就像达到这个水平,或者他们需要被赶出去,那不是一个好情况。我回顾了一下,现在我们把本可以做出贡献的人赶出了公司,如果有一个不同的框架给他们,以及现代硅谷式的,让你的股票随着时间推移而归属,也许是非投票权股票等等。我们对这些一无所知。我的意思是,我们在公司结构或任何方面都不知道我们在做什么。——所以,如果你认为框架不同,一些人际紧张本可以稍微——几乎肯定会的。我的意思是,我回顾了一下,就像试图在我脑海中回忆一样,就像,我知道我当时真的很,真的很生气,比如罗梅罗没有像我希望的那样努力工作,或者没有在《雷神之锤》的设计上承担他的责任并想出一些东西。但他确实在做事情。他做了一些最好的关卡。他与我们的一些外部团队合作,比如Raven,在许可方面。但在这方面存在意见分歧。但他很快就站稳了脚跟。他去了,他从IDOs那里获得了2000万美元去创办Ion Storm,他得以按照自己的方式做事,同时启动了三个团队,因为这在id一直是一个挑战,我们一次只做一个项目。我认为其中一些人想扩大公司规模。而我不想,因为我知道有人说,“哦,公司在有50名员工时就变糟了。”那是一个不同的世界。我喜欢我们那十几个人一起做项目,但你可以看着说,“嗯,商业现实很重要。”就像,你在这里非常成功,我们可能会尝试一些事情,但你这样做几次,你就运气不佳了。公司试图同时运行多个团队是有原因的。所以,这又是我当时没有真正欣赏的事情。——所以,如果你忽略了这一切,你们一起创造了一些了不起的东西。你喜欢约翰·罗梅罗的什么?你尊重和欣赏他什么?你钦佩他什么?你从他那里学到了什么?——当我见到他时,他是我见过最酷的程序员。他做过所有这些事情。他做过所有这些游戏。他曾在一家我认为最酷的公司Origin Systems工作过,他知道所有这些东西。他能快速地把事情做成,而且他也能,他也是个博学者,他自己画画,自己做关卡,还负责音效设计系统,而且他还是一个非常好的程序员。我们经历了一段,有点有趣,我们做的一件早期事情是,当时有点像年轻气盛,我是新人,他是Soft Disc Area的顶级程序员。最终,我们有一个周末的挑战,我们要比赛实现这个游戏,把我们的一个PC游戏移植到Apple II上。那就是我们最终清楚地认识到,就像,好的,在编程方面,CarMax有点与众不同,但罗梅罗随后非常优雅地转向了,嗯,他会做工具,他会做系统,做一些游戏设计工作,以及在开始领导许多事情的设计方面做出贡献。所以,他在早期非常宝贵,而且《毁灭战士》甚至《雷神之锤》的很多方面都有他的印记。但他没有像我那样专注于我们正在做的工作。而且他确实,我们取得了如此巨大的成功,以至于媒体都在报道“摇滚明星游戏程序员”。——我的意思是,这是披头士的问题。——是的,我的意思是,他欣然接受了,他确实象征着,我们当时有很多拥有法拉利的游戏开发者。我认为这导致了一些挑战。但游戏中很多伟大的东西确实来自他。我当然不会剥夺他的功劳。即使在我们分道扬镳之后,他带着IDOs进行了尝试,在某种程度上,他就像,他领先于移动游戏的发展,在他的一家公司在IDOs之后,他一直在从事功能手机游戏开发,我也不得不这样做,就在iPhone进入iPhone阶段之前。那件事显然成了一件大事,尽管他当时工作的东西还为时过早。我们一直保持着相当友好的关系,我乐于在会议上见到他时与他交谈。我实际上没有遇到过其他人说,“哦,你不应该去那里给他时间。”或者觉得《毁灭战士大师》的描绘方式让我不太满意。但我对这一切都很好,而且我知道。——所以你心里还有爱吗?——是的,我的意思是,我去年才和他谈过,我想今年也谈过,提到我正在做AI方面的事情。我正在大力投入人工智能,他有很多关于AI如何融入游戏的想法,并问我是否有兴趣合作,这与我正在做的事情不符,但我希望几乎所有人都能做得最好。我的意思是,我知道我可能没有和一些人以最好的方式分手,但我很高兴看到汤姆·霍尔现在在写VR游戏。他正在开发一款名为“Demio”的游戏,这是一款非常棒的VR游戏。就像我们过去一起玩的“龙与地下城”一样。那是我们早期在周日做的事情之一,我担任地下城主,他们都玩,所以看到汤姆参与一款VR角色扮演游戏,我真的很开心。——自2013年以来,你一直是Oculus VR的首席技术官,并在2019年减少了一些参与。Oculus于2014年被Facebook(现为Meta)收购。你对虚拟现实的低级细节、实验性设计和宏大愿景都进行了精彩的阐述。让我问你关于元宇宙,这里的大问题,无论是哲学上还是技术上,构建元宇宙有多难?在你看来,元宇宙是什么?你开始讨论和思考《雷神之锤》作为一种元宇宙,就像你今天思考它一样。元宇宙是什么,能够创造这种引人注目的用户价值,这种将改变世界的体验,以及构建它的难度有多大?——这个词来自尼尔·斯蒂芬森的书《雪崩》,我们中的许多人在90年代都读过。那是那种形成性的书籍之一。有一种感觉,即创造一个虚拟世界,它能做任何你想做的事情,任何你要求它做的事情,这种可能性、自由和无限的能力,对几代开发者,特别是游戏开发者和那些思考更通用应用程序的人来说,一直是一个强大的吸引力。所以,我们在《毁灭战士》和《雷神之锤》时代就谈论过如何拥有一个相互连接的世界集合,你可以从一个访问到另一个,随着网页的出现,你开始思考,这是三维交互的等价物是什么?有很多非常糟糕的尝试。你有VRML,虚拟现实标记语言。有些人说,我们应该开发什么样的能力来支持这一点?这种能力优先的工作通常没有取得很好的成果。另一方面,我们有成功的游戏,比如《毁灭战士》和《雷神之锤》,以及围绕它们形成的社区,无论是早期的服务器列表,还是不同游戏之间的实际传送门链接,然后是现代的,完全是另一个数量级的东西,比如拥有数亿用户的《我的世界》和《堡垒之夜》。我仍然认为这是构建元宇宙的正确方法,那就是你构建一些令人惊叹的东西,人们喜欢它,人们最终会花所有时间在里面,因为它很棒,然后你扩展它的能力。——所以,即使它是一个非常基础的体验?——只要它,就像《我的世界》在很多方面都是一个惊人的案例研究。它所能做到的确实令人开眼界。也有其他情况,比如现在Roblox基本上是一个面向儿童的游戏构建工具包,这是一个能力优先的玩法,并且它正在达到与那些东西相同的规模。所以,这并非不可能,但我更倾向于,你创造一些令人惊叹的东西,人们喜欢它,然后不断改进它。这就是为什么我可以说,如果我们回到早期,遵循一条类似的道路,如果你只是采取同一个游戏。就像动视公司每年都证明你可以制作《使命召唤》,而且不仅不差,人们还喜欢它,而且利润丰厚。你可以采取类似的方法,拿一个伟大的游戏,每年发布一个新版本,让能力不断增长和扩展,开始说,好吧,这是一个关于跑来跑去射击的游戏,但现在你可以,把你的媒体带进来。你可以增加持久性,社交感,生命迹象,或者任何你想添加的东西。我仍然认为这是一个很好的立场。而且我认为,虽然Meta正在通过Horizon Worlds采取一种自下而上的能力方法,这是一个相当通用的,创作者可以在其中构建任何他们想要的东西,但很难与《堡垒之夜》这样的东西进行比较和竞争,它也有巨大的创造力,尽管它最初不是作为一个通用目的的东西设计的。所以,我们有两方面的例子。就我个人而言,我会押注于先创造有价值的娱乐目的地,然后在此基础上扩展。——所以,你能想象一下,如果我们从现在回溯几个世纪,你认为那些标志着奇点、我们世界大部分地区进入虚拟现实的转变的体验会是什么样子?——所以,我认为这有点像网络慢慢接管的方式,你就像锅里的青蛙,水慢慢加热,经历过这一切,我记得当我在广告牌上看到第一个网站地址时,我感到多么震惊,我想,“嘿,我的电脑世界正在感染现实世界。”这在某种程度上正在蔓延。但回想起来,你会说,“嗯,是什么让网络腾飞的?”它不是一个大爆炸式的时刻,而是一堆小事情,结果现在都不再相关了,是它们让人们参与进来的。——嗯,我想知道,就像你说的,你不是历史学家,所以也许有一个历史学家能够真正以数据驱动的方式识别那个时刻。它可能就像MySpace之类的东西。也许是第一个真正进入非极客世界的重大社交网络之类的东西。——我认为这就是历史学家的谬误,寻找一些主要的、占主导地位的原因,而许多事情都是这样的,我们看到一个指数曲线,但不是因为一件事在呈指数级增长,而是因为我们有数百个小的S形曲线相互重叠,它们恰好不断累加,以至于你在任何给定点都有某种呈指数级增长的东西。但没有一个单独的事件是关键。有几十个,几十个事件。我的意思是,看到像MySpace让位给其他东西的转变,但即使是博客,让位给社交媒体并在其他形式中复活,以及在那里发生的事情。——还有像跳舞婴儿GIF之类的表情包,或者你们所有的基地都不属于我们。无论那些早期的表情包导致了现代表情包和互联网上不同幽默的演变,我相信历史学家也会写书,从支持、创造幽默基础设施的不同网站,比如Reddit以及所有这些东西。——所以,人们会回去,他们会命名第一个关键时刻。但它很可能只是对实际发生情况的糟糕近似。而且我们已经看到了,就像在VR领域,它并没有像我们预期的那样发展,就现代VR时代而言,它基本上是以我在E3上展示的Rift原型上的《毁灭战士3》开始的。所以,我们是VR中的第一人称射击游戏,天作之合,对吧?结果完全不是这样。它们有最多的舒适度问题。然后最受欢迎的虚拟现实应用是Beat Saber,当时没有人预测到这一点。——这让你从第一原理来思考,如果你要逆向工程它,为什么这些像愚蠢的有趣游戏是最受欢迎的?——当从事后分析并查看工程原因时,这实际上非常清楚,它不仅仅是一个神奇的、古怪的想法。它几乎完美地发挥了VR的真正优势。我真正低估了VR中控制器重要性的一点是控制器的重要性。我仍然认为我们可以用游戏手柄做更多的事情,以及将任何现有游戏变成令人惊叹的体验,能够四处走动并环顾四周,那真的很令人惊叹。但控制器非常重要。但问题是,你用控制器做的很多事情都很糟糕。感觉就像打破了幻觉,比如用控制器捡起眼镜,你就像,“哦,当你靠近时使用抓握按钮”,它就会吸到你的手里。所有这些都是不自然的动作,你做了它们,它仍然是VR体验的一部分。但Beat Saber的发挥恰恰是它的优势。它完全隐藏了它的所有弱点,因为你手里拿着东西,你一直牢牢地握着它。它能切开东西而不会碰到任何东西。你永远不会遇到我敲这张桌子,但在VR中,我的手会直接穿过它。所以,你手里拿着一个能切开东西的东西。所以,你的大脑永远不会告诉你,“哦,我应该撞到什么东西。”你手里拿着一把光剑。它就是,你期望它能切开一切。音频和音乐最终成为了虚拟现实的一个非常强大的方面,你屏蔽了外部世界,并在你周围构建世界,并且能够有效地运行,即使是在相对低功耗的硬件上,并且可以在很短的时间内获得有价值的循环。而许多现代游戏,你 supposed to坐下来玩一个小时,才能有所进展。有时一款新游戏需要一个小时才能通过教程关卡,这对于VR来说是不好的,原因有几个。如果你到处走动,仍然会有舒适度问题,但你也会因为头显的不适、移动版本的电池寿命而感到不适。所以,拥有可以分解成三到四分钟游戏窗口的东西,从游戏玩法上看,这非常有价值。所以,它最终成为了所有这些非常好的东西的完美风暴。它没有任何舒适度问题。你没有四处导航,你只是站着不动。所有东西都飞向你。它有空间音频的优势。它增加了整个,整个VR健身。一开始没有人想到这一点。而且事实证明,这是一种极好的日常健身方式。如果你玩一小时的“Beat Saber”或“Supernatural”或类似的游戏,那确实是扎实的锻炼,而且比其他任何方式都更有趣。——所以,这有点像街机阶段。如果我说,以我玩VR的经验来看,我认为强大的东西是,也许它还没有到来,但它在沉浸感方面的程度,就像《雷神之锤》那样沉浸,它带你去另一个世界,对我来说,因为我是角色扮演游戏的粉丝,像《上古卷轴》系列,比如《天际》或《匕首雨》,它只是带你去另一个世界。当你不在那个世界里时,你会想念那里。然后你就,你就想永远待在那里。因为生活很糟糕,你只想去那个地方。——曾经有一段时间,我们被要求想出,你对VR的看法是什么?我的提议是,它应该比外面更好。它是你想要的世界。——是的。——每个人都认为那是反乌托邦的,就像,“哦,你将忘记外面的世界。”我不理解那种心态,如果你能让头显里的世界比外面更好,你就改善了佩戴头显的人的生活。而且有很多事情我们在现实世界中无法为每个人做到。每个人都不能拥有理查德·布兰森的私人岛屿,但每个人都可以拥有一个VR岛屿,并且可以拥有他们想要的东西。而且现实世界中有很多这样的竞争性商品,VR可以做得更好。我们可以做很多这样的事情,它们可以非常,非常丰富。所以,是的,我想要,我认为这将是一件积极的事情,这个世界,人们想回到他们的头显里,它可能比住在小公寓里的人拥有一个宏伟的虚拟现实庄园要好。他们可以邀请来自世界各地的朋友来拜访他们,而无需每个人都坐飞机去某个地方见面并处理所有其他后勤上的麻烦。远程会议的临场感确实有真正的价值。我们需要解决所有的小问题,但这些都是我们可以看到的。那些在良好的VR会议中,使用工作间的人,你可以说,“哦,这比Zoom会议好。”当然,进入它更麻烦。不是每个人都有头显。互操作性更差。你不能达到一定数量。所有这些都需要修复,但这是你可以看着说我们知道那里有价值的事情之一。我们只需要努力工作,打磨掉所有粗糙的边缘,让它成为可能。——所以,你确实认为我们有视线,因为有原因,比如,我亲自做这个播客,举个例子。远程做它,它不一样。如果有人问我为什么不一样,我写不下来确切的原因。但你说的是,无论是什么让面对面互动如此特别,那种沉浸式的体验,我们几乎做到了。——是的,就像,我正在和某人进行VR采访,我不是说它现在就在这里,但你可以看到它应该是什么样子的闪光点。我们基本上知道需要修复和改进什么,就像你说的,远程采访,通过Zoom或其他方式进行播客,以及面对面交流之间存在差异。存在那种临场感,那种即时性,超低延迟的响应能力,能够看到所有细微之处,只是占据相同的视野。所有这些都是我们绝对可以在VR中做到的。而这个小小的,与几个人进行小型会议的简单案例,比人们想象的要容易得多。像《头号玩家》那样拥有数千人的多人宇宙,他们穿过一座巨大的桥梁,前往令人惊叹的地方。这在很多其他技术方面更难。并不是说我们也不能做到,但那更遥远,挑战更多。但这种能够与一两个人开会,让他们感觉真实,感觉你就在那里,就像你有相同的互动,并与他们交谈,你获得微妙的线索,随着我们开始在高端头显上获得眼部和面部追踪以及其他一些东西,很多东西都会过来,而且它不必那么好。这一点很重要,人们会错过,很多人,特别是富人,会看着VR说,哦,这真的不好。我会说,嗯,你已经去过赛场边、后台和维修区,你已经体验过所有这些了,因为你可以在现实生活中体验它们。但大多数人都没有机会,即使体验只有一半好,如果这是他们以前从未有机会做过的事情,那仍然是一件非常好的事情。随着时间的推移,我们可以将这个数字推高。它有一个最低可行价值水平,当它做一些对人们有价值的事情时,只要它在任何指标上都比外面更好,人们就会选择去那里,我们就走在正确的道路上,而且我们有一个价值梯度,我一直在强调。我们可以沿着这个价值梯度前进。只是不断改进,而不是追求那种。闭上眼睛,全力以赴,那种银弹式的方法。——嗯,我想知道,面对面会议是否有价值梯度。因为如果你做对了,我的意思是,那将改变世界。——[约翰]是的。——它不需要,我的意思是,你不需要《头号玩家》。但我不知道是否有那个价值梯度可以遵循,因为如果有,并且你遵循它,那么在某个点就会有一个特定的,像相位转移,人们将从Zoom转移到这个。我想知道瓶颈是什么?是软件?是硬件?都是关于延迟吗?所以,我在内部就这些战略性问题进行了激烈的争论,比如即将推出的下一款头显,我们已经宣布了各种公告,它将是一款高端头显,更昂贵,功能更多。很多人想做出这些权衡。我们将看看市场对我们在这里所做的具体权衡有何看法。但如果你想取代Zoom,你需要拥有每个人都有的东西。——[Lex]所以,你想要一些更便宜的东西。——我喜欢更便宜,因为更轻便和更便宜,会形成一个良性循环,而昂贵和更多功能往往也意味着更重。它就是这样,就像,让我们添加更多功能。功能不是,它们有物理存在和重量,并且消耗电池等等。所以,我一直偏爱低端、更便宜、更快的做法。这就是为什么我一直支持VR的移动端,而不是高端PC头显。我认为这已经被证明是好的。但你总是,理想情况下,我们有一系列的东西,但如果你只有一两个东西,重要的是这两个东西要涵盖你认为最重要的范围。当我们处于一个手机的世界,市场上有很多手机,涵盖了你想要的每一个可能的生态位,那将是伟大的,但我们还要一段时间才能到那里。——瓶颈在哪里?是硬件还是软件?——是的,所以现在你可以在Quest上玩工作间,你可以设置这些东西,而且体验相当不错。它出奇地好。——我还没试过。它出奇地好吗?——是的,语音延迟比Zoom会议要好得多。所以,你有一种更强的即时感。当前硬件通过你的控制器和头部获得的表情相当逼真,你对与某人在一起的感觉相当好。——这些是像人的虚拟形象吗?比如,你能看到他们的身体,他们围坐在一张桌子旁吗?——[约翰]是的。——而且感觉比Zoom好吗?——比,是的,比你预期的要好。绝对是,是的,我认为当一切正常工作时,它比Zoom好很多。但仍然有所有粗糙的边缘,Zoom之所以如此成功,是因为他们完美地掌握了所有东西的可用性。它质量很高,体验一流,而我们还没有在任何VR产品上做到这一点。我正在努力推动,我一直在说,就像,它需要一键完成所有事情。我们在家庭环境中正在做到这一点,而不是整个工作间应用程序,而是主家庭,你现在可以点击邀请,它仍然需要花费比应有的时间长五倍的时间。但我们正在接近这一点,你点击那里,他们点击他们的按钮,然后他们就坐在那里,与你一起拥有良好的临场感。但延迟需要大大提高。用户界面需要大大提高。头显的普及性需要提高。我们需要有一亿个头显,这样每个人都知道有人一直在使用它。——嗯,我认为这是一个良性循环,因为我认为界面是这种革命成败的关键。就像你说的,一键操作很有趣,但如何实现这一键操作也很有趣。我不知道是什么,我能问一个黑暗的问题吗?也许让我们把它放在Meta之外,但这是关于Meta,也是关于Google和大型公司。它们能做到这一点吗?看起来,让我戴上我那个脾气的旧帽子的样子,它们似乎没有很好地创建这些用户友好的界面,因为它们公司越来越大。就像Google早期创建了一些有史以来最棒的界面,而且,我的意思是,创建Gmail,有太多出色的界面,而她似乎越来越糟糕。Meta、微软也是如此。

只是,它似乎变得越来越糟。我不知道是什么原因,因为你变得更加保守,谨慎,规避风险。是这样吗?你能谈谈吗?——所以,这对我来说真的很有启发,在我工作的这家科技巨头里。我曾有过我的小公司,然后我们被一家中型游戏发行商收购,接着 Oculus 被 Meta 收购。而 Meta 在收购后的八年里,规模已经增长了很多倍。所以,我没有这方面的经验。这很有趣,因为我记得以前,我衡量资源使用情况的标准是我在航空航天领域互动过的一些政府项目。我记得当时想,好吧,有一个空军项目,他们花了 5000 万美元,但什么都没启动。他们甚至什么都没造。就好像他们写了一堆论文,仓库里有一些零件,但什么都没发生。这就像 5000 万美元,我不得不彻底重新校准我对“可以花多少钱”的看法—— [Lex] 没有最终产品。——资源方面,VR 已经实现了,我们几乎实现了我们想要的一切,我们刚刚度过了 10 周年,从我第一次演示 Rift 的时候算起,如果我能说出我想要的东西,那将是一个独立的、内部追踪的 4K 分辨率头显,它仍然可以连接到 PC 进行高端渲染。而这正是我们现在 Quest Two 上所拥有的。——是的,首先,让我们停下来谈谈我有点烦躁的事情。Meta 在 Oculus 等方面取得的成就令人难以置信。我是说,当我想到 VR 的未来时,这就是我硬件方面所想象的。也许在体验方面也是如此,但不知何故,它仍然没有达到那个水平——一方面,我们确实在某种程度上实现了它并取得了胜利,而且我们已经售出,我们现在很成功。但是投入其中的资源数量,最终会在会计中被冲销,马克确实宣布他们每年花费 100 亿美元,用于 Reality Labs。现在 Reality Labs 涵盖了很多内容。VR 并不是其中的主要部分,还有 Portal 和 Spark 以及大型 AR 研究项目,并且它一直在扩展以包含 AI 和其他事物,那里有很多事情在发生。但 100 亿美元这个数字让我难以理解。想到花费这么多钱,我感到胃里一阵翻腾。但这就是他们展示承诺的方式,这比……是的,谷歌会取消所有这些项目,做各种各样的事情,而 Meta 却真的在坚持为 VR 和 AR 提供资金,AR 还在更远的未来。所以,这还是值得一提的。这项工作不会消失,工作正在进行。我只希望所有这些资源都能更有效地利用。是的,因为我看到了所有这些案例,我指出了这些例子,说明一个我们以各种方式竞争的第三方,有很多这样的例子,他们只用了我们内部十分之一的人员。很多原因在于,是的,小公司可以去做,而在大公司里,你不得不担心,是否有内部的 SDK 你应该使用,因为另一个团队正在制作它。你必须为不同的事情安排跨职能的会议。你确实有更多关于隐私、多样性、公平和安全等方面的担忧,以及一些小初创公司可以轻松地去尝试和做一些有趣的事情时会遇到的父母问题。而在大公司里,你必须关注的问题要多得多。但我不愿意相信,我们在效率方面甚至没有达到可能效率的二到四倍。我一直在呼喊,就像,我们可以做得更好。——是的,你wondering 那些解锁效率的机制是什么。在大公司里,有一种感觉是,一个工程师可能不相信他们能改变世界。也许在大公司里,你会把改变世界的责任委托给别人。但我认为,现实是,世界终究会由一个工程师来改变。所以,无论是在谷歌还是在一家初创公司,这都不重要。这就像谷歌和 Meta 需要帮助那些工程师相信。他们将是那些能够降低延迟的人,只需要一个像现在 Meta 里的 20 岁的 John Carmack 那样的人来改变一切。——我试图指出这一点并推动人们。就像,试着去,当你看到一些东西时,因为你会产生筒仓心态,你会想,“好吧,我知道那里有些东西不对劲,”但我就待在我的轨道上。有几个人我能想到,他们愿意到处奔波,天哪,我珍视他们。那些愿意,无所畏惧的人,他们会去,他们会去重建内核,改变这个发行版,去黑掉这里的固件,把事情做好。这相对来说是很少见的,有成千上万的开发者,而你只有一小撮人愿意在这个层面运作,这对他们来说可能是有风险的。政治因素确实存在。我处于一个非常有利的位置,我基本上是不可触及的,我被批评过两次,就像你说的,在那个帖子里的言论不敏感。你可能不应该那样说,但总的来说,是的,我每周都会在内部发布一些非常响亮和有见地的东西。我认为这对公司很有用。但是的,拥有这样的职位是很少见的,我不能提供关于某人如何做到这一点的建议。——好吧,你可以给公司提供一般的建议,给年轻人一点自由,最疯狂的想法来自年轻的心灵。所以你需要给年轻的心灵自由去思考宏大、疯狂和疯狂的想法。为此,他们必须有主见。他们必须思考疯狂的想法和念头,并以全部的热情去追求它们,而不被官僚主义或经理们所拖累。显然,初创公司真正赋予了这种能力。但大公司也可以。这是公司的一个设计挑战,对于大公司来说,看看如何能够实现这一点?如何能够赋予它力量?——因为大公司,那里有如此多的资源。他们完成了令人惊叹的事情,但还有更多的事情可以从中产生。我希望,我总是充满希望。我几乎在所有事情上都是一个乐观主义者。我认为事情会变得更好。我认为他们可以改进你所经历的道路,你正在学习什么有效,什么无效。我还没有准备好对任何事情的结果感到宿命论。——我也没有。我认识那些大公司里太多太好的、令人难以置信的人了。你和埃隆·马斯克是朋友,我经常和他谈话时,他会提到你是一位多么出色的工程师和一位伟大的远见者,他对你非常尊重。我从未当过你们俩谈话的旁观者。我只是想知道,你们俩是否会争论、辩论、讨论一些事情?你们俩是否会思考一些有趣的问题?你们来自不同的世界。也许在航空航天领域有一些交集,也许在你们新的人工智能的努力中,在思考方面有一些交集。你们俩的辩论有什么有趣的地方吗?——所以,我认为在某些方面,我们确实有类似的背景,我们年龄几乎相同,我们在个人电脑上有类似的编程背景,甚至我们读过的一些书和一些事情塑造了我们今天的样子。我认为在敏感性方面有一些相似之处,我们对同样的事情会说“胡说”,并且在不同的技术中看到同样的机会。而且有那种感觉,我总是谈论“光速解决方案”。而他则在思考事物的最低限度的制造、工程和运营角度。所以,我的意思是,我第一次见到埃隆是在航空航天时代开始的时候,我还不熟悉,我还在我的游戏开发圈子里。我真的不熟悉所有正在进行的成功的初创公司以及 PayPal 和他所有不同公司的发展情况。但当我开始做 Armadillo Aerospace 时,我遇到了他,他带着他的得力助手,一位推进专家。我们谈论火箭,我们能用它做什么?我们谈论了一些具体的事情,比如我们的飞行计算机是如何设置的?不同的推进剂选项是什么?用不同的方式组合事物会发生什么?在某些方面,他无疑是 2000 年代初航空航天社区中最大的参与者。他是资金最充足的,尽管与 NASA 相比,他的资金规模真的很小。但比我当时拥有的要多得多。但很有趣。几年后,我意识到,好吧,就像我当时的财务资源基本上就是埃隆在全力投入 SpaceX 和 Tesla 时所拥有的。而且我认为在很多方面,他没有得到他应得的尊重,他是一个可以退休的富人。他全力以赴,他真的会,他可能会破产。你可以看到很多运动员或艺人,他们拥有世界上所有的钱,却挥霍一空。他本可以成为商业案例的典范。但他所做的事情,太空探索,交通电气化,太阳能城市之类的,这些都是世界级的大事。我非常钦佩他愿意全身心地投入其中,因为与我相比,我当时正在做 Armadillo Aerospace,资金非常有限,那是约翰当时疯狂的钱,有一个固定的上限。如果它完全失败,也不会影响我或我的家人。当时我还在软件行业工作,而他却真的全力以赴。我对他非常尊重。人们不,我另一件让我恼火的事情是人们说,“哦,埃隆只是个商人。”“他只是,”“他得到了钱,”然后他只是投资于这一切。”而他确实深入参与了许多决策,并非所有决策都完美,但他非常关心发动机材料的选择,推进剂的选择。多年来,他一直告诉我,“别再用过氧化氢了。液氧才是唯一合适的氧化剂。”而且,我曾和他一起去过工厂,我们谈论了很多细节,比如这个焊缝是如何制作的,这个子组件是如何组合的,不同事物的启动和关闭行为是什么。所以,他确实在非常详细的层面参与其中。我认为他现在是现代人中最好的例子,他试图,在某种程度上,有效地微观管理 Tesla 和 SpaceX 的一些决策,因为他非常关心这件事。我非常担心他精力分散,他有 Boring Company、Neuralink、Twitter 以及其他各种可能的事情,我知道我有,我能关注的注意力是有限的,我必须把不同的时间段划分开。我回顾一下,就像,在我的航空航天方面,就像我没有全力投入其中。我没有以那样的水平投入自己,那将是成功的必要条件。是的,这是一种奇怪的事情,就像和他讨论一样。他是当今世界上最富有的人。但他的运作水平在技术层面仍然非常符合我的领域。——进行那种系统级别的思考,你可以深入到低级细节,然后上升到宏观层面。你认为在未来五到十年内,航空航天领域,你认为我们会把人类送上火星吗?你认为有趣的点是什么。——不,事实上,我打了个赌,我和一群人打了个赌,关于 2030 年之前登陆火星。这是一个有趣的故事,因为我参加了一个英特尔赞助的活动,我们有一群世界顶尖的聪明人,我们谈论计算方面的东西,但晚宴后的谈话是,未来还有什么?有人在白板上写下了“2030 年登陆火星”。房间里的大多数人都认为,是的。他们认为 SpaceX 正在取得巨大成功,我们有所有这些可能性,似乎很可能会这样。我说,不,我认为成功的几率不到 50%。人们会说,“哦,为什么这么悲观,或者别的什么。”当然,我几乎在所有事情上都是乐观的,但对我来说,我却是那个特立独行的人,说不,我不这么认为。然后我开始说一些事情,好吧,让我们具体一点。我们打个赌,赌 10,000 美元,它不会发生。看到这一点真的很令人震惊,我再次,房间里挤满了聪明人,但一旦涉及到金钱,他们就会想,我是否愿意投入 10,000 美元?我不是房间里最富有的人。有比我富裕得多的人。有一个范围。但一旦他们开始思考,哦,我可能会因为坚持现在的立场而赔钱。所有这些工程师,他们都动了脑筋,他们开始思考,好吧,发射窗口,发射延迟。像这样需要多少次才能正确?我们有什么历史先例?然后大部分都归结为,好吧,那么在 2030 年之前到达那里呢?然后,嗯,不同的事情,你会选择 2032 年吗?但其中一个人确实继续前进,并足够乐观地和我打赌。所以,我有一个 10,000 美元的赌注,到 2030 年,我认为它会很快发生。我认为到 2030 年火星上可能会有基础设施,但我认为到 2030 年我们不会有人类登陆火星。我认为这是可能的,但我认为几率不到 50%。所以,我觉得打这个赌很安全。——好吧,我认为你有一个有趣的观点。如果我没记错的话,这是一个黑暗的观点,也许应该让人们欣赏埃隆·马斯克,那就是在这个特定的努力中,埃隆对成功至关重要。SpaceX 似乎是 2030 年左右人类登陆火星的关键。所以,如果埃隆出了什么事,这一切都会崩溃。——这与我最近打的另一个 10,000 美元的赌注形成对比,那就是自动驾驶汽车在城市里达到五级水平。人们一直在挑剔,我们可能不是指完全的五级,但我打赌的那个家伙,我们将会,我们知道我们的意思。—— [Lex] Jeff Atwood。——是的,Coding horror 和 Stack Overflow 等等。—— [Lex] 是的。——但是的,我的意思是,他认为人们不会在 2030 年在主要城市乘坐机器人出租车。就像你现在乘坐 Uber 一样,我认为它会。—— [Lex] 你认为你会。——区别在于,每个人都看着这个,就像,“哦,但是特斯拉已经错了很多年了。”他们已经承诺了多年,但还没有实现。而这与火星赌注的不同之处在于,火星赌注更多地是基于埃隆·马斯克。这是他的事情,他真的会竭尽全力去实现它。——也许甚至不是 SpaceX。—— [John] 是的。——也许只是埃隆·马斯克。——是的,因为如果埃隆离开了,SpaceX 上市并有了董事会,他们可以做更有利可图的事情,而不是专注于人类登陆火星。所以,这真的是一件个人事情。与此形成对比的是,自动驾驶汽车有十多家信誉良好的公司,正在努力工作。虽然是的,它的进展比大多数人预期的要慢,但打赌反对它就是打赌反对几乎整个世界,因为所有这些公司都有所有这些激励措施。这不仅仅是一个人的激情项目。而且我认为它是可以解决的。虽然我承认它不是百分之百的机会,因为它是可能的。自动驾驶问题的长尾最终会成为一个 AGI 完全问题。我认为狭义 AI 有很多价值可以挖掘,而且我认为它将会发生,而且可能比人们预期的要多,但这就是整个 S 型曲线,你高估了近期的进展,而低估了长期的进展。我认为自动驾驶也会如此。我认为 2030 年仍然是一个很好的赌注。——是的,不幸的是,自动驾驶是一个安全关键的问题。也就是说,如果你做得不好,人们就会受伤。——但另一方面,人类的驾驶技术很糟糕。所以,这不会是,这可能是让它通过的论点,就像,我们可以每年挽救 10,000 条生命,通过采用不完美的自动驾驶汽车,让它们承担很多驾驶责任。就像,美国每年有多少人死于车祸?其中很多是可以避免的。问题是,每次特斯拉发生车祸时,都会有一群人,他们有 vested interests,做空特斯拉,出来把它说成是世界上最糟糕的事情。人们会反对。但我的乐观主义者再次认为,我们将拥有比人类驾驶员统计上更安全的系统,当我们能够将更多这些责任移交给它时,我们将每年挽救成千上万人的生命。——作为一个深入研究过这个问题的人,从人类的角度来看,人类驾驶的好坏仍然是一个悬而未决的问题。我们互相说的一些话很有趣。所有人类的驾驶都很糟糕,除了你之外。就像我们认为自己驾驶技术很好。但在真正研究之后,我认为你会注意到,因为我看了几百小时的人类驾驶视频,以及这类项目。你会注意到,即使有分心,即使有其他一切,人类也能在注意力方面做一些令人难以置信的事情。即使你只是看着智能手机,也能从环境中获得线索,做出更明智的决定,使用本能的决定,一次又一次地拯救你,并且能够在周围有如此多的不确定性,在如此棘手的动态环境中做到这一点。我不知道,我不知道确切地击败那种常识推理的技能有多难。——所以,这是关于专家通常低估进展的研究之一,因为专家会想到他们处理的所有问题,他们会想,该死,我将很难解决所有这些问题。他们过滤掉了他们是成千上万领域中的一个专家的事实。你会想到,是的,我做不了所有这些。你有时会忘记你所处的生态系统的范围。如果你回想八年前,非常具体地说,AI 和机器学习的状态,当时是什么?我们可能在那时刚刚获得了 ResNets。看看八年来发生的令人惊叹的魔法般的事情,而且最近几年似乎也发生得更快了。然后你再往未来八年推测,我认为有 50% 的几率我们会看到 AGI 的生命迹象,如果需要的话,我们可以让它通过驾驶员培训来实际制造自动驾驶汽车。我认为狭义系统将在那之前很久就展现出真正的价值。——所以,AGI 的生命迹象,你提到了,好吧,首先,你是地球上最聪明的人之一。你可以解决许多不同的问题,正如你提到的,你的头脑被核能吸引。显然,虚拟现实与元宇宙是你可能产生巨大影响的领域。——所以,我想快速说一下核能,这是我非常了解的,这非常精确地感觉像是 SpaceX 之前的航空航天领域,根据我对所有这些事情的了解,物理学并没有改变。现在事情昂贵的原因不是根本性的。我希望有人能拥有非常强硬的埃隆·马斯克式的愿景,经济愿景,而不是聚变,聚变是那些想做核能的人的宠儿,因为它没有像裂变那样在很多人心中留下的污点。但它是一个极其复杂的事情,核聚变,你看看托卡马克或人们正在建造的任何东西,它都在做所有这些基础设施,最终只是为了让某样东西变热,然后通过传统的发电厂转化为能源,以及所有那些工作,我们认为我们已经有了方向。但即使它出来了,你仍然需要做所有那些极其复杂、昂贵的事情,只是为了让某样东西变热。而核裂变基本上是,你把这两块石头放在一起,它们自己就会变热。这要简单得多。它只是数量级上更简单,而实际的石头,精炼铀并不贵。它只占电力成本的百分之几。这就是我提出那个观点的原因,你可以拥有一个效率比现有系统低五倍的东西。如果工厂的其余部分便宜得多,你仍然可以非常有价值。——那么,你认为核能(裂变)可以解决多少比例的能源需求?那么,它能成为地球上的主要能源来源吗?——它可能占大部分,就像现在的铀储量,不足以支撑整个地球。但你进入快中子增殖反应堆和钍等领域,这些都是你为常规裂变所做的。一切都有了。现在,我的意思是,太阳能光伏已经很棒了。我目前的一个项目是处理一个离网系统,这很有趣,就像,再次,亲手操作所有东西,剥线,连接电线,做所有这些事情,并且在过去几十年里从外部稍微关注了一下,太阳能光伏方面取得了半导体般的惊人进展。所以我支持所有这些,但它并不能解决所有问题,而核能似乎仍然是获得许多基础能源的明智选择。太阳能可能更便宜,用于夏季空调负荷的峰值以及你可以以不同方式处理的事情。但这是一个奇怪的事情,我们一直拥有这项技术,但这些非技术原因,社会舆论,一直是推动这一重大因素,而它实际上应该是世界能源关注的基石。有趣的是,非技术因素如何真正主导了如此根本性的、关系到我们今天所知的人类生存的事情。——世界上许多麻烦,包括不同地区的战争,比如乌克兰,都是基于能源的,是的,它就在那里等待解决。话虽如此,对我个人而言,我认为很明显,如果实现了 AGI,它将改变人类历史的进程。——所以,关于 AGI,我当时在做决定,在 VR 之后我想专注于什么,我仍然定期从事 VR 工作。我每周花一天时间咨询 Meta,而 Boz Styles,咨询 CTO,就像一位侦探,会就一些具体的棘手问题提供咨询。我仍然对所有这些充满热情,但我一直在设法将它们分门别类,并将其压缩到一个更小的范围内来处理其他事情。我最终做出了决定,在经济型核裂变或通用人工智能之间做出选择,而裂变方面,我有很多有趣的事情在进行。但这需要,这将是一个相当大的项目。我认为它不需要像人们预期的那么大。我认为,像 SpaceX 那样规模的项目,你建造它,用它来为你的建筑供电,然后政府会理解你需要什么,每个人都喜欢存在性证明。我认为这是可能的,有人应该这样做,但这将涉及一些政治。它将涉及相当大的团队和许多我不喜欢的跨职能工作。而通用人工智能方面,在我看来,这可能是历史上一个单一的个人可能具有最高杠杆的时刻,我们对大脑的了解,我们对人工智能的了解。没有人能绝对肯定地说出这些事情,但我不是疯子,说通用人工智能的代码很可能只有几万行代码,而不是几百万行代码。这是一个人可以编写的代码,不像编写新的网页浏览器或操作系统。基于过去十年 AI 机器学习的进展,重要的我们不知道的事情很可能相对简单。可能只有 handful 的关键见解需要做出。每一个都可以写在信封背面。我们不知道它们是什么,但当它们与大规模的 GPU 和我们都能访问的数据结合在一起时,我们可以创造出一种行为像人类或生物的东西,然后可以根据需要进行教育,从而实现通用远程工作者,任何一个人通过计算机完成的事情,不需要物理互动,AGI 都可以做到。我们已经可以通过头像和合成深度伪造等模拟相当于 Zoom 会议。我们可以做到。我们对任何狭义的、可以形式化并制定损失函数的任务都具有超人的能力。但有些事情我们现在不知道如何做,但我认为它们并非难以逾越。现在,说这非常傲慢,就像,但我认为我几年前说的,到 2030 年,AGI 的生命迹象出现的几率是 50%,我可能已经稍微提高了这个几率。我现在可能是 55% 到 60%,因为我认为那里有一种加速感。——所以,我想知道,顺便说一句,你也写过,我打赌事后看来,我们会发现 AGI 所有关键剩余步骤的清晰前兆已经埋藏在今天的浩瀚文献中。所以,想法已经存在了。——我认为很有可能。AGI 的承诺吸引了许多人,包括我,其中一个原因是,我们知道我们只是从信息洪流中喝了一小口。我的意思是,即使在一个非常狭窄的领域,比如机器学习,你也无法阅读所有不断出现的论文。你无法回顾那些人们在 90 年代或更早的时候做过的聪明的事情,而这些事情却被遗忘了,因为当他们试图用 12 个神经元来做的时候,它们并没有成功。所以,这个想法,是的,我认为在一些早期的文献中埋藏着宝石,但那并不是所有事情所走的道路。你可以看到一种羊群效应,发生在现在的事情上。看到这一点几乎很有趣,就像,哦,谷歌做了一些事情,OpenAI 做了一些事情,Meta 做了一些事情,他们都是互相交流的人,他们都在互相超越,他们都能够在别人宣布之后一两个月内实现对方的工作。但是机器学习有各种各样的可能方法,我认为我们可能在事后回顾时会看到,是的,这似乎被这篇早期论文清楚地预测了,而这 turns out,如果你这样做,然后从动物训练中得到这个结果,再加上神经科学的这个东西,然后把它们放在一起,为它们设定一个学习的课程,那就是它所需要的。现在仍然很少有人说这是不可能的,或者需要几百年,而十年前,你会得到一群专家,其中相当一部分人会说不可能,或者需要几百年,可能需要几个世纪。而中位数估计是 50 到 70 年。而且它一直在下降,我知道我说八年,这仍然让我处于乐观的一方,但它并不疯狂地偏离主流。而且仅仅从 Meta 的层面来看,关于预测的趋势,下降的趋势,以及相对较快发生某事的想法。现在,我不相信快速起飞。这是人们说的一些安全问题。就像,哦,它会“砰”地一声,然后 AI 将接管世界。有很多原因让我认为这不是一个可信的立场。而且我认为我们将从一个我们开始看到看起来像动物行为,并且有一个人类声带连接到它们的地方开始。就像,我试图让埃隆说,就像,你的 Neuralink 的猪。给它一个人类声带,让它开始学习人类的语言。我认为,我认为动物智能比许多人认为的更接近人类智能。而且我认为文化和 IO 的模式使得鸿沟看起来比实际大得多。大脑的发育和皮层以及各种事物的扩展有一个平滑的谱系。——文化 IO 模式,是的,语言,翻译中的损失,隐藏了很多智能。所以,当你思考生命迹象或 AGI 时,你是在思考人类可解释的迹象。——我举的例子是,如果我们到了一个点,你有一个学习障碍的学龄前儿童,某种真正有特殊需要的孩子,仍然可以与他们最喜欢的电视节目和视频游戏互动,并且可以以一种明显像人类的方式进行训练和学习,到那时,你可以部署一支由工程师、认知科学家、发展教育家组成的军队,而且你有很多优势。与真正的教育不同,你可以进行回滚和 A/B 测试,你可以找到一条通过不同事物课程的黄金路径。如果你到了那个点,学习障碍的学龄前儿童,我认为这将是板上钉钉的事。——但你认为我们会注意到吗?所以,DeepMind、OpenAI 也取得了很多非常有趣的通用学习进展。我倾向于认为特斯拉的 Autopilot 应该得到比它应得的更多的赞誉,因为它在通用学习方面取得了进展,在多任务学习方面,增加了任务数量,并自动化了从发现边缘案例到学习边缘案例的过程。它真的从不同的角度接近 AGI 的通用学习问题,但更清晰的方法来自 DeepMind,你有一些游戏场景,你在那里构建系统,但我不知道,人们似乎相当。——是的,总会有人不相信,我根本不在乎。我的意思是,我不在乎他们是否相信。当它开始取代人们的工作时,我的意思是,我根本不在乎哲学僵尸论。——是的,绝对,绝对。但你认为你会注意到这里发生了什么特别的事情吗?或者因为对我来说,我注意到很多特别的事情。我认为,你知道,DeepMind 的 Alpha Zero 应该得到很多赞誉,它通过自我对弈机制真正解决了曾经被认为无法解决的问题,比如围棋,还有,蛋白质折叠也开始进入这个领域,学习正在发生。起初,它不是端到端的学习。现在它是对曾经被认为无法解决的蛋白质折叠问题的端到端学习。所以,是的,对你来说,一个真正神奇的时刻会是什么?——近年来发生了令人难以置信的事情。就像你说的,DeepMind、OpenAI 的所有东西都是巨大的展示品,但当你深入研究并阅读论文,并观察模型的发展方向时,它仍然像前馈。你输入一些东西,最后出来一些东西,我的意思是,也许有扩散模型或蒙特卡洛树搜索和其他事情在进行,但它不是一个生命体,它远非一个经历终身学习过程的生命体。——所以你想要一些能发出生命迹象的东西,就像神经网络、前馈神经网络和生命体有什么区别?——从根本上说,大脑是一个生成动作策略的循环神经网络。我的意思是,它是在生物基质上实现的。思考这些事情很有趣,因为我们知道,从根本上说,大脑不是卷积神经网络或 Transformer。这些是专门的东西,对我们正在做的事情非常有价值,但它不是大脑运作的方式。现在,我认为意识和人工智能总的来说是一个基质无关的机制,它不必像大脑那样实现。但如果你只有一个存在性证明,那么关心它所说和所做的事情肯定是有价值的。所以,任何狭义 AI 可以做的事情,你可以量化一个损失函数或奖励机制,你几乎肯定能够产生一个在训练、部署和推理模式下更具资源效益的东西,在推理模式下训练很多。但一个生命体将是一个持续的、终身学习的、任务无关的东西。而很多。——所以终身学习也很重要,长期记忆也是。所以记忆是那个谜题中一个很大的奇怪部分。——我们已经有了,再次,我对现在正在做的令人惊叹的事情表示最崇高的敬意,但有时它们可能会被带离上下文,有点像有一些烟雾和镜子在起作用,比如 Gato,最近的工作,多任务学习的东西,它是一个模型,可以玩所有 Atari 游戏,并且还能做所有这些其他事情,这很了不起。但当然,它并没有学会做所有这些。它是通过其他强化学习者去做的。即使是所有游戏,它仍然遵循每个 Atari 游戏的特定手工编码的奖励函数,它不是,它只是想在夏天的下午玩 Atari,因为这是它最感兴趣的事情。所以,它再次,不是通用的,它不是像人类那样学习。而且,我相信有很多事情很难制作一个损失函数,你可以通过这些现有的常规事物来训练。我们将一点一点地解决人们所做的所有事情,我们可以将其转化为狭义 AI 问题。这将创造数十亿,可能数万亿美元的价值。但仍然会有一系列的事情。而且我们有一些有争议的案例,比如自动驾驶汽车,这是可能的,这不是我的赌注,但有可能长尾问题足够棘手,以至于它确实需要一个完全的通用人工智能。反驳的观点是,数据几乎解决了所有问题,如果你有足够的数据,一切都是插值问题。特斯拉可能能够从他们所有部署的设备中获取足够的数据来做到这一点,但也许不行。还有其他问题,比如你想开战略会议,你想召集你所有的远程员工和顾问,你想要一个世界,其中一些人可以是 AI,他们与你互动,在一个模糊到无法制定清晰损失函数的领域。但他们仍然有一些事情,在某种程度上,他们在某种内部层面受到奖励,因为他们建立了一个对人类有价值的生命和与事物互动的能力。——你看,我仍然认为解决自动驾驶汽车问题将使我们离 AGI 更近。你可能不需要 AGI,但我对 Autopilot 的所作所为深受鼓舞。Waymo,所以一些其他公司,我认为 Waymo 在这方面处于领先地位,也非常有趣,但它们在学习型、数据饥渴型驾驶方法方面的努力没有那么雄心勃勃,我认为这非常接近能够让我们在 AGI 方面取得长足进步的东西。——是的,这很有趣,因为据我所知,埃隆对 AGI 构成生存威胁的担忧是完全认真的。我试图让他谈论 AI,但他不想。而且我认为,我从他那里感受到那种宿命论的感觉,这很奇怪,因为他的公司很可能将成为领先公司。引领很多方面,特斯拉是一家非常务实的公​​司,他们之所以做这些事情,是因为他们真的想解决实际问题。这与研究型公司不同,现在是人工智能研究人员的好时机。你可以选择万亿美元的公司,它们会付钱让你从事你感兴趣的问题。但这并不一定是在硬性推动 AGI 的核心问题,因为它将通过做人们目前正在做的事情或希望做的事情来产生很多价值。——我的意思是,我对你关于 AGI 的想法有一百万个问题,但你认为它需要实体化吗?你认为它需要有一个身体才能开始注意到生命迹象,并开发出能够推理、感知世界并像 AGI 应有的那样行动的系统吗?那么我们应该考虑机器人,还是可以在纯粹的数字系统中实现这一点?——我对此有明确的看法,那就是,不,它不需要实体化在物理世界中,你可以说我的大部分职业生涯都是关于创造模拟虚拟世界。你知道,在游戏或虚拟现实中。等等。从根本上说,我相信你可以创造一个模拟环境,它提供了真实环境的大部分价值。而将自己限制在物理世界中与物理对象实时运行,我认为是一个巨大的障碍。我的意思是,这是我所有航空航天工作带来的一个真正教训,现实在很多方面都很糟糕,处理所有机械部件,就像一切都会发生墨菲定律一样,即使你以前做得很好,在你做的第五个上,它也可能结果不同。所以,是的,我认为任何全身心投入实体化方面的人,他们都在给自己脚上绑了巨大的重量。而且我认为,我几乎会把他们排除在外,任何将此作为其信念基石的人,我几乎会认为他们无法实现 AGI,我非常惊讶埃隆对人形机器人很感兴趣。我的意思是,就像 NASA 的机器人一样,它总是几乎是一个笑话,你们在做什么?——嗯,这很有趣,因为他对这个问题有非常务实的看法。这只是解决工厂里一个特定问题的一种方式。——现在,我认为一旦你有了 AGI,机器人身体,人形身体将非常有价值。我只是不认为它们有助于实现 AGI。——嗯,他有一个非常……我不同意并与他争论的实用观点,但这是一个实用观点,那就是,你可以将驾驶问题转移到机器人操作问题,因为其中很大一部分是感知。这是感知和行动,只是不同的环境。所以你可以将所有相同类型的数据引擎学习过程应用于不同的环境。那么为什么不将其应用于人形机器人环境呢?但我确实认为,实体机器人具有某种魔力。——这可能是最终说服人们的东西。——是的。——但同样,我并不太在意说服人们。你知道,我所期待的世界是,你去了网站,说,我今天想让五个弗兰克一号加入我的团队。它们都会启动,然后开始出现在你的 Zoom 会议中。——为了反驳,但也为了同意你。但首先要反驳。我认为你需要说服人们,让他们欢迎那东西进入他们的生活。——我认为有足够多的企业是基于客观的、利润损失的原则运作的,我的意思是,如果你看看有多少事情,再次谈论世界作为一个进化的空间,当你拥有自由市场和企业家时,你就会有人愿意出去尝试任何疯狂的事情。当它被证明是有益的时候,在所有地方都会有快速的追随者。——是的,你说,我的意思是,Quake 和 VR 是一种实体化,但只是在一个数字世界里,如果你能够在那种数字现实中证明,如果你能够做一些有成效的事情,那么 AGI 不需要有身体。——是的,这就像一个我一直在与自己争论的非常实际的技术问题。如果你在进行训练和学习,并且你有,就像,你可以看《芝麻街》和玩 Master System 游戏之类的,仅仅是视频输入就足够了吗?是视频进来了,还是它真的应该在一个虚拟电视上,在一个虚拟房间里,即使它是一个简单的房间,只是为了让你感觉到你正在看屏幕上的二维投影,而不是让屏幕直接传输到你的视网膜。我认为有可能通过一些生命迹象来克服这些,只是直接投射到感受野,但最终为了更……像人类的情感联系,可能有一个 VR 房间,里面有很多屏幕供 AI 学习。

在可能是有帮助的。——这可能是一个不同人工智能的世界,它们相互作用。——我认为自我玩耍是关键的事情之一,在社交方面,我为自己设定的另一个限制是,我需要一些至少是潜在的实时东西,因为我想要,这很好,你总是可以放慢时间。你可以运行在一个子规模系统上,并在某个较低的级别测试一个算法。如果你有多余的计算能力,那么比实时运行得更快是一件好事。但我想让人工智能能够与人类进行社交互动,或者与实际的人进行批判性互动。就像一个儿童发展精神科医生进来互动,在他们探索不同事物时,做“好孩子坏孩子”之类的事情。而且,从很多方面来说,约束的价值也很好。如果我说,我的一个约束是实时操作,我的意思是,它可能仍然是一个巨大的数据中心,里面装满了计算机,但它应该能够通过 Zoom 会议与人们互动。这也是你开始说服人们的方式,即使它不是一个机器人身体在移动,最终会达到无可辩驳的水平。但如果你不仅能与 GPT 机器人来回打字,而是真的通过 Zoom 以具身化的形式与它们交谈,并与它们一起解决问题或探索情况,进行完全有状态且经过学习的对话,我认为这是一件有价值的事情。所以,我一直关注那些可以在大约每秒 30 帧的这种工作范围内实现的事情。而且我认为这是可行的。——你认为首先出现的、最引人注目的体验是出于娱乐还是出于商业目的,就像在机场里问的那样?所以,意思是,如果它与人工智能代理互动,它会更像是朋友的娱乐,几乎像治疗师或任何东西,那种互动吗?还是在商业环境中,就像你说的,头脑风暴不同的想法,这都是图灵测试或原始图灵测试精神的一种不同表述。你认为最大的好处将首先来自哪里?——它将从极其昂贵开始。我的意思是,如果你我们仍然在猜测需要什么样的计算能力,我倾向于认为,你不必去计算那些数字,比如 860 亿个神经元,一万亿个突触。我不认为所有这些都需要是权重。我不认为我们需要如此庞大、如此频繁地评估的模型。我的依据是,我们对大脑的某些部分的功能有合理的估计。我们没有新皮质的公式,但我们对一些其他的感觉处理有所了解,而且感觉我们不需要,我们可以用更少的权重在计算机上模拟它,但仍然可能需要数千个 GPU 才能运行人类水平的 AGI,这取决于它的实现方式,这可能会让你拥有一个大约 128 个的集群,并可以批量运行人们,这取决于权重和事物设置方式是否存在稀疏性,如果它是一个相当密集的东西,那么仅仅是内存带宽的权衡就意味着你可以在同一时间获得 128 个。要么它们都在一起,并行学习,要么它们都在一起运行,与一群人交谈。但仍然,如果你需要数千个 GPU 来运行这些东西,那将是相当昂贵的。它可能一开始每小时要花费一千美元,即使是你的开发后或类似的东西,你只会用于商业。你知道,一些你认为会帮助你做出战略决策或指出一些非常重要的事情。但我也完全有信心,在 AGI 类计算方面,我们将实现千倍的成本效益提升。不一定是在通用计算方面,但我们在封装、做出正确的权衡、所有这些相同类型的事情方面还有很多可以做的,在接下来的几十年里,千倍很容易,然后你就会降到每小时一美元,然后你就会想,我应该有一群人工智能跟着我,帮助我做任何我想做的事情。——这是一个有趣的轨迹,但我会反驳,因为我,在这种情况下,如果你想支付数千美元,它应该提供一些价值。我认为通过一个愚蠢的人工智能更容易提供价值,而一个愚蠢的人工智能需要一个 AGI 来仅仅成为一个朋友。我认为世界上有巨大的孤独感,我认为一个有效的、不一定完美、不一定聪明、但必须富有同情心的朋友。拥有情商,拥有记忆能力,拥有倾听能力。我们大多数人都不倾听对方。爱和关心某人、爱某人时,就是倾听。这是我们彼此珍视的东西。如果人工智能能做到这一点,我认为它提供了巨大的价值,而且非常重要的是,它通过倾听和理解来提供价值,而不是提供非常好的建议。我认为提供非常好的建议非常困难,这是下一个层次的步骤,我认为这比提供陪伴更容易。——是的,我不会不同意。我的意思是,我认为很少有东西我敢说不能归结为某种狭义的人工智能。我认为我们可以轻易地创造万亿美元的价值,以及在那里可以完成的所有事情。而且很多事情都可以通过障眼法来完成,而无需走完整个过程。我的意思是,将会有一个 AGI 的“末日版本”,它不是真正的 AGI,它都是障眼法。但它碰巧做了足够多的有价值的事情,以至于它对人们来说非常有用和有价值。但总有一天,你确实想达到拥有完全通用事物的程度,并且停止为每件事制作定制的专用系统,然后开始使用更高级的语言,而不是用汇编语言编写一切。——意识呢,那个词?你认为它是解决 AGI 的根本,还是人类认知的怪癖?——我认为关于意识的大多数论点都没有多少价值。我认为意识就是大脑在运作时的一种感觉。——是的。——我普遍认同的意识“混乱理论”是,有很多东西在周围翻腾,我把它们看作是稍微随机的、稀疏的、分布式的记忆位串,它们正在发生,回忆起不同的联想记忆。最终,你会获得某种程度的共识,然后它会上升到有意识的思想。而这些微小的随机性,在它在不同事物之间循环和回忆不同记忆时存在,这在很大程度上就是我们的想象力和创造力。所以我认为它没有什么深奥的魔力。当然也不是象征性的。我认为它通常是这些联想的流动,上面叠加着随机噪声。而且我认为很多事情就像,这取决于你碰巧看到什么,当另一个想法出现时,它会叠加并融入下一个查询你记忆中的关键点。而这在很大程度上决定了你的意识链。——所以,主观体验的质量对智力来说不是必需的。——我不这么认为,我不认为那里有什么真正重要的东西。——其他人类品质呢,比如对死亡的恐惧之类的?比如这个旅程会结束的事实,这重要吗?就像我们关于截止日期和约束价值的对话一样。你认为这对智力重要吗?——这实际上是一个非常有趣的视角,我通常不会从这个角度来看待它,关于死亡是一个截止日期,迫使你做出更好的决定。——[Lex] 是的。——因为我听过人们谈论,如果你拥有永生,人们就会停止尝试和工作,因为他们有无穷的时间。——[Lex] 是的。——但我想说,我不认为死亡的紧迫感是必要的,因为这些东西确实会为我们提供奖励信号,而我们将控制奖励信号。而且必须有一些根本的东西会引起好奇心、目标设定等等。有些东西会在奖励层面发挥作用,无论是正面的还是负面的,还是两者兼有。我对它到底是什么没有强烈的看法,但这就是那种我怀疑它可能是需要解决的半打关键问题之一,关于什么才是主奖励,即局部任务的总体元奖励。——那可能是死亡的巨大负奖励,也许不是死亡,而是能够退出互动。所以,当人们把人工智能系统当作仆人对待时,这让我感到困扰。所以,这并不困扰我,但我的意思是,它确实划清了人工智能系统可能是什么的界限。它限制了可能性,一个系统可能是什么,就是把它当作工具。当然,从狭义人工智能的角度来看,狭义人工智能可以解决很多问题,就像你说的,以工具的形式。但它也可以是一个远不止是工具的存在。要成为一个存在,你必须尊重它作为一个存在。为此,它必须能够做出自己的决定,可以退出,可以说,“我受够你了,我想和你分手了,你没有好好对待我,我想继续前进。”所以我认为,实际上,选择结束这件事。——所以,关于这一点有几点。一方面,当你看到人们对机器人和 Alexa 之类的东西很刻薄时,这确实有点令人不安。这似乎反映了人性的阴暗面,但也有完全相反的一面,那就是有很多人将人性赋予无生命的物体或玩具,或者相对有限的东西。所以我认为人们可能会对这些早期人工智能投入更多情感投资,以不同的方式,这可能更危险。——是的,然后人工智能会操纵这一点。——但就人工智能伦理方面而言,我真的会避开任何这些讨论,甚至不去想它。这与安全问题类似,我认为这还为时过早。有一类人喜欢思考不切实际的事情,那些在世界上不存在、没有实际影响的事情。而且我认为,同样,因为我不认为会有快速的起飞,我认为我们实际上会有时间进行这些辩论,当我们知道我们正在辩论的形状时。有些人确实采取了原则性的方法,他们认为它会发展得太快,你真的需要领先于它。你需要思考这个问题,因为我们有缓慢的过程来达成任何共识,甚至提出关于这个的想法。也许这是真的。我不会把我的钱或资金投入到这样的事情上,因为我认为这还不是一个问题。而且我认为,当我们的学习障碍儿童出现时,我们应该真正开始讨论一些安全和伦理问题,但可能在此之前不会。——你能简要说明一下为什么你不认为会有快速的起飞吗?你有什么深刻的直觉吗?是因为它植根于物理世界,还是为什么?——是的,我相信我们将从需要数千个 GPU 的东西开始。而且我不知道你最近是否尝试过在云上获取一个千个 GPU 的实例,但这些东西不是你可以随意启动数百个的。确实存在挑战,我的意思是,这些东西需要数据中心,而数据中心需要数年时间来建造,而在过去的几年里,我们看到了一些数据中心正在建立,分布在不同的地方。它们是巨大的工程项目。你可以听到人们抱怨说,哦,网络布线错了,他们花了一个月的时间才把它拆开重新正确布线。这些东西不是你可以凭空变出来的。而关于它会逃到互联网上并接管其他系统的老套说法,那些快速起飞的说法显然是胡说八道,因为无论你有多聪明,即使你拥有完美的黑客能力,你也无法以高于一定速率打开 TCP 连接来瞬间接管世界,这种说法根本不合理。即使你拥有所有资源,这些也将是专门的系统,你最终会得到一个围绕着特定芯片和特定互连架构的东西,它不会仅仅被移植到别处。有趣的是,这将是所有代码都可以轻松放入一个 U 盘的东西,就像间谍惊悚片一样,你可以说,“嘿,我们破解了 AGI 的秘密,它就在这个 U 盘里,任何人都可以偷走它。”现在他们仍然需要建造正确的数据中心来部署它,并拥有正确的生活经验课程来将其提升到有价值的程度。但它的真正核心,将要发生的魔力将非常小。你知道,再次强调,是几万行代码,而不是数百万行代码。——正如你在这部间谍惊悚片中所提到的,想象一个世界是可能的。如果只有几行代码,我们可以想象一个计算表面正在增长的世界,也许是指数级增长的,这意味着冰箱开始配备 GPU,首先是智能手机,数十亿部智能手机。但也许如果存在代码可以传播到整个计算表面的高速公路,那么你就不再需要预订 AWS GPU 了。——当你开始深入研究将实际问题放到一个抽象机器上时,那里存在一些真正根本性的问题,这在实践中并没有很好地解决。而且一直以来都有这样的想法,就是总有办法让计算速度更快,说更多的浮点运算或更多的 GigaOps 或其他什么,这通常是容易的部分,但然后你还需要互连,然后是内存来处理输入。当你谈论说,嗯,手机,你只能连接 5G 连接之类的。如果你说,如何,如果你把你的计算分解到一百万部手机上,而不是仓库里的几千个 GPU 上,你可能会拥有某种这样的基础。但它的运行速度可能会慢一千倍。所以,是的,你可能有一个 AGI 在那里工作,但它不会是实时的 AGI,它将是某种以非常缓慢的速度运行的东西,比人类的思维速度慢得多。所以我并不担心这个问题。——你正在将问题转移到互连、通信、共享内存、集体智能方面,这同样极其困难。——是的,我的意思是,这回到了超级计算机的最早时期,你仍然需要带宽、存储和计算之间的平衡,有时更容易获得其中一个,但这些年来,你仍然需要所有这三者,这一点一直非常稳定。——你现在的努力,你提到你现在真的致力于人工智能。你认为你未来几个月、几年的人生会是什么样子?你希望在这里实现什么?——我本周刚刚签署了一份认购协议,为我的公司筹集一些投资资金。在过去的两年里,我从 Meta 撤退了,仍然在那里担任我的咨询 CTO 职务,但我将其定位为我将走维多利亚时代绅士科学家路线,我将成为那个富有的人,去追求科学,了解它,做实验。老实说,我惊讶于没有更多像我这样的人,有技术背景,赚了很多钱,并且对其中一些可能是人类历史上最大的杠杆点感兴趣。我的意思是,我知道,我听说过几个组织,基本上由一个富有的科技人士领导,他找了几个人在他身边工作,但令我惊讶的是,没有更多的人,没有十几个人。我的意思是,也许人们仍然认为这是一个无法解决的问题,它超出了他们能够像以前经营的任何一家初创公司那样产生影响的能力。但那就是我的想法,凭借我学到的一切,无论是游戏、航空航天,还是我经历的任何事情,我都会经历一个“幼虫阶段”,我会在想,好吧,我正在吸收所有这些信息,看看这是否是我真正能做到的事情?这是我是否可以投入大量生命来做的事情吗?我已经经历了 AI 机器学习领域的事情。我认为我已经掌握了它,我理解了它,世界上一些最聪明的人正在解决这个问题,但没有人确切知道它将走向何方。我们正在尝试很多事情,看看什么会成功。但是,我还有另一件有趣的事情,就是学习所有这些,你的知识路径的偶然性,以及谈论你与之相关的联想和背景,那些在同一条路径上学习的人将拥有相似的思维过程。而且我认为,我来自一个与那些拥有主要是学术背景的人不同的背景、不同的历史,这很有用,我有一些他们可以轻易指出的盲点。但我有一套不同的经验、历史和解决问题的方法以及系统工程方法,这些可能会有用。而且我负担得起打这个赌,我不会变得贫困。我有足够的钱来资助我余生都在做这件事。但我发现的是,我仍然没有投入,我的一只脚牢牢地踩在 VR 和 Meta 的一边,理论上我在那里有一个非常好的职位。我每周只需要工作一天来做我的咨询工作。但我每天都在参与,我仍然会想,我的电脑在那里,我会去查看工作场所和笔记,测试不同的东西,与人们沟通。但我最近做出了决定,不,我要认真对待。我仍然会与 Meta 保持联系,但我正在认真地追求 AGI 方面的事情。——而且这确实是一个非常有趣的观点,因为其中很多,机器学习、人工智能社区都很大。但实际上,几乎所有人都沿着相同的轨迹生活在这个社区里。拥有像你这样具有根本不同轨迹的人真是太有趣了,而大的解决方案就来自于此,因为存在一种“孤岛”,而且是一群人,他们遵循着一套相同的想法。——我真的很担心我不想显得像一个傲慢的局外人,因为我对他们的工作非常尊重,这是一个奇迹般的十年。我们现在正处于一场科学革命之中,所有做这件事的人,都是我们这个时代的爱因斯坦、玻尔等等。我很高兴看到我坐下来交谈过的每个人似乎都非常棒,乐于谈论事情,愿意承认我们不知道自己在做什么,我们正在边做边摸索。我的意思是,我在这方面负有巨大的债务,这一切对我来说真的始于萨姆·奥特曼试图招募我加入 OpenAI,当时我什么都不知道机器学习到底是怎么回事。事实上,有趣的是,你第一次联系我,大概是四年前,为你的 AI 播客。——是的,对于收听这个节目的人来说,他们应该知道,首先,我长期以来一直是你的忠实粉丝,但我们同意交谈,是的,大约四年前,当时它还叫“人工智能播客”,我们想做一个节目,你说“是”。——我说,我什么都不知道现代人工智能。——没错。——我说,我可以从机器学习的角度来谈,因为我在这方面做了很多工作,关于传感器和虚拟现实,但我们也许能找到一些可以谈论的东西。——然后,萨姆大约在同一时间和你谈论 OpenAI 的事情吗?——不,那是在那之后不久。我做了一些最基本的工作。我从头开始做了一些神经网络的工作,我用 C 语言写了所有东西,只是为了确保我理解了反向传播的最低级别,我的“螺丝钉”方法。但在萨姆找到我之后,他认为我可以在 OpenAI 发挥作用,主要是为了系统优化之类的事情,这让我感到荣幸。我不是专家。但我问伊利亚·苏茨克维尔给我一份阅读清单,他给了我一叠文件,上面写着:“好吧,这些是重要的事情。如果你真的阅读并理解了所有这些,你就会知道大多数机器学习研究人员工作的 80%。”我通读了所有这些论文,反复阅读,做了标记,然后弄清楚了其中的一些东西,然后开始扩展到我自己的研究领域,并最终开始编写我自己的实验,并做一些事情,弄清楚我不知道什么,我知识的极限是什么,并开始找到我的一些攻击角度,我认为这与人们正在做的事情有点不同。而且我已经有了几年了,比如两年,自从我离开了 Meta 的全职职位,现在我已经下定决心说我要认真对待它。但我从 Armadillo Aerospace 以来学到的一些经验,关于我如何需要更投入于此,其中存在着自由和成本,在某些方面,当你意识到自己足够富有,可以这样说时,“这真的无关紧要。我可以花一百万美元一年直到我死,这也没什么大不了的,没关系。”但这是一种可以随意漫步的机会。我能在自己身上看到这一点,当我做一些事情的时候。就像,哦,这很有趣,好奇的事情,让我们看看这个一段时间,让我们看看那个。它并没有真正集中在问题上。所以我做了一些事情,作为我让自己更有效的策略。比如我注意到我做得不好的一件事是,我有一个 Google Cloud 账户,可以获得 GPU,而且我发现我很少这样做,原因很简单,我总是能想到别的事情要做,而不是启动实例并运行实验。我可以继续处理我的本地泰坦之类的。但这真的很愚蠢。我的意思是,这花不了多少钱,我应该在那里运行更多的实验。所以我对自己说,好吧,我要买一个二十五万美元的 DGX 工作站,我就把它放在那里,如果我不使用它,它就会嘲笑我。如果那个东西的风扇不转,我就没有充分利用它。从那以后,我做了更多的实验。有趣的是,我以为我会做所有那些低级别的、针对 NVLink 优化的东西,但 90% 的我所做的是在不同的超参数上启动四个实验实例。——哦,有趣。所以你通过做各种机器学习实验来建立直觉。——但接下来最重要的事情是,我决定我要接受一些投资者的钱,因为我对别人的钱有一种过度的责任感。就像,我不想,我的意思是,我在 Meta 的很多推动和热情的恳求,就像我不想让扎克伯格浪费他的钱投资 Oculus。我希望它能成功。我希望它能改变世界。我希望它值得所有投入的时间、金钱和精力。而且我预计我的公司也会如此。——[Lex] 这是巨大的推动力,这笔投资。——我有投资者会对我有所期望。现在,我们都进行过这样的对话,这是一个低概率的长期赌注。这不是我能做的一百万件事之一,我能看到价值主张,但这并不是,我认为存在未知因素,但这是最看好的事情之一,也是人类有史以来最重要的事情之一。而且我认为这在我们有生之年,如果不是在十年内就能实现。所以,是的,这只是刚刚发生,就像认购协议,墨迹几乎还没有干。——它正在变干。我的意思是,正如我私下告诉你的,我欣赏的某个人,也是你认识的某个人,安德烈·帕蒂,我认为你们两个,生活轨迹不同,但解决问题的方式相似,他总是从头开始编写代码,他创造了很多小东西,即使是在斯坦福课程之外,也很有用,可以建立对事物的直觉,也可以帮助人们。它们都属于人工智能的范畴。你是否认为自己可能也会做这样的事情,或者不一定解决一个巨大的问题,而是在旅途中,在通往那个目标的路上,建立直觉并分享代码或想法或系统,这些系统能让人一窥 AGI,同时也对人们有所帮助?——是的。首先,安德烈很棒。在我经历“幼虫阶段”时,我从他的博客文章和他的斯坦福课程中学到了很多东西,非常有价值。几年前,当我刚开始我的“绅士科学家”生涯时,我有机会见到他。就在几个月前,当他休假时,他去了达拉斯,我们聊了一会儿,我非常享受和他在一起的时光。然后当我听说他实际上离开了特斯拉时,我当然和其他一百多人一样说,“嘿,如果你想和我一起工作,那将是我的荣幸。”——是的。——所以他认为他会做教育工作,但我认为在他走得太远之前,会有人给他一个他无法拒绝的提议。——哦,他目前的兴趣是教育方面。他是一个特别的头脑。你能谈谈是什么让他如此特别吗?根据你的理解。——就像他一样,他是一个非常注重编程的人,在做机器学习工作,而不是————没错。——这与学者不同,有时你可以在论文中看到,某人内心是一个数学家或统计学家,他们正在做一些机器学习方面的事情,但你知道,安德烈是关于完成事情的,你可以在他最早的各种方法中看到这一点,就像,“好吧,这是强化学习的工作原理。这是循环神经网络的工作原理。这是 Transformer 的工作原理,这是加密货币的工作原理,我,是的,他就是一个黑客,他早期的一篇文章是“机器学习黑客指南”。——[Lex] 是的。——他弃用了它,说“不要太在意里面的内容”。但这是一种贯穿于他许多工作中的想法,它又回到了黑客的心态和黑客精神,以及他所做的一切和分享的一切。——是的,他对待新事物的许多方法,就像你说的,“幼虫阶段”,就是,“让我写出最简单的代码来建立直觉。”——是的,就像我说,当我思考一个问题时,我用结构体之类的东西来勾勒,我在某种程度上是在用代码思考。——你也是一位武术家,精通柔道和柔术。这如何帮助你成为今天的你?——我的意思是,我是一名合格的柔道和摔跤选手。我的意思是,我绝不是什么超级巨星,但我经历了几次阶段,我年轻时做了一些,17 岁时做了一些,然后在我 30 多岁时认真地投入其中,我走了很远,我在这方面做得相当好,而且我非常欣赏它,一方面,如果你要做运动或类似的事情,它总是一种更有动力的运动形式。如果有人在压制你,你就会有动力去做些什么。提升你的能力,变得更好。——能力,是的。——但也有这样的感觉,我不是一个运动型的人。我初中时参加过摔跤,我经常希望,我认为如果我继续上高中,并且多一点那种感觉,那对我会有好处。我的意思是,就像我,一点点摔跤的氛围,总是在谈论拥抱艰苦训练,以及我与摔跤队相关的那种推动力,是的,回想起来,我希望我能经历那些并挑战自己。但即使在我 30 多岁时重新开始练习柔道和柔术,通常我都是垫子上年纪最大的人,但仍然有一种感觉,和团队一起锻炼,和那些你互相摔打的人在一起,但你感觉很好。我记得回家的路上,身体各处都在疼痛,然后想着,哦,那真是太棒了。而且它与一群与我工作无关的人混合在一起。你知道,偶尔会有人说,“哦,你是那个‘末日先生’。”但大多数时候,这只是生活的一个不同方面,你知道,一件好事。在我 40 岁时,我做出了一个决定,我想,也许我有点老了。我弄伤了肋骨,扭伤了几处,虽然没有受重伤。我想,我躲避的子弹够多了吗?我应该收手吗?在过去的十年里,我回去过几次,试图让我的孩子们也接触一下。我没有真正坚持任何一个,但回到垫子上感觉很好。如果你有一段时间没去了,确实会痛一段时间,但我仍然经常争论这个问题。我哥哥只比我小一岁,他现在在练柔术,而且练得很刻苦。他最近在一次比赛中赢得了一些奖牌。——[Lex] 所以他也参赛吗?——是的。而且我在想,是的,我想如果我们超过 50 岁,我们就属于“高管组”,我们超过 45 岁或类似年龄。我不能排除将来回去做一些事情的可能性,但同样,我只是在重新组织我的生活,以便更专注。可能不会发生。我把我的锻炼时间安排在一天开始或结束的时候,以便获得更长的、不间断的智力专注时间。——比如跑步之类的,或者散步,是的。——[John] 是的,我跑步和体操之类的,但是————它让你仍然可以思考一个问题,是的。——但如果你去柔道俱乐部之类的,你有一个固定的时间,那将是七点钟或十点钟,星期六。虽然我曾经在罗根节目上谈过这个问题,不久之后,卡洛斯·马查多联系了我,我以前和他训练过很多年,他说,“嘿,我们有一个小型私人俱乐部,有很多‘高管’类型的人,这确实诱惑了我。”——是的,我不知道你是否认识他,但约翰·达纳赫和戈登·赖安以及其他几个人搬到了奥斯汀。他有一种非常有趣的方式,非常深入、系统地思考柔术,揭示了它的精髓,就像它的科学一样。——而且我确实认为,作为一个年长的人考虑武术,我可以回忆起最早的时候重新开始练习柔道,我想,“现在就教我降服技,对吧?”你知道,就像学习十字固,学习绞技。但是的,随着年龄的增长,你会开始更多地思考,“好吧,我真的想学习整个柔道体系。就像,或者那里所有的不同东西,以及所有不同的方法。不仅仅是,如果你想比赛,你只会学好少数几样东西,但有时人们会想学得更广泛一些,并弄清楚一些事情。曾经有一段时间,我有一个,不完全是电子表格,但我确实有一个很长的文本文件,上面写着,“我学到的东西,以及如何将它们串联起来。”几年前我回去的时候,很高兴看到我把自己调整到了一个不错的状态,能够进行基本的摔跤。但我知道有很多微妙之处已经消失了,但可能很快就能恢复。——而且还有好处,我的意思是,你现在非常成功。你很聪明,而且老问题是自负。——是的,我仍然比我应该的更拼命。我的意思是,我就是那种,在很多比赛的人中,我身材偏小。我会和那些大个子一起去,我会拼尽全力。我会把自己逼得很紧,然后我会成为那种,在最初的五分钟里,我可能对任何人都有危险。但有时之后,我就已经精疲力尽了。而且我知道这对我很糟糕,因为它意味着我训练的时间更少了,当你在那里精疲力尽时。我喜欢认为我会做得更好,在我放弃柔道之后,我开始参加半程马拉松和泥泞跑之类的比赛。所以当我回到当地的柔道俱乐部时,我想,“哦,我应该为此拥有更好的心肺功能。”因为我现在是一名跑步者,我做所有这些,但结果并非如此。还是老样子,只是拼命地用力,拼命地拉伸。当然,当我与卡洛斯这样优秀的人合作时,就像他一样,整个“像水一样流动”是真的,他就像————柔道也是如此。一些最好的人,我曾与奥运金牌得主一起训练过,不知何故,和他们在一起一切都变得更容易了。一切,你开始感受到它的科学,它的音乐,它的舞蹈。一切都毫不费力。你明白它是一门艺术,而不仅仅是一种锻炼。——是的,这很有趣,我去了日本的讲道大会,也就是柔道的发源地。我记得我和一个老家伙一起滚动,我没有站着开始,只是从地面缠斗开始,它与卡洛斯的不同之处令人震惊。他仍然比我强,他抓住了我的手臂,我不得不认输,但风格完全不同,我感觉我无能为力。他只是包围着我,慢慢地把我压垮,然后抓住我的手臂,弯曲它,而卡洛斯,他很放松,很自由,你总是觉得,“哦,你就要抓住什么东西了。”但从来没有机会做到。但是,这是一种非常不同的感觉。——这是柔术和柔道之间区别的一个很好的总结。在柔术中,它是一种舞蹈,你感觉有一种自由。实际上,任何人,我尝试过,戈登·赖安,世界上最好的摔跤手之一,无道服摔跤手之一。你感觉你可以做任何事,但当你真的尝试做某事时,你却做不到。——神奇地不起作用。——但与世界上最好的柔道选手相比,是的,感觉就像有一张重达一千磅的毯子压在你身上。你感觉你什么都做不了。你被困住了。这是一种风格,这是武术风格的区别。但一旦你开始学习,你就会明白这一切都与人类运动、物理学、杠杆作用以及所有这些东西有关。而这就像。——[John] 是的。——这非常迷人。归根结底,对我来说,最大的好处是,以及它带来的谦卑感,当另一个人告诉你,存在一个等级制度,或者你不是那么特别。——是的,在最极端的情况下,当你因为窒息而认输时,你基本上是活着的,因为别人让你活着。这是其中之一,如果你仔细想想,这比大多数人考虑的更接近死亡。——而这种谦卑的行为也很好地带入你的工作中,因为在那里更难被谦卑,你知道吗?——是的,因为任何练习武术的人都不会认为自己是世界上最好的,因为每个人都会输。——让我给你一些建议。你今天会给年轻人什么关于生活、关于职业的建议?他们如何找到一份工作,如何产生影响,如何过上值得骄傲的生活?——很有趣,我被邀请去发表演讲,我上了两学期的大学就辍学了,然后去做了我的科技工作,但他们仍然想让我回去发表演讲。我把那个演讲钉在我的推特账号上,我仍然对我说的一切感觉很好。你知道,我最大的观点是,我的道路可能不适合每个人。事实上,我走的道路,甚至我根据我的经验和学习给出的建议,可能都不适合每个人。因为我所做的都是关于知识和深度。它是关于不仅仅是拥有表面能力来做我想做的事情,而是要彻底理解它们,让我能够做系统工程工作。并有时找到可以绕过的低效率,而整个世界不需要那样。你知道,大多数程序员不需要,或者任何类型的工程师都不一定需要这样做。他们需要做一份被分配给他们的简单工作,要可靠。让人们依赖你。做高质量的工作。但那些有兴趣想更深入地了解事物并更深入地学习的人。你知道,那里有层层叠叠的东西。而且令人惊叹。如果你是那种对此感到兴奋的人,世界从未像现在这样。它比以往任何时候都好。我的意思是,我曾经拥有的一切美好仍然存在。而且有全新的世界可以探索,你可以做不同的事情,而且这很辛苦。拥抱艰苦训练,并尽可能多地理解。然后为机会的出现做好准备,你不能只说,“这是我的人生目标。”然后就去努力。我的意思是,你也许可以做到,但如果你说,“我正在用这一套广泛的工具来准备自己,然后我意识到随着我在世界上的移动以及整个世界在我周围的变化,我正在意识到所有正在发生的变化,”那么你将会取得更大的总进展。然后寻找机会来部署你构建的工具。而且那里会有越来越多的这类事情,即对正在发生的事情的认识,低效率在哪里,可以做什么,可能是什么与当前实践相比。然后找到那些你可以去做出调整的领域,并做出一些可能影响世界上数百万甚至数十亿人的事情,让它变得更好。——也许从你自己的例子来看,你是如何认识到这一点关于自己的?你看到了某个事物中的层次,并且被吸引去发现它更深层次的真相。这是你无法控制的明显的事情吗?还是你必须采取一些行动来让自己深入挖掘?——在个人电脑的早期,我记得参考手册,最早的参考手册甚至在书的后面有计算机的电路图以及固件列表等等。我可以看看,当时我还是一名十几岁的少年,我并不理解很多东西。它们是如何工作的。我正在提取我能获得的信息,但我总是想知道所有这些。那里有一些神奇的信息。就像一个灰袍巫师所掌握的古老知识,他是守护者。所以我总是感到一种想要了解更多,想要探索神秘领域的力量。你知道,这贯穿了我所获得的所有价值,探索显卡导致了滚动优势,探索一些学术论文和东西,学习 BSP 树以及我可以用那些系统做到的不同事情,以及经历航空航天领域的巨大阶段,只是阅读了数千本书。我的意思是,再次强调,我有了足够的钱,我可以买我想要的所有书。那里的价值非常大,我小时候花钱很糟糕。我的妈妈认为我永远会破产,因为我会买我的漫画书,然后就没有钱了。但就像我想要的披萨,我想要的任何量的健怡可乐,电子游戏,然后是书。——[Lex] 书。——而且不需要太多。——[Lex] 是的。——一旦我每年赚 27,000 美元,我就感觉自己很富有,我得到了我想要的一切。但那种感觉,书对我来说一直很神奇。而这让我非常高兴的一件事是,安德烈说,当他来我家时,他说他发现我的图书馆鼓舞人心。

只是我拥有的。看到他很棒,我仍然看着他,他有点像个年轻人。我有时会想,如今的年轻人是否和我一样与书籍有着同样的关系,因为书籍在很多方面对我来说是如此重要。但那种感觉,是的,我总是想知道一切。我知道我不能。那是我说的最后一件事之一,你知道,你不可能知道一切,但你应该说服自己,你可以知道任何事情,任何一个特定的事情。它是人类创造和发现的。你可以在那里学会它,找到你需要的东西。——而且你可以深入学习它。——是的,你可以深入研究你遇到的任何层层叠叠的问题空间,并在那里学习一个横截面。——而且你不仅可以做到这一点并产生影响,你还可以通过这样做获得幸福。成为某件事的工匠是如此令人满足。——是的,我不想告诉人们,看,这是一个好的职业选择。只是咬紧牙关,忍受它。你知道,你想要人们,而且我认为有时可以从中找到乐趣,即使它可能不会立即吸引你,但我早就告诉人们了,比如在软件时代,很多游戏开发者之所以从事这份工作,仅仅是因为他们对游戏充满热情。但我总是对什么吸引我更灵活,我说,我认为我可以非常投入地从事操作系统工作,甚至数据库工作。我会从中找到兴趣,因为我认为世界上大多数重要的事情都有很多层次和复杂性,并且隐藏着很多机会。所以,这可能是最重要的事情,鼓励人们的是,我,你可以,这就像被武器化的好奇心。你可以运用你的好奇心去发现,去让事物对你有用和有价值,即使它们一开始看起来并非如此。——运用你的好奇心。是的,这非常正确。我们提到了这个争论点,即死亡或对死亡的恐惧是否是创造通用人工智能(AGI)的基础,但让我们谈谈它是否对人类来说是基础。你是否会考虑自己的死亡?——我真的不会。而且你可能总是要对别人说的关于像那样根本性的事情持保留态度,但我不会考虑衰老、迫在眉睫的死亡、与孩子们的遗产,诸如此类的事情。显然,世界上大多数人比我做得多得多。——[Lex] 是的。——所以我的意思是,我认为我在这一点上是个例外,是的,它并没有成为我思考和激励事物的一个真正部分。——所以日常存在就是关于你所爱的人和你面前的问题。——是的,我非常专注于我目前正在做的事情。我确实收回了这一点。有一个方面,生命的有限性确实影响了我,那就是关于我正在处理的问题的范围,当我决定处理像核裂变或通用人工智能这样的事情时,这些都是影响世界大部分地区的大事。我当时在某种程度上对自己说,好吧,我的意思是,我可能还有几次全力以赴的机会,但是的,我的精神能力会随着年龄的增长而衰退,大多数情况下是不可避免的。我不认为我们能在它成为我的问题之前解决其中一些问题的几率为零,我认为在接下来的几十年里会有一些令人兴奋的医疗进展,但我确实有一个模糊的计划,那就是当我不再处于最佳状态,并且我觉得我无法以某种方式对世界产生影响时,我可能会去做一些休闲的复古编程,或者我会做一些我现在不会投入生命去做的事情,但当我老了,就像在代码世界里园艺一样,我可以消磨时光。——然后退一步,考虑更大的问题。让我问你,我们人类为什么会在这里,这一切的意义是什么?约翰·卡马克,生命的意义是什么?——所以这和上一个问题非常相似。我知道很多人为此问题烦恼,但我真的不会。——我真的不在乎。——不,我们是生物。进化的偶然事件,我们有进化为生存和传递基因代码而创造的内在驱动力。我发现试图深入研究这一点并没有多大价值。我有我的动机,其中一些可能与基因有关,许多则取决于我的成长经历和我一生中的道路。我不会陷入抑郁或嫉妒之类的状态,或者任何会迫使我进行某种程度的灵魂探索的事情。我似乎还不错,好像不需要那样。——就像蚂蚁群里一只聪明的蚂蚁,不抬头看天空,想知道我为什么又在这里?——是的。——所以,为什么会这样,我们从一开始就存在的令人难以置信的神秘,首先是地球上生命的起源,然后从那里,从单细胞生物,整个进化过程不知何故将我们带到了这个能够建造《德军总部3D》、《毁灭战士》和《雷神之锤》并尝试解决通用人工智能问题,并创造出最终超越人类的事物的令人难以置信的智能。这并没有,为什么会这样?——根据我的经验,那些不关注眼前当下的人往往效率较低。我的意思是,这不是百分之百。——是的。——愿景对某些人来说很重要,但它似乎不是我的必要动力,而且我认为到达那里通常是通过完成的。再说一遍,就像梯度下降的魔力一样。——[Lex] 是的。——人们就是不相信,仅仅从局部来看就能让你达到所有这些壮观的事情,这几十年来我一直在观察,我真的看到了一些世界上最聪明的人,他们会永远反对这种想法,认为这不是一个宏大而复杂的愿景,而是微小的步骤。局部信息最终会带来所有最好的答案。——所以生命的意义就是跟随梯度下降把你带到的任何地方。这是一次令人难以置信的谈话,正式成为我在播客上进行的次数最长的谈话,这对我很重要,因为我能与我的英雄之一一起进行。约翰,我无法告诉你,你和我坐下来谈话对我有多大的意义。你是一个不可思议的人。我迫不及待地想知道你接下来会做什么,但你已经改变了世界。你是许多人的灵感来源,再说一遍,我们还没有涵盖我计划谈论的大部分内容。所以我希望我们将来有机会再次交谈,我迫不及待地想看看你接下来会做什么。再次感谢你和我交谈。——非常感谢。——感谢收听与约翰·卡马克的这次谈话。为了支持这个播客,请查看描述中的赞助商。现在,让我用约翰·卡马克自己的话来结束。专注的辛勤工作是成功的真正关键。把目光放在目标上,然后一步一步地朝着完成它前进。如果你不确定该怎么做,那就两种方法都试试,看看哪种效果更好。感谢您的收听,希望下次再见。