Skip to content

Latest commit

 

History

History
823 lines (459 loc) · 81.4 KB

Lex62-高德纳(Donald Knuth)访谈1.md

File metadata and controls

823 lines (459 loc) · 81.4 KB

框架与要点内容:唐纳德·克努特(Donald Knuth)访谈

└── 唐纳德·克努特(Donald Knuth)访谈纲要
    ├── 一、 引言 (0:00 - 3:45)
    │   ├── 介绍唐纳德·克努特
    │   ├── 主持人表达对话的重要性
    │   └── 介绍赞助商Cash App及FIRST组织
    └── 二、 正文
        ├── 1. IBM 650 与早期经历 (3:45 - 7:50)
        │   ├── 回忆被 IBM 650 吸引的经历
        │   ├── 描述 IBM 650 的特性和限制
        │   └── 谈及当时无法预测计算机的未来
        ├── 2. 极客(Geeks) (7:51 - 12:28)
        │   ├── 探讨“极客”的特质:抽象层级跳转、处理非均匀性
        │   ├── 以自身经历为例说明“极客”思维
        │   └── 认为图灵是第一个真正的“极客”
        ├── 3. 艾伦·图灵(Alan Turing) (12:29 - 14:26)
        │   ├── 谈论图灵对自己的影响
        │   ├── 分享对图灵的认识:理论家与实践者
        │   └── 举例说明图灵的“极客”思维(从右到左写数字)
        ├── 4. 英语与数学的结合 (14:26 - 21:56)
        │   ├── 介绍“文学化编程”理念
        │   ├── 谈论自己的阅读经历和文学喜好
        │   └── 解释技术写作的关键:形式化与非形式化结合,以读者为中心
        ├── 5. 非形式化与形式化编程 (21:57 - 23:05)
        │   └── 讨论非形式化和形式化编程结合的可能性和挑战
        ├── 6. 连接非形式化与形式化:以日本箭头谜题为例 (23:06 - 25:40)
        │   └── 通过日本箭头谜题展示如何将形式化陈述转化为非形式化描述
        ├── 7. 神经网络与机器学习 (25:42 - 27:56)
        │   ├── 探讨机器学习和神经网络:利用数据构建算法
        │   ├── 认为机器学习降低了算法门槛
        │   └── 反思机器学习的可解释性和可信度
        ├── 8. 《计算机程序设计艺术》 (27:59 - 36:06)
        │   ├── 回顾创作初衷:编写编译器教材
        │   ├── 简述前四卷内容:基本算法、半数值算法、排序与查找、组合算法
        │   ├── 强调书中对算法的定量分析
        │   └── 组合算法是最喜欢的领域,因为有最大的优化空间
        ├── 9. 组合数学 (36:07 - 39:16)
        │   ├── 讨论70年代组合数学的爆发式发展
        │   └── 介绍组合数学中的经典问题,如NP难问题、图论问题
        ├── 10. 写作过程 (39:16 - 42:10)
        │   ├── 分享写作和思考过程:纸上初稿,电脑修改
        │   └── 每周编写约五个程序,并在书中描述前进行实际编程验证
        ├── 11. 工作中的挑战 (42:10 - 48:36)
        │   ├── 坦言工作并非总是充满乐趣,也有难熬的时刻
        │   ├── 对自己高标准的坚持和自我激励
        │   ├── 分享具体的写作细节:特殊纸张、打字风格、TeX排版
        │   └── 为了内容适用性删除关于棒球的例子
        ├── 12. 编程的艺术 (48:36 - 50:21)
        │   ├── 解释“艺术”一词的含义:人为创造,追求优雅和美感
        │   └── 认为可以将程序编写成艺术品
        ├── 13. 令人惊讶的发现:布尔决策图(BDD) (50:21 - 54:24)
        │   ├── 介绍BDD:一种高效表示布尔函数的方法
        │   ├── BDD的出现对研究的冲击及其在计算机设计中的应用
        │   └── BDD和SAT求解器是第4B卷的重要内容
        ├── 14. 算法分析:大O符号 (54:25 - 57:19)
        │   ├── 讨论算法分析中的最坏情况和平均情况
        │   └── 解释大O符号的作用:描述未知但有界限的量
        ├── 15. P=NP 问题 (57:20 - 1:08:50)
        │   ├── 探讨P=NP问题:证明P=NP也未必能找到解决难题的实际算法
        │   ├── 以六贯棋和图论定理为例说明存在已知存在但无法找到的算法
        │   └── 解释认为P=NP的直觉:需要排除的算法可能性太多
        ├── 16. 人工智能 (1:08:51 - 1:12:31)
        │   ├── 认为人工智能领域是推动计算机科学发展的重要力量
        │   └── 表达对“机器真正理解”与“模拟理解”之间差距的担忧
        ├── 17. 蚁群与人类认知 (1:12:32 - 1:15:27)
        │   ├── 讨论多处理器算法和分布式系统
        │   ├── 认为研究蚁群的组织方式可能是理解人类认知的关键
        │   └── 将蚁群看作一个整体的认知系统
        ├── 18. 康威生命游戏 (1:15:28 - 1:16:30)
        │   ├── 康威生命游戏可以模拟任何可计算过程
        │   └── 强调其分布式和单元简单的特性
        ├── 19. 上帝与骰子 (1:16:31 - 1:17:09)
        │   └── 认为上帝可以使用随机性,因为随机性在算法中很重要且高效
        ├── 20. 关于圣经的研究 (1:17:10 - 1:22:27)
        │   ├── 分享研究圣经的经历和感悟:学习未知,不断逼近真理
        │   ├── 采用随机抽样的方法研究圣经,并查阅相关文献
        │   ├── 认为圣经的主旨是探索如何与上帝和谐共处
        │   └── 认为无法证明上帝是否存在是一件好事,可以保留神秘感
        ├── 21. 假如我是上帝 (1:22:28 - 1:24:24)
        │   ├── 进行思维实验:如果自己是上帝,会如何向人类展现自己?
        │   ├── 推荐相关主题的书籍
        │   └── 认为这个练习可以帮助人们认识到自身的局限性
        ├── 22. 人生的算法分析 (1:24:25 - 1:28:25)
        │   ├── 用算法分析的方式回顾自己的人生
        │   └── 提出“0.8幸福理论”:80%的时间感到幸福是理想状态
        ├── 23. 面对死亡 (1:28:26 - 1:33:40)
        │   ├── 分享面对父亲去世和自身患癌的经历
        │   ├── 谈论对死亡的看法:接受并顺其自然
        │   └── 讲述完成音乐创作的经历,并视其为人生中除《计算机程序设计艺术》外最重要的目标
        ├── 24. TeX 排版系统 (1:33:40 - 1:39:23)
        │   ├── 感谢 TeX 对学术界的贡献
        │   ├── 探讨如何创造优美的字体和公式
        │   └── 分享对 TeX 的不断改进和追求
        ├── 25. 我们对世界的理解 (1:39:24 - 1:43:29)
        │   ├── 认为人类对自然界的理解非常有限,只是沧海一粟
        │   └── 讨论有限与无限:即使是有限的宇宙,也远超人类的理解范围
        └── 26. 问上帝的问题 (1:43:30 - 1:44:48)
            └── 如果可以问上帝一个问题,会问:“您在天堂用什么浏览器?”
    └── 三、 结语 (1:44:49 - 1:45:53)
        ├── 感谢赞助商Cash App
        └── 引用唐纳德·克努特的名言:“我们应该不断地努力将每一门艺术转化为科学,在这个过程中,我们提升了艺术。”

唐纳德·克努特(Donald Knuth)访谈实录

一、 引言 (0:00 - 3:45)

Lex Fridman: 大家好,今天我非常荣幸地邀请到了唐纳德·克努特教授,他是计算机科学和数学领域最伟大、最具影响力的学者之一。他是1974年图灵奖的获得者,这可是被誉为“计算机界的诺贝尔奖”啊!他还撰写了多卷巨著——《计算机程序设计艺术》,并对算法的计算复杂性进行了严谨的分析,做出了若干关键贡献,其中就包括我们都熟知的“大O符号”。此外,他还发明了TeX排版系统,如今大多数计算机科学家、物理学家、数学家以及各领域的工程师们都在用它撰写技术论文,并让论文看起来非常美观。我觉得没有比与Don——我们领域内最友善、最杰出的人物之一——一起结束2019年更棒的事情了。这次谈话其实在几个月前就录制了,我一直珍藏着,因为,可能有点反直觉,这次谈话对我来说意义重大。大家可能难以置信,那时我对视频录制还知之甚少,所以拍摄角度有点问题,希望大家不要介意。当时的办公室空间有点狭窄,但那是一个神奇的空间,因为Don的大部分工作都是在那里完成的。他能邀请我到他家里,对我来说意义非凡。为了这次访谈,我可是经历了一番周折,很多人都知道,他不查邮件,所以我必须发挥创造力。不过一切努力都是值得的!我做这个播客刚刚一年多,虽然有时需要牺牲一点睡眠,但我总是乐在其中,也很高兴能成为这个充满好奇心的社区的一员。感谢大家的支持、友善的评论和有趣的讨论,我期待着在2020年与大家进行更多这样的交流。这是人工智能播客,如果您喜欢,请在YouTube上订阅,在Apple播客上给五星好评,在Spotify上关注,在Patreon上支持,或者直接在Twitter上与我联系,我的Twitter账号是@lexfridman,注意是“fridman”。

我最近开始在引言的最后加入广告,在介绍完嘉宾后,我会插入一到两分钟的广告,并且在对话过程中绝不会插入任何广告,以免打断谈话的流畅性。我希望这种方式不会影响您的收听体验。我会为每个谈话节点设置时间戳,方便您跳过广告,当然如果您能听一下广告并通过尝试广告中的产品或服务来支持这个播客,那就更好了。本期节目由Cash App呈现,它是App Store中排名第一的金融应用。我个人用Cash App给朋友转账,但您也可以用它在几秒钟内购买、出售和存入比特币。Cash App还推出了一个投资功能,您可以购买零碎的股票,比如说,无论股价是多少,您都可以只买一美元。经纪服务由Cash App Investing提供,它是Square的子公司,也是SIPC的成员。

我很高兴能与Cash App合作,支持我最喜欢的组织之一——FIRST。FIRST以其FIRST机器人竞赛和乐高竞赛而闻名,他们在全球超过110个国家教育和激励着成千上万的学生,并在Charity Navigator上获得了完美的评级,这意味着捐赠的资金得到了最有效的利用。当您从App Store或Google Play下载Cash App并使用代码“Lex podcast”时,您将获得10美元,同时Cash App也将向FIRST捐赠10美元,我亲眼见证了这个组织如何激励着年轻人们去梦想用工程创造一个更美好的世界。

现在,让我们正式开始与唐纳德·克努特的对话。回到1957年,在凯斯理工学院,您曾经……

二、 正文

  1. IBM 650 与早期经历 (3:45 - 7:50)

Lex Fridman: 回到1957年,在凯斯理工学院,您曾经有幸在几个晚上使用了一台IBM 650计算机,就像您过去谈到的那样,然后您就爱上了计算机。您能带我回到那个时刻吗?IBM 650的什么特质吸引了您?

Donald Knuth: 嗯,IBM 650,这台机器,它虽然没有占满整个房间,但它体积很大,也很嘈杂。我第一次看到它时,是隔着一扇窗户,上面有很多灯在闪烁。那时我还是个大一新生,我在统计组有一份工作,负责打孔卡片、整理数据,然后在另一台机器上对它们进行排序。后来他们购入了这台新计算机,它上面的灯光很有趣。而且,我有进入那栋楼的钥匙,所以,你知道的,我可以进去看看它,还拿到了一本它的手册。我最初的经验主要基于我可以给卡片打孔,这在当时是件大事,虽然卡片很厚。650在当时尺寸很大,但功能和内存却非常小。它有2000个字的内存,一个字是10个十进制数字加上一个符号。它做两个数字相加,大概需要,比如说,3毫秒。这在当时已经很快了。

Lex Fridman: 是内存限制了它的性能?

Donald Knuth: 是的,内存是个问题。之所以是3毫秒,是因为磁鼓转一圈需要5毫秒,而你可能需要等待5个周期时间。如果磁鼓上某个位置有一条指令,那么它需要经过3个磁鼓凹槽才能准备好读取指令的数据。磁鼓转50圈,你转3圈就可以得到数据,然后再转3圈就可以得到下一条指令——如果下一条指令就在那里的话。否则,你就得一直转到那里。而且我们当时没有任何随机存取内存,直到我大四的时候,我们才获得了50个字的随机存取内存,那可是无价之宝!我们会把数据以60个字为一组搬到随机存取内存中,然后再从头开始。所以我们得安排好什么时候搬上去。

Lex Fridman: 您当时能预测到60年后计算机的未来吗?

Donald Knuth: 事实上,我被问过的最难的问题就是“我当时能预测到什么”。换句话说,采访者问我:“关于计算机,有什么是让你感到惊讶的?”我立刻就列举了几十件事情。然后她又问:“那什么没有让你感到惊讶?”我花了五分钟时间去思考我本可以预测到的事情,但我什么也想不出来。不过,关于这台机器,我当时并不了解……那时世界上还没有太多这样的机器。650是第一台产量超过一千台的机器,在那之前,每种机器可能只有六台左右。

Lex Fridman: 是第一台大规模生产的机器?

Donald Knuth: 是的,是第一台大规模生产的机器。IBM当时不出售它们,而是出租,但他们以非常优惠的价格把它们出租给大学。所以,这就是为什么当时很多学生都了解到了计算机。

  1. 极客(Geeks) (7:51 - 12:28)

Lex Fridman: 您将那些倾向于计算思维的人,包括您自己,称为“极客”。您是否认为,在您的成长过程中发生了某些事情,使您的大脑以某种特定的方式构建,从而与计算机产生了共鸣?您估计这样的人占总人口的2%。这个数据在您的大部分职业生涯中都相当稳定。然而,现在可能有所不同,因为现在的孩子们在年幼时有着不同的经历。那么,对于一个“极客”来说,世界是什么样子的呢?是什么样的思维方式使他们与众不同?

Donald Knuth: 这在50年代是一个重要的问题。IBM注意到存在“极客”和非“极客”,所以他们试图雇佣“极客”。他们甚至还登过广告,说:“如果你会下棋,就来麦迪逊大道面试吧。”诸如此类的。他们尝试了一些方法。那么,是什么让我觉得容易,而其他人觉得难呢?我认为主要有两件事:一是我能在不同的抽象层级之间自如地跳转。你能看到宏观的东西,也能看到微观的东西,并且能在两者之间无意识地转换。为了解决某个大问题,你需要做的可能只是给某个寄存器加一,或者做一些能让你进入下一步的事情。

Lex Fridman: 并且能深入到……

Donald Knuth: 是的,我虽然不会深入到电子层面,但我知道那些毫秒意味着什么,我知道650上的磁鼓是怎么回事,我知道如何对一个数进行因式分解,或者如何求一个方程的根,因为我知道它在做什么。当我调试程序时,我会检查:我是不是打错孔了?我是不是写错了指令?我是不是在寄存器里放错了东西?每一层都不一样。所以,这种能够在多个层面上看待问题,并在它们之间流畅地转换的能力,在那些……怎么说呢,那些喜欢计算机的人身上,似乎更加明显。在我的书中,我不仅停留在高层,还会把底层的东西和高层的东西混合在一起。这意味着有些人认为我应该写出更好的书,这可能是对的。但也有人说,如果你那样思考,那这就是训练你自己的方法:不断地混合不同的层级,并学习如何在它们之间跳转。这是第一件事。

第二件事是一种天赋,就是能够处理非均匀性的能力,也就是说,能够处理存在多种情况(情况一、情况二、情况三……)的情况,而不是只有一两个规则支配一切。所以,如果一个算法有十个步骤,每个步骤都做不同的事情,这并不会困扰我。但很多纯数学是基于一两个通用规则的。这意味着像我这样的人有时会使用比必要情况更复杂的系统,因为我们并不介意自己没有找到那个简单的规则。

Lex Fridman: 您提到过,尽管雅可比、布尔、阿贝尔以及所有19世纪的数学家都可能有“极客”的症状,但第一个百分之百的“极客”是图灵。

Donald Knuth: 我认为,图灵比任何人,从他的作品来看,都更具有这种品质。

  1. 艾伦·图灵(Alan Turing) (12:29 - 14:26)

Lex Fridman: 图灵对您有什么影响呢?

Donald Knuth: 在我毕业几年后,我才知道了他(图灵)的那一面。在本科时,我们有一门课讲到了可计算性理论和图灵机,那听起来像是一种非常具体的、纯理论的方法。所以,我是在什么时候了解到他设计了一台机器,并且为曼彻斯特的机器写了一本很棒的手册,还发明了所有的子程序,而且他是一个真正的“黑客”,他亲自动手……我很多年来都以为他只做纯粹的形式化工作。当我开始阅读他自己的出版物时,我能感受到这种共鸣。当然,他有很多怪癖,比如他写数字是从左到右,哦不,是从右到左,因为那样计算机更容易处理。

Lex Fridman: 您的意思是从左到右……

Donald Knuth: 他会把π写成……9514.3,之类的。

Lex Fridman: 好吧,明白了,4.13……

Donald Knuth: 他会在黑板上写4.13……我的意思是,他训练自己那样做,因为他使用的计算机内部就是那样工作的。他训练自己像计算机一样思考。

Lex Fridman: 天呐,这就是“极客”思维!

  1. 英语与数学的结合 (14:26 - 21:56)

Lex Fridman: 您实践了计算机科学中一些最优美、最形式化的编程,但您也是“文学化编程”这一概念的创造者,这似乎更接近于用自然语言来描述编程。

Donald Knuth: 是的,没错。

Lex Fridman: 您如何看待这两者之间的关系?形式化理论和文学化编程的理念是否存在冲突?

Donald Knuth: 我们正处在一个非均匀的系统中。我不认为一种方法可以适用于所有情况,我也不认为所有的真理都存在于一种专业知识中。从某种意义上说,我的生活是英语和数学的凸组合。

Lex Fridman: 您对此感到满意?

Donald Knuth: 不仅满意,而且我认为这是一种蓬勃发展的状态。我希望我的孩子们也能这样,我希望他们能同时使用左脑和右脑,这样可以完成更多的事情。

Lex Fridman: 我听说您在30多岁之前并不真正为了娱乐而阅读文学作品,这是真的吗?

Donald Knuth: 你比我更了解我自己,我会尽力与你说的保持一致。

Lex Fridman: 哈哈,没关系,请相信我。

Donald Knuth: 好吧,那就按你说的来吧,这样更容易。

Lex Fridman: 我听过您提到一些对您有影响的文学作品,比如菲利普·罗斯的《美国牧歌》,我很喜欢这本书。不知道它是否对您也有意义?

Donald Knuth: 哦,好的。

Lex Fridman: 无论如何,有哪些文学作品对您产生了持久的影响?

Donald Knuth: 好的,我认识罗斯,我们俩在同一天获得了哈佛大学的博士学位。所以我们一起吃过午饭之类的。但他知道,计算机书籍永远卖不好。

Lex Fridman: 您离开俄罗斯时还是青少年。

Donald Knuth: 我必须说,托尔斯泰是对我影响最大的人之一,我特别喜欢《安娜·卡列尼娜》,不是因为故事中某个特定的情节,而是因为里面有一个角色,他有很多哲学性的讨论。它展现了一种完整的生活方式。所以,我觉得那本书特别美。另一方面,我不喜欢陀思妥耶夫斯基,因为我觉得他的天才主要在于他总是忘记自己一开始要做什么,他很马虎。我认为他根本没有打磨过自己的作品。而我倾向于欣赏那些一丝不苟的人。

Lex Fridman: 所以您更欣赏文字的韵律?

Donald Knuth: 我当然欣赏语言的韵律,虽然我无法欣赏俄语原文的韵律,但我能欣赏维克多·雨果的韵律。我和他的关系更密切。但我喜欢托尔斯泰,就像我喜欢赫尔曼·沃克的小说一样。我认为他的《玛乔丽·晨星》中也有一个类似的角色,他发展了自己的个人哲学并且始终如一。

Lex Fridman: 这值得思考。那尼采呢?您不喜欢弗里德里希·尼采吗?

Donald Knuth: 我总能看到尼采的名言,但我从来没有被吸引去读更多他的作品。

Lex Fridman: 他充满了矛盾,我们肯定不会欣赏他。但是席勒……

Donald Knuth: 我在试图表达我在文学中欣赏什么,一部分是,就像你说的,语言的韵律,文字的流畅性。比如雷蒙德·钱德勒和达希尔·哈米特,哈米特的句子很糟糕,而钱德勒的句子很优美,它们非常流畅。我读文学作品不是因为我觉得它对我有好处,或者因为别人说它很棒,而是因为我能在其中找到我喜欢的东西。你提到了詹姆斯·邦德,我很喜欢伊恩·弗莱明。我认为他有一种非常棒的天赋,如果他在故事中写一场高尔夫球赛或者桥牌比赛,那将是最激动人心的高尔夫球赛,或者是最精彩的桥牌牌局。他能充分利用这些元素,并把它们描写得非常优美。

Lex Fridman: 把这些联系起来,看看文学化编程,以及如何以一种模仿人类说话的方式向计算机传达算法,您如何看待自然语言,以及我们人类世界的混乱性,如何试图表达……

Donald Knuth: 文学化编程的理念实际上是通过从形式化和非形式化这两个角度来看待事物,从而更好地理解它。如果我们试图理解一个复杂的事物,我们可以从不同的角度来看待它。这实际上是技术写作的关键。一个优秀的技术作家会试图——虽然不会明说——把每件事都用形式化和非形式化的方式说两遍,或者三遍。但他们会试图让读者能够将这个概念融入到自己的大脑中。

Lex Fridman: 这是对作者更有利,还是对读者更有利,还是两者都有利?

Donald Knuth: 作者只是试图理解读者,这就是作者的目标:对读者有一个清晰的认识,说出读者接下来期望听到的内容,并用作者认为有趣的内容给读者留下深刻印象。所以,当我们编写计算机程序时,我们不应该只把它看作是给计算机的指令,我们真正想做的是让那些将要维护这个程序的人,或者程序员自己在调试程序时,能够深入了解为什么要这样做。所以,教师或书籍作者使用的所有阐述技巧都能让你成为一个更好的程序员——如果你的程序不是一次性的。

  1. 非形式化与形式化编程 (21:57 - 23:05)

Lex Fridman: 您认为非形式化和形式化编程的结合有希望吗?有多大难度?

Donald Knuth: 我想我是问错人了,因为我是一个“极客”。但对于一个“极客”来说,我认为这很容易。我不知道……有些人写作有困难,这可能是因为他们的大脑结构使他们难以写作,或者仅仅是因为他们没有足够的练习。我不是评判这件事的合适人选。但我不认为你可以教会任何人任何特定的技能。写作是我生命的一半,所以我会把它们结合起来。即使我写一个一次性的程序,我也会用文学化的方式来写,因为这样我可以更快地把它写对。

Lex Fridman: 它能被自动编译吗?

Donald Knuth: 我想,从技术角度来看,我的问题是,设计一个大部分编程都是非形式化完成的系统有多难?

Lex Fridman: 非形式化。

Donald Knuth: 非形式化,是的,非形式化。我认为任何能让它易于理解的方法都是好的。但你还必须理解非形式化的局限性,你必须……

Lex Fridman: 连接……

Donald Knuth: 所以,通过把形式化和非形式化结合起来,它才能真正地融入到你的大脑中。

  1. 连接非形式化与形式化:以日本箭头谜题为例 (23:06 - 25:40)

Donald Knuth: 你可以非正式地说……我现在正在研究一个问题,我们可以谈谈它。

Lex Fridman: 您能举个连接非形式化和形式化的例子吗?

Donald Knuth: 这个例子有点复杂。有一个自指的谜题,叫做日本箭头谜题。给你一堆方框,每个方框指向北、东、南或西四个方向。最后,你需要在每个方框中填入它指向的不同数字的数量。所以,如果我在一个方框中填入3,并且它指向其他五个方框,这意味着在那五个方框中将有三个不同的数字。而那些方框指向的……可能指向我,也可能指向其他方向。总之,我定义了一组数字,它们遵循这个复杂的条件:每个数字计算它指向的不同数字的数量。有个人把他的解法发给了我,他在解法中给出了形式化的陈述,说“这个为真,或者这个为真,这个为真……”。然后我试着把那个形式化的陈述非形式化,我试着说,“我包含一个3,我指向的方框包含数字1、2和6。”通过这种非形式化的方式,并且把它转换成对话的形式,这帮助我理解了他用抽象变量和一串数字写下来的逻辑陈述。

Lex Fridman: 这很有趣。

  1. 神经网络与机器学习 (25:42 - 27:56)

Lex Fridman: 那么,也许可以延伸一下,计算机科学、机器学习和神经网络领域正在复苏。所以……

Donald Knuth: 用数据来构建算法。

Lex Fridman: 这是另一种构建算法的方式。

Donald Knuth: 是的,你可以这么认为。

Lex Fridman: 与使用自然语言构建算法不同,使用数据来构建……您如何看待计算机科学的这个分支,在这个分支中,数据几乎比算法的机制更重要?

Donald Knuth: 它似乎适合于某种类型的非“极客”,这可能就是它兴起的原因,它有自己的社区,并且与那种思维方式产生了共鸣。但你很难信任这样的东西,因为即使是那些使用它的人,也不知道它学到了什么。

Lex Fridman: 这是一个非常有趣的想法,它使算法更容易被不同的社区、不同类型的人所接受。

Donald Knuth: 是的。

Lex Fridman: 这很有趣,因为就像文学化编程也许可以让某种类型的人更容易理解编程一样,有些人认为这只是教育的问题,任何人都可以学会成为一个伟大的程序员,任何人都可以成为一个伟大的滑雪者。

Donald Knuth: 我希望那是真的,但我知道有很多事情,我尝试过,而且我非常积极,我不断地努力提高自己,但我始终无法超越某个水平。例如,我无法在脑海中想象三维物体。我必须做一个模型,从各个角度观察它,然后我才能开始有一些概念。但其他人擅长四维,我是指物理学家。

  1. 《计算机程序设计艺术》 (27:59 - 36:06)

Lex Fridman: 让我们来谈谈《计算机程序设计艺术》。1962年,您列出了这部巨著的目录,对吧?它原本计划写成一本包含12章的书。现在,57年过去了,您正在写第4卷(共7卷)的中间部分。

Donald Knuth: 正在写第4B卷。

Lex Fridman: 准确来说是第4B卷。我能请您做一个不可能完成的任务吗?试着总结一下这本书到目前为止的内容,也许可以举几个例子,比如排序、查找、组合算法。如果您要给出一个简短的电梯演讲式的总结……

Donald Knuth: 好的,那要看电梯有多少层了。第一卷叫做“基本算法”,它讨论了一些你不能没有的东西,你必须知道程序是什么、算法是什么等基本概念。它还讨论了一台底层的机器,这样你就可以对它的工作原理有一些概念。它还包括输入/输出、子程序、归纳法等基本概念。

Lex Fridman: 归纳法。

Donald Knuth: 所以,我的书与许多其他书的不同之处在于,我不仅试图呈现算法,还试图分析它们。这意味着进行定量分析,我不仅说它有效,还说它有多快。所以,我需要用到数学。然后还有在计算机内部构造数据和表示信息的标准方法。这些都是第一卷的内容。

第二卷叫做“半数值算法”,我们在这里编写程序,但我们也处理数字。算法可以处理任何类型的对象,但特别是当对象是数字时,我们就有一些特殊的范式适用于处理数字。比如,有关于数字的算术运算,有充满数字的矩阵,有随机数,有充满数字的幂级数,还有各种以结构化方式包含数字的代数概念。计算机处理算术的方式是浮点运算,高精度算术,不仅包括加减乘除,还包括数字的比较。

然后第三卷讨论……我很喜欢那一卷,排序和查找。

Lex Fridman: 排序。

Donald Knuth: 排序,是的。在这里,我们不一定处理数字,因为你可以对字母和其他对象进行排序。我们一直在做查找,我们现在用谷歌搜索,但我的意思是,我们需要找到东西。所以,这些算法是各种应用的基础。这些卷都不是关于某个特定的应用,但这些应用是人们为什么要了解排序、为什么要了解随机数等的例子。

然后第四卷进入组合……我们有无数的事情需要处理。我们不断地发现,一个好主意可以让某些事情的速度提高一百万倍以上。我们正在处理的问题可能永远无法得到有效的解决,但这并不意味着我们要放弃它们。我们有机会获得好主意,并大大提高它们的速度。所以,这就是组合算法。

Lex Fridman: 这些是……

Donald Knuth: 组合算法,是的。

Lex Fridman: 您最喜欢的部分?

Donald Knuth: 组合算法是我一直以来最喜欢的,因为那时我的编程技能得到了最大的回报。你首先想到的显而易见的算法,和一个有趣的、微妙的、不那么明显的、但运行速度远超其他算法的算法,这两者之间是有区别的。这就是计算机科学的魅力所在。很多这些组合方法最初是在人工智能或密码学的应用中发现的。

Lex Fridman: 在您的情况下,您只是喜欢它们?

Donald Knuth: 我只是喜欢它们,它们更像谜题。

Lex Fridman: 在图论领域,您最喜欢图论的哪些方面?

Donald Knuth: 图非常棒,因为它们是现实世界中许多事物的绝佳模型。你可以在图上添加数字,就得到了一个网络。

Lex Fridman: 没错。

Donald Knuth: 所以,你有……但组合通常是指任何具有某种更高层结构的、非随机结构的对象排列。

Lex Fridman: 好的。

Donald Knuth: 是否有可能把一些东西放在一起,满足所有这些条件,就像我刚才提到的箭头,是否有一种方法可以把这些数字放在一堆相互指向的方框上,这是否可能?这就是第四卷的内容。

Lex Fridman: 这就是第四卷。第四卷的A部分讲了什么?

Donald Knuth: 第一部分。1962年,当我开始写目录时,它原本不是一本关于计算机编程的书,而是一本关于如何编写编译器的书。我被邀请写一本解释如何编写编译器的书。当时,全世界只有几十个人写过编译器,而我碰巧是其中之一。而且我也有一些写作经验,比如为校报写文章之类的。所以,我说:“太好了,我是我认识的人中唯一一个写过编译器,但没有发明任何编写编译器的新技术的人。”我认识的所有其他人都有非常棒的想法,但我看不出他们能写出一本书来描述别人的想法。所以,我可以成为那个记者,我可以解释所有这些关于编译器编写的酷炫想法。然后我开始……“哦,我需要有一章关于数据结构的,我需要一些介绍性的材料,我想谈谈查找,因为编译器编写者必须在符号表中查找变量,并找出……当你在一处写下变量的名称时,它应该与你在其他地方写的相同。”所以,你需要所有这些基本技术,而且,你知道的,我也懂一些算术,所以我加入了这些章节,还加入了一章关于组合的,因为那是我最喜欢的编程领域。但在1962年,关于组合方法的已知算法并不多,所以那一章很短,只是为了好玩而加入的。第十二章原本打算讲实际的编译器,应用前11章的所有内容来编写编译器。好的,这就是我1962年的目录。在70年代,整个组合领域经历了一次大爆发。人们谈论“组合爆炸”,他们通常指的是情况的数量激增,你把n变成n+1,突然之间,你的问题就变得难了十倍以上。但在70年代,关于组合的思想也出现了爆发,以至于……

Lex Fridman: 我敢打赌……

Donald Knuth: 在1975年,我敢打赌,超过一半的计算机科学期刊都是关于组合方法的。

  1. 组合数学 (36:07 - 39:16)

Lex Fridman: 当时人们的脑海中都在思考什么样的组合问题呢?

Donald Knuth: 主要是图论。

Lex Fridman: 图论?

Donald Knuth: 图论占主导地位。还有一些NP难问题,比如哈密顿路径,或者……

Lex Fridman: 是的,是的,超越图论。

Donald Knuth: 超越图论,还有运筹学。有一小类问题有高效的解法,它们与拟阵这种特殊的数学结构有关。但是,一旦我们处理涉及到三个事物(而不是两个)的问题时,事情就变得困难起来。比如可满足性问题,如果每个子句中都有两个逻辑元素,那么我们可以在线性时间内判断它是否可满足。但如果你允许子句中有三个变量,那么就没有人知道该怎么做了。所以,这些文章都是关于试图找到更好的方法来解决密码学问题和图论问题,在这些问题中,我们有很多数据,但我们不知道如何找到最佳的子集。而在排序中,我们很快就能得到答案。

Lex Fridman: 那么,从70年代到现在,它又是如何继续演变的呢?

Donald Knuth: 现在,可能每年有六次关于组合的会议,主题各不相同。幸运的是,我不必像70年代那样每个月都重写我的书。不过,仍然有大量的工作正在进行中,人们在这些似乎没有真正有效解决方案的问题上不断获得更好的想法,但我们仍然可以取得更大的进展。所以我现在正在完成的这本书,有一堆全新的方法。我知道没有其他的书涵盖了这种特定的方法。我正在尽我所能探索冰山的一角,我尝试了很多东西,并且不断地重写,因为我找到了更好的方法。

  1. 写作过程 (39:16 - 42:10)

Lex Fridman: 您的写作过程是怎样的?您的思考和写作过程是怎样的?每一天……

Donald Knuth: 您的日常安排是怎样的?

Lex Fridman: 是的,我猜这是个很好的问题,因为您一周七天都在……

Donald Knuth: 您最有资格回答这个问题。

Lex Fridman: 哈哈,没错。

Donald Knuth: 好的,我现在坐的这把椅子就是我进行……

Lex Fridman: 这就是魔法发生的地方?

Donald Knuth: 阅读和写作的地方。我通常坐在那边的椅子上,那里放着一些参考书。我发现这把椅子,是一位瑞典人设计的,这是唯一一把我坐几个小时都不会意识到自己坐在椅子上的椅子。旁边是一个站立式办公桌,当我用铅笔和橡皮写完一些东西后,我就会站起来,把它打出来,然后修改和重写。

Lex Fridman: 所以,最核心的想法首先会写在纸上?

Donald Knuth: 是的,没错。我每周大概写五个程序,当然是文学化编程。在我书中描述某些东西之前,我总是会先把它编成程序,看看它是如何工作的,而且我会尝试很多……例如,我在一月底了解到四位日本人的突破性进展,他们将我的一个方法扩展到了一个新的方向。所以,我花了五天时间编写了一个程序来实现他们的成果。但是他们只推广了我的一部分成果,所以,我需要看看我是否能推广更多的部分。然后我需要采用他们的方法,并在我已经用旧方法解决过的其他几十个问题上进行尝试。这又花了几周时间,然后我……你知道的,然后我开始看到曙光,我开始写终稿,然后我会把它打出来。这涉及到一些新的数学问题,所以我写信给我的朋友,他们可能擅长解决这些问题。他们解决了一些问题,所以我把它们作为练习题。一个月后,我吸收了一个我学到的新想法。我很高兴我及时听说了它,否则我的书就不会包含这个想法了。另一方面,这本书原本计划写300页,而我现在已经写了350页了,这又增加了10页。但如果我又学到了一个新想法,出版社可能会“杀”了我。

  1. 工作中的挑战 (42:10 - 48:36)

Lex Fridman: 在这个过程中,在这个月的过程中,是否有些日子比其他日子更难熬?

Donald Knuth: 是的,我的工作很有趣,但我也很努力。每一项大工作都有一些部分比其他部分有趣得多。所以,很多时候我会想,为什么我要有这么高的标准?为什么我不能马虎一点,不去尝试这个,只是报告答案呢?但我知道人们指望着我这样做,所以,好吧,唐纳德,咬紧牙关,去做吧!当我看到我真的取得了很好的成果,并且当我看到有人真的阅读并理解了我写的东西,并告诉我如何改进它时,我就会感到快乐。

我想提一下我的写作工具,我有一个平板,我用它来写初稿。

Lex Fridman: 好的。

Donald Knuth: 我大概40年前在加拿大拜访我姐姐时买了这种纸,他们生产的这种纸张尺寸很大,而且行间距很小。

Lex Fridman: 哦,是的,是的,非常特别。

Donald Knuth: 我从60年代开始就有这些手稿了。

Lex Fridman: 好的。

Donald Knuth: 我把我的想法写在纸上。我打字很快,事实上,我在高中的时候上过打字学校,所以我打字比思考还快。当我编辑的时候,我会站起来打字,然后我会修改它,最后的结果和你在……

Lex Fridman: 您会在打字的时候考虑风格和节奏之类的事情吗?

Donald Knuth: 是的,我用TeX打字。

Lex Fridman: 您能用TeX思考吗?

Donald Knuth: 在某种程度上可以,但我只使用少量的固定用法,比如定理的开头我会这样做,显示方程我会那样做,等等。但我必须看到它……

Lex Fridman: 就像这里一样。

Donald Knuth: 是的,没错。例如……

Lex Fridman: 您不写宏吗?您不……

Donald Knuth: 我不特别用宏来思考。但当我需要一个宏时,我会去创建并使用它。但问题是,我也会为了适应页面而写作。如果我能节省一行,我就会……这就像写俳句一样,我会想办法重写句子,以便它在页面上看起来更好。我不应该把时间浪费在这上面,但我忍不住,因为我知道这只会增加3%的时间。

Lex Fridman: 也可以说,这就是生活的意义所在。

Donald Knuth: 啊,是的,事实上,这是真的。就像我每周有一天会在花园里工作,这有点像是我生活的写照:除草,你知道的,清除程序中的bug。

Lex Fridman: 很多作家谈到写作过程中的痛苦,说写作极其困难。我认为编程,特别是您所做的技术写作,也可能是这样的。您是如何每天……在方法论上,您如何每天坐下来工作?这是一个挑战吗?您说这很有趣,但我想知道是否有不有趣、让您感到挣扎的部分?

Donald Knuth: 有趣的部分是当我能够把两个彼此不认识的人的想法结合起来的时候,我可能是第一个同时看到他们两个想法的人,所以,我就有机会进行综合,这给了我一个发挥创造力的机会。但繁重的工作是我必须把每件事都追根溯源,这让我接触到了很多有趣的东西,比如,我了解到了梵文。

Lex Fridman: 太棒了!

Donald Knuth: 你知道的,我会尽力把功劳归于所有的作者,所以我给那些还活着的人写信,即使他们已经去世了,我也用这种方式与他们交流。我必须把数学弄对,我必须调试我所有的程序,试图找出其中的漏洞,并在我有更好的想法后重写程序。

Lex Fridman: 有没有遇到过死胡同?

Donald Knuth: 数据和……是的,我会扔掉一些东西。我曾经花了很多时间准备一个基于棒球比赛的例子,我知道很多人把棒球看得比什么都重要。

Lex Fridman: 是的。

Donald Knuth: 但我也知道很多人认为板球是最重要的,或者足球之类的。我意识到,如果我用一个很大的例子,我甚至还准备了一个折叠插图,我会想,我到底在教人们关于算法的什么东西呢?我有这个棒球的例子,如果我是一个只了解板球的人,我会怎么看待它呢?所以我把整个例子都删掉了。但我原本有一个能真正吸引那些从小就以棒球为生活重心的人的例子,这样的人有很多。

Lex Fridman: 是的。

Donald Knuth: 但我认为他们是少数,所以我删掉了,还有保龄球,一个更小的群体。

  1. 编程的艺术 (48:36 - 50:21)

Lex Fridman: 在“编程的艺术”中,“艺术”这个词代表什么?为什么在标题的几个词中,“艺术”是其中之一?

Donald Knuth: 嗯,这是我图灵奖演讲的主题。当人们谈论“艺术”时,它实际上意味着某种非自然的东西。所以当你有“人工智能”时,“艺术”这个词来自于同一个词根,表示这是由人类创造的东西。然后它又有了进一步的含义,通常是“美术”,其中包含了“美”的成分。我们说有些东西是“艺术性地”完成的,这意味着它不仅是由人类完成的,而且是以一种优雅的、令人愉悦的、具有……我猜是……托尔斯泰……的方式完成的。总之,这部分表示它完成得很好,而且与一般的自然不同。

Lex Fridman: “艺术”是……

Donald Knuth: 是人类特别擅长的东西。当他们说“人工智能”时,他们试图模仿人类,但其中也包含“美术”和“美”的元素。

Lex Fridman: 好的。

Donald Knuth: 这就是我试图表达的:你可以编写一个程序,并把它创作成一件艺术品。

  1. 令人惊讶的发现:布尔决策图(BDD) (50:21 - 54:24)

Lex Fridman: 谈到令您惊讶的事情,在从排序、查找,到组合算法的写作过程中,您遇到了哪些特别令您惊讶,并改变了您对某个领域的看法?

Donald Knuth: 每次我的程序中出现bug时,我都会感到惊讶,但这并不是你所说的“变革性的惊喜”。在第四卷A中,当我了解到一种叫做BDD(布尔决策图)的数据结构时,我感到特别惊讶。因为我有点……作为一个老前辈,你知道的,我从50年代就开始编程了,而BDD直到1986年才被发明出来。这是一个全新的想法,它彻底改变了表示布尔函数的方式。布尔函数是各种事物的根本,我的意思是,从逻辑上讲,我们可以用逻辑来描述我们所知道的一切。而命题逻辑,我以为它已经被研究透了,所有的事情都已经被知道了。但后来,Randy Bryant出现了,他发现了BDD的强大功能。所以,这意味着我在书中需要加入一个全新的章节,这是我在1986年之前,甚至在90年代人们开始将它应用于价值数十亿美元的应用之前,都无法想象的。在很长一段时间里,它都是设计计算机的标准方法,直到2000年左右SAT求解器出现。这是另一个巨大的惊喜。所以,很多这些事情都彻底改变了我书的结构。第四卷B的中间三分之一是关于SAT求解器的,这部分有300多页,主要都是关于本世纪才被发现的内容。我不得不从头开始,认识这个领域的所有人,在我准备的过程中,我编写了15个不同的SAT求解器,其中7个在书中进行了描述,其他的则是我自己的经验。

Lex Fridman: 所以是新发明的数据结构或表示方式……

Donald Knuth: 一种全新的算法。

Lex Fridman: 您对它们进行了分类?

Donald Knuth: 是的。关于BDD的有趣之处在于,理论家们开始研究它,并开始描述所有你不能用BDD做的事情。所以,它们的名声开始变差,因为,你知道的,它们虽然有用,但并不能解决所有问题。我相信,在接下来的十年里,理论家们将会证明为什么机器学习不能解决所有问题。但我不仅担心最坏的情况,当我能够解决一个我以前无法解决的问题时,我会感到非常高兴。即使我无法解决它所引出的进一步的问题,我也知道我比以前进步了很多。我发现BDD可以做各种各样神奇的事情,所以我花了好几年时间来学习这个领域。

  1. 算法分析:大O符号 (54:25 - 57:19)

Lex Fridman: 总的来说,什么给您带来更多的乐趣:证明或展示一个算法的最坏情况分析,还是展示一个好的平均情况,或者只是展示一个好的情况,即这个算法在实际应用中可以做一些好的事情?

Donald Knuth: 我喜欢那种可能只比我以前快一百万倍的好情况,而不去担心如果我把问题的规模扩大一倍,它仍然需要很长时间才能解决。

Lex Fridman: 您推广了渐进符号来描述运行时间,显然,在算法分析中,最坏情况是一个重要的部分。您是否认为这种分析存在某些方面的不足?

Donald Knuth: 符号……符号的主要目的是帮助我们解决我们想要解决的问题,所以,它们要符合我们的直觉。从事数论研究的人以某种方式使用渐进符号,但它只被一小部分人所知。我意识到,实际上,能够用一个符号来表示我们不确切知道是什么,但我们只知道它的一部分,这是非常有用的。例如,我们不用大O符号,我们用一个更简单的符号,我说0、1或2,假设我在高中的时候,我们被允许在公式中间写上x + 0、1或2 = y。然后,我们可以学习如何将两个这样的表达式相乘,并处理它们。同样,大O符号表示,这里有一个东西,我不确定它是什么,但我知道它不会太大,我知道它不会比某个常数乘以N的平方更大。好的,所以我写成大O(N^2)。现在,我知道如何将大O(N^2)和大O(N^3)相加,我知道如何将大O(N^2)和1+N^2相加,以及如何对中间有大O的表达式取对数和指数。事实证明,这在我试图弄清楚算法有多好时非常有用。

Lex Fridman: 在您的旅程中,有没有哪些算法在实践中的表现与理论上的表现截然不同?

Donald Knuth: 组合算法的最坏情况几乎总是很糟糕的。但我们的SAT求解器可以解决……我书中那部分最后的练习之一是找出一个包含100个变量的问题,这对SAT求解器来说很难。但你可能会认为,一个包含100个布尔变量的问题需要进行2的100次方次运算,因为当你有100个布尔变量时,可能的组合数是2的100次方。而2的100次方远远超出了我们的处理能力,10的17次方就已经很大了。

  1. P=NP 问题 (57:20 - 1:08:50)

Lex Fridman: 您在过去几年中提到过,您相信P可能等于NP,但它并不是……即使有人证明了P=NP,它也不会直接带来解决难题的实际算法。您能解释一下您的直觉吗?您的直觉是否发生了改变?以及关于P和NP等难题和易解问题的区别?

Donald Knuth: 流行的观点是,如果一个算法存在,那么总会有人找到它,写下来只是时间问题。但是,存在的算法比任何人能够理解或发现的要多得多,因为它们远远超出了人类的理解范围,算法的总数比我们想象的还要多得多。所以,现在我们有一些情况,我们知道算法存在,但我们对这些算法一无所知。有一些基于博弈论的简单例子,在这些例子中,你会说,“一定存在一种算法可以在六贯棋游戏中获胜,先手玩家可以在六贯棋游戏中获胜,因为六贯棋游戏总是要么先手玩家赢,要么后手玩家赢。”

Lex Fridman: 什么是六贯棋游戏?

Donald Knuth: 六贯棋游戏是在一个六边形的棋盘上放置鹅卵石,白方试图从左到右形成一条白色的路径,黑方试图从下到上形成一条黑色的路径。

Lex Fridman: 如何吃子呢?

Donald Knuth: 没有吃子,你只需要轮流放置鹅卵石。但没有平局,因为在所有的黑白棋子都下完之后,要么会有一条从左到右的白色路径,要么会有一条从下到上的黑色路径。所以,这是一个完全信息博弈,人们像下井字棋一样轮流下棋。六贯棋的棋盘大小可以不同,但不存在平局的可能性,玩家轮流下一步棋。所以,它要么是先手玩家赢,要么是后手玩家赢。从数学上讲,你可以推导出所有的树,要么先手玩家总能赢,要么后手玩家总能赢。而且这个游戏是有限的,所以存在一个算法可以判断输赢。你可以证明,它一定是其中一种情况,因为后手玩家可以用一种配对策略来模仿先手玩家。所以,你可以证明它一定是……但我们不知道任何算法。

Lex Fridman: 这是一种情况,在这种情况下,你可以证明解的存在,但没有人知道如何找到它。

Donald Knuth: 但更像算法的问题是,罗伯逊和西摩在图论中提出了一个非常强大的定理,该定理指出,任何在取导出子图操作下封闭的图类,都存在一个多项式时间算法来判断一个图是否属于这个类。例如,平面图是一类图,你可以把它们画在一个平面上,而不会有边相交。平面图在取导出子图操作下是封闭的,这意味着你可以把一条边收缩成一个点,或者你可以删除一条边。如果你从一个平面图开始,把任何一条边收缩成一个点,它仍然是平面的,删除一条边也仍然是平面的。但是,有数百万种不同的方法来描述在取导出子图操作下仍然保持不变的图族。罗伯逊和西摩证明了,对于任何这样的图族,都存在有限多个最小的障碍图。所以,如果一个图不属于这个图族,那么它一定包含……一定有一种方法可以把它收缩,直到你得到一个不属于这个图族的最小障碍图。对于平面图来说,最小障碍图是一个五角星,每个点都与其他点相连,以及一个试图将三个公共设施连接到三个房子而不交叉的图。所以,有两个非平面的障碍图,每一个非平面图都包含这两个障碍图中的一个,通过收缩……

Lex Fridman: 所以,他证明了……

Donald Knuth: 他证明了这些障碍图的数量是有限的。

Lex Fridman: 总是有限的吗?

Donald Knuth: 总是有限的。有人说,“这是一个图族,这很难让人相信。”他们发表了一系列20篇论文,这需要很深入的研究。

Lex Fridman: 但这是针对任意的类吗?

Donald Knuth: 这是针对任何在取导出子图操作下封闭的任意类。

Lex Fridman: 在取导出子图操作下封闭,也许我没有理解,因为似乎很多图类都是……

Donald Knuth: 几乎所有重要的图类都是……有很多这样的图,但也有数百个这样的图出现在应用中。我这里有一本书,叫做《图的类》,令人惊讶的是,人们研究了这么多不同的图类。

Lex Fridman: 那您为什么要提出这个定理呢?

Donald Knuth: 有很多算法是针对特殊类型的图的。例如,如果我有一个弦图,我就能有效地给它着色。如果我有某种类型的图,它能构成一个非常好的网络。你可能想测试……有人给你一个图,你想知道它是否属于这个图族。如果是,那么我就可以去图书馆找一个算法来解决我在这个图上的问题。所以,我们想要一个……一个算法,它能告诉我,“给我一个图,我会告诉你它是否属于这个图族。”我所要做的就是测试这个给定的图是否有一个导出子图是某个障碍图。导出子图是指通过收缩和删除边可以得到的任何图。对于任何导出子图,都存在一个多项式时间算法来判断它是否是你的导出子图。而且障碍图的数量是有限的。所以,我只需要尝试……它是否包含这个障碍图?多项式时间,我得到了答案。它是否包含这个障碍图?多项式时间,我得到了答案。总共是多项式时间,我就解决了这个问题。然而,我们只知道障碍图的数量是有限的,我们不知道……我们可能只知道其中一两个障碍图,但我们不知道我们是否已经找到了所有的障碍图。我们可能找到了20个,但我们不知道是不是还有第21个、第25个或第100万个。我们只知道它是有限的。所以,我们有一个多项式时间算法,但我们不知道它是什么。

Lex Fridman: 这是一个很好的例子,说明了您所担心的事情,或者说您认为为什么P=NP没有用。但您为什么仍然认为P=NP呢?

Donald Knuth: 因为你必须排除太多可能的算法。你可以取一个图,用某些素数来表示它,然后把它们乘起来,然后你可以进行按位与运算,然后在多项式时间内构造某个常数,这是一个完全有效的算法。有很多这样的算法。很多时候,我们看到……你取一些数据,然后你会发现一些巧合,一些看起来相当随机的数字实际上是有用的,因为它恰好……它恰好解决了某个问题。就像,你的头上有很多根头发,但似乎不太可能有两个人头上的头发数量相同。但很明显,你可以数一数有多少人,以及他们头上大概有多少根头发,所以一定有人头上的头发数量相同。这就像是一种巧合,你可能会说,“这个特定的运算组合恰好证明了一个图有一条哈密顿路径。”我看到很多情况,当你有很多可能性时,会发生意想不到的事情。但由于可能性的空间如此巨大,我必须把它们都排除掉。所以,这就是我的直觉的原因,但这绝不是一个证明。有些人说,“P不可能等于NP,因为有这么多聪明人,最优秀的算法设计者,他们多年来绞尽脑汁,还有一百万美元的奖金,但没有人想出这个算法,所以一定不存在这样的算法。”另一方面,我可以用完全相同的逻辑说,“P一定是等于NP的,因为有这么多聪明人试图证明它不等于NP,但他们都失败了。”

Lex Fridman: 这让我想起了关于寻找外星人的讨论,人们一直在寻找他们,但我们还没有找到,所以他们不存在。

Donald Knuth: 是的,但你可以证明,有这么多行星,他们很可能存在。

Lex Fridman: 是的,没错。

Donald Knuth: 还有一种可能是,他们存在,但他们都发现了机器学习之类的东西,然后互相毁灭了。

  1. 人工智能 (1:08:51 - 1:12:31)

Lex Fridman: 关于这个话题,一个小小的题外话,您认为宇宙中存在智慧生命吗?

Donald Knuth: 我不知道。

Lex Fridman: 您希望存在吗?您会思考这个问题吗?

Donald Knuth: 我不会花时间思考我永远无法知道的事情。

Lex Fridman: 但您确实喜欢存在许多您不知道的事情,您确实喜欢事物的神秘性?

Donald Knuth: 我喜欢我有局限性,但我不会花时间去回答无法解决的问题。

Lex Fridman: 我明白了。因为您已经解决了一些看起来无法解决的难题。您已经解决了一些难题,而且看起来……

Donald Knuth: 因为当我取得比我预想的更大的进展时,我会感到非常高兴。

Lex Fridman: 没错,没错。但您不喜欢……就像宗教一样,我很高兴……

Donald Knuth: 很高兴没有证据证明上帝存在或不存在。我认为这会破坏神秘感,会变得太无聊。

Lex Fridman: 好的,我们快速地谈谈另一种“艺术”——人工智能。您对人工智能领域有什么看法?自从60年代以来,人工智能领域一直是计算机科学的一部分,并且与计算机科学并行发展。您如何看待从60年代到现在的人工智能领域?

Donald Knuth: 一直以来,那些试图模仿智能,或者做一些在某种程度上是智能最伟大成就的事情的人,他们一直是推动计算机科学发展的灵感来源,可能比任何其他人群都要多。所以,一直以来,它都是我们需要深入研究的好问题的来源,并且逐渐得到了越来越多的成功答案。这是计算机科学中许多伟大发现的灵感来源。

Lex Fridman: 您自己是否被创造……算法中具有智能的回声的可能性所吸引?

Donald Knuth: 不像这个领域的大多数人那样。但这并不是说他们错了,或者……你问的是我个人的偏好。但我担心的是……

Donald Knuth: 当人们开始相信他们真的成功了的时候,因为在我看来,真正理解某件事和假装理解某件事,给人一种理解的错觉之间,存在着巨大的鸿沟。

Lex Fridman: 您认为不理解却能创造是可能的吗?

Donald Knuth: 当然,我一直在这样做。

Lex Fridman: 这就是您使用随机数的原因。

Donald Knuth: 是的,没错。但是,仍然存在着巨大的鸿沟。我不知道这是否不可能,但我不认为有任何东西接近我所认为的“智能”。

  1. 蚁群与人类认知 (1:12:32 - 1:15:27)

Lex Fridman: 您提到了一些与此相关的想法,我非常同意。所以,《计算机程序设计艺术》这本书主要关注单处理器算法。您提到这只是因为您在1962年列出了目录。

Donald Knuth: 您要记住。

Lex Fridman: 当然,当然。

Donald Knuth: 没有……我很高兴我没有等到1965年,或者……

Lex Fridman: 也许有一本书可以涵盖所有内容。

Donald Knuth: 一本书不可能总是涵盖所有内容,所以我很高兴《计算机程序设计艺术》的目录是现在这个样子。

Lex Fridman: 但您确实提到过,您认为理解蚁群如何执行极其有序的任务,很可能是理解人类认知的关键。所以,这些基本上是分布式系统。那么,您认为唐纳德·克努特对一个列表进行排序的方式,和一个蚁群对一个列表进行排序的方式,或者执行一个算法的方式,有什么不同?尽管排序和认知不是一回事,但我知道您的意思是……

Donald Knuth: 蚁群的优势在于,至少我们可以看到它们在做什么,我们知道哪只蚂蚁和哪只蚂蚁进行了交流。而对于我们的大脑来说,要弄清楚神经元之间是如何传递信号的就困难得多。我理解蚁群可能是……如果它们掌握了认知的秘密的话。

Lex Fridman: 把蚁群想象成一个单一的认知实体,而不是许多不同蚂蚁的群体。

Donald Knuth: 我的意思是,就像我们大脑中的细胞一样,还有微生物群等等,它们都是相互作用的实体。但我认为我自己是一个独立的个体。你可以说,蚁群在某种程度上可能是具有认知能力的。

Lex Fridman: 是的,我的意思是,你知道的,我踩死了一只蚂蚁。

Donald Knuth: 嗯,那是什么感觉?如果我们想要解开认知的秘密,我们或许可以通过观察蚂蚁是如何做到的来做到这一点,因为我们有更好的机会去测量,它们通过信息素、互相接触和视觉来进行交流,而不是通过更微妙的现象,比如电流……

  1. 康威生命游戏 (1:15:28 - 1:16:30)

Lex Fridman: 一个更简单的版本,您对康威的生命游戏有什么看法?

Donald Knuth: 康威的生命游戏能够模拟任何可计算的过程,任何确定性的过程。

Lex Fridman: 就像您刚才说的,我的意思是,那并不是……

Donald Knuth: 它最强大的地方,我会说。

Lex Fridman: 您可以模拟它,但神奇之处在于……

Donald Knuth: 它的个体单元是分布式的。

Lex Fridman: 是的,而且极其简单。

Donald Knuth: 是的,我们可以准确地理解它的基本单元是什么,就像蚁群一样,即使基本单元很简单。但这并不意味着我理解……我理解生命。我的意思是,我理解……它让我更好地理解了确定性宇宙的含义,以及自由选择的含义。

  1. 上帝与骰子 (1:16:31 - 1:17:09)

Lex Fridman: 例如,您认为上帝掷骰子吗?

Donald Knuth: 我不认为有什么理由禁止上帝使用最有效的方法。我们知道,骰子在低效的算法中极其重要,有些事情如果没有随机性就无法很好地完成。所以,我不认为有什么理由禁止我的上帝……

Lex Fridman: 当算法需要它的时候。

Donald Knuth: 我不认为物理定律应该限制它。

  1. 关于圣经的研究 (1:17:10 - 1:22:27)

Lex Fridman: 2001年,您在麻省理工学院做了一系列关于宗教和科学的讲座。

Donald Knuth: 那是1999年,但书是在……

Lex Fridman: 1999年,您在波士顿待了一段时间,做了那些讲座。

Donald Knuth: 是的。

Lex Fridman: 我在2001年版的书中读到了大部分内容,这是一本非常引人入胜的书,我推荐大家阅读,它是您讲座的文字记录。那么,通过对圣经中一个特定部分的深入研究,您对思想是如何产生和发展的有什么了解?关于我们人类作为一个社会,如何发展和分享思想,您从这个过程中学到了什么?

Donald Knuth: 我试图总结了一下,我不会说我学到了很多非常确定的东西,或者说我能得出什么结论,但我更多地了解到了我不知道的东西。这是一个非常复杂的主题,实际上超出了人类的理解范围。所以,我们放弃……说我永远无法到达终点,我永远无法理解它。但你可以说,也许对我来说,不断地接近它,越来越多地了解它是件好事。那么,我如何才能有效地做到这一点呢?答案是,使用随机性。所以,尝试……

Donald Knuth: 在我力所能及的范围内,对一个随机的子集进行详细的研究,而不是只研究别人让我研究的部分,或者因为太难而什么都不研究。所以,为了自娱自乐,我决定选取圣经中的一部分经文,并试图找出最优秀的思想家对这一小部分经文的看法。我大概选了660节经文,总共3000节,大概是五百分之一。然后,我去了索引完善的图书馆,例如,我在波士顿公共图书馆,我每周去一次,去了一年。我还去了……

Lex Fridman: 您去了哈佛大学图书馆?

Donald Knuth: 是的,去看那些波士顿公共图书馆没有的,学者们研究过的资料。你可以……你可以翻阅书架,你可以查看索引,然后说,“哦,找到了,这本书中提到了这节经文。”如果是这样,就看第105页。所以,我不仅可以了解圣经,还可以了解关于圣经的二手文献,也就是学者们写的关于它的东西。这给了我一种方法来……聚焦于……

Donald Knuth: 某些部分,这样我就能获得更多的洞察力。我把它看作是给我一些坚实的支点,我可以在上面挂载信息,但并不是说,“因此,这是正确的。”

Lex Fridman: 在这种随机抽样圣经的方法中,您对……最……你知道的,最核心的……最大的思想积累有什么了解?

Donald Knuth: 对我来说,它的主要意义不是大多数人认为的那样,比如说,“不要有性行为”之类的,而是试图弄清楚如何按照上帝的意愿和谐地生活。我假设上帝存在,我很高兴没有办法证明这一点,因为那样的话,我会把证明看一遍,然后就忘了,我就不会再去思考精神方面的事情和奥秘了。我认为我的生活将会非常不完整。所以,我假设上帝存在,但很多人说上帝不存在,但这对他们来说仍然很重要。在某种意义上,这可能仍然是……上帝是否存在,在某种意义上……所以,这对他们来说很重要。我研究的其中一节经文可以解释为,“做一个无神论者,总比什么都不在乎要好得多。”

Lex Fridman: 是的,这有点像P=NP的讨论。

  1. 假如我是上帝 (1:22:28 - 1:24:24)

Lex Fridman: 您提到了一个思维实验,我很想听您亲自参与一下,一个成为上帝的思维实验。所以,如果您是上帝……唐纳德·克努特,您将如何向地球上的人们展现自己?您提到了您对文学的热爱,有一本书……我真的很想推荐给您,如果我能想起书名的话,我想是《亵渎》,它讲的是上帝通过洛斯阿拉莫斯的一台计算机展现自己。

Donald Knuth: 哦!

Lex Fridman: 这是我读过的唯一一本最后的高潮真的是书中的最后一个词的书,它解释了整本书的理念。所以我不想剧透,但这真的和您提出的问题非常相关。假设上帝说,“我以前与世界交流的方式对21世纪来说不是最好的,我现在应该怎么做?”这可能是……上帝会选择这本书中描述的方式。

Lex Fridman: 看待这个练习的另一种方式是,以一种系统的方式看待人类的思想、人类的精神和人类的生活。

Donald Knuth: 我认为最重要的是,你要学会谦逊,你要认识到,一旦我们解决了一个问题,这并不意味着我们就万事大吉了,还会有其他的问题出现。我们必须认识到,有些事情超出了我们的能力范围。

Lex Fridman: 我周围充满了傲慢。

Donald Knuth: 说得好。

  1. 人生的算法分析 (1:24:25 - 1:28:25)

Lex Fridman: 如果您要对您自己的人生进行程序分析,从正确性、运行时间、资源使用的角度来看,您做得如何?当然,是从渐进的角度来看。

Donald Knuth: 好的,这个问题以前没有人问过我。我一开始使用的是库中的子程序,学习如何成为一个顺从的自动机。我有一个很大的优势,那就是我没有可以责备的对象,如果我开始不理解某些东西,我知道我应该停止打乒乓球,这是我的错,是我不够努力学习,而不是有人以某种方式歧视我。我不知道如何避免世界上存在的偏见,但我知道这是一个我没有遭受过的额外负担。然后,我从父母那里学到了利他主义的思想,认为帮助他人比我自己得到东西更重要。我需要……我需要足够快乐才能提供服务,但我最终形成了一种哲学,我把它称为“0.8就足够了”。曾经有一部电视剧叫《八个就够了》,讲的是一个有八个孩子的人。但我说“0.8就足够了”,这意味着,如果我有一种衡量幸福的方法,我认为一个好的设计是让一个有机体在大约80%的时间里感到快乐。如果一直是100%,那就好像每个人都嗑了药一样,什么都做不成,因为每个人都太快乐了。

Lex Fridman: 您认为您已经达到了0.8的最佳状态吗?

Donald Knuth: 有时候我会情绪低落,我知道这是化学反应,我知道我实际上被设定为在一定的时间内感到沮丧。如果它失控了,我会更加沮丧。有时我会想,“我今天应该生谁的气?一定有原因的。”但后来我意识到,这只是我的化学反应告诉我,我应该生某个人的气。所以,我会想,“好吧,去睡觉吧,会好起来的。”但如果我不是100%快乐,这并不意味着我应该找一个正在尖叫的人,并试图把他们……我的意思是,我不是100%快乐,但我已经足够快乐了,可以成为一个可持续发展的一部分。所以,这就是我做的数值分析。

Lex Fridman: 您认为……人类的生活是0.8?

Donald Knuth: 我希望如此。

  1. 面对死亡 (1:28:26 - 1:33:40)

Lex Fridman: 可以谈谈……正如您之前谈到的,2006年您被诊断出患有前列腺癌,这次与死亡的遭遇是否在某种程度上改变了您,或者改变了您看待世界的方式?

Donald Knuth: 我第一次面对死亡是我父亲去世的时候,我花了一个月的时间来接受我总有一天会死的事实。在那一个月里,我感觉还好,但我不能唱歌,我也不能做原创性的研究。我记得大概三四个星期后,我第一次有了一个有意义的、也许稍微有点创意的技术想法,我能感觉到……有什么东西又开始运转了。但那段时间,我觉得非常空虚,直到我接受了……我了解到这是一种人们都会经历的标准哀悼过程。好的,现在我到了人生的一个阶段,甚至比2006年更甚,我所有的目标都已经实现了,除了完成《计算机程序设计艺术》。我曾经有一个未实现的目标,我一直想创作一部音乐作品,我对某种类型的音乐有一些想法,我认为应该有人尝试去创作它。我认为这并不容易,但我想要一个概念验证,我想知道它是否可行。所以我花了很多时间,最终完成了那部作品,我们在去年我80岁生日那天举行了世界首演,我们还在加拿大进行了另一场首演,还有在欧洲和其他地方演出的计划。但那件事已经完成了,它现在是世界音乐的一部分,它要么是好的,要么是坏的,但我做了我想做的事情。所以,我知道我现在唯一的任务就是尽我所能完成《计算机程序设计艺术》,直到我……

Lex Fridman: 您认为其中有0.8的成分吗?0.8……

Donald Knuth: 不,不,不,在那场音乐会结束后,我实际上达到了1.0。我的意思是,在2006年,我大概是0.8。当我被诊断出患有前列腺癌时,我说,“好吧,也许就是这样了,我一生中得到了各种各样的好运,我没有什么可抱怨的。所以,我现在可能会死,看看会发生什么。”所以,我很认真地……我没有任何期望,我没有……

Donald Knuth: 我没有觉得自己理应得到更好的,我没有为未来做任何计划。我做了手术,手术后,我花了一些时间学习如何再次行走等等,有一段时间很痛苦。但我回到家后,我意识到我还没有真正想过下一步该做什么,我没有任何期望。我还活着,好吧,现在我可以再写几本书了。但我并没有抱着“这太不公平了”的态度,我只是接受了无论结果如何的现实。看起来我已经得到了……

Donald Knuth: 得到了比我应得的更多,所以,我为什么……我真的……当我回到家时,我意识到我真的没有想过下一步,在我能够工作之后我该做什么。我当时想,这可能……我对它已经结束的事实感到坦然,但我仍然希望我能了解可满足性问题,并且有一天也能创作音乐。我直到2012年才开始认真地进行音乐创作。

  1. TeX 排版系统 (1:33:40 - 1:39:23)

Lex Fridman: 如果我不和您谈论这个,我会有大麻烦的。在70年代,您创建了TeX排版系统,以及用于字体描述的Metafont语言和Computer Modern字体系列,这基本上定义了无数研究领域的方法论和美学。

Donald Knuth: 数学、物理……

Lex Fridman: 远不止设计领域。首先,谢谢您,我想我代表很多人说这句话。但问题是,在美感方面,您创造的排版有一种美感,但美是……

Donald Knuth: 很难定义的。

Lex Fridman: 对,很难定义。如何创造出漂亮的字母和漂亮的公式呢?这……也许没有语言可以……

Donald Knuth: 描述。

Lex Fridman: 描述这个过程。

Donald Knuth: 伟大的哈佛数学家乔治·伯克霍夫在30年代写了一本名为《美学度量》的书,他在书中展示了花瓶的图片,并在下面写上一个数字,表示这个花瓶有多美。他有一个公式来计算这个数字。他实际上也写了关于音乐的文章,所以,他可以……我当时想,也许在我的音乐创作中,我会尝试把他的算法编成程序,这样我就可以写出在他的评分中得分最高的东西。但它还不够严谨,无法让计算机来完成。无论如何,人们试图给美赋予数值,而他可能是最认真尝试的人。乔治·格什温的老师也写了两本书,讲述了他的作曲方法。但您谈论的是另一种美,字母和……

Lex Fridman: 排版中的美。

Donald Knuth: 排版中的美,是的。所以,这……

Lex Fridman: 就像他们说的,情人眼里出西施。

Donald Knuth: 但……在任何你想要给美的定义下,你都要努力追求卓越,尽可能地接近它。

Lex Fridman: 我想我试图问的是,在您与……

Donald Knuth: 合作的社区中……

Lex Fridman: 合作的社区中,您遵循的宽松定义是什么?也许没有一个好的答案。

Donald Knuth: 宽松的定义是,我希望它能吸引我。

Lex Fridman: 您个人?

Donald Knuth: 对我个人而言。

Lex Fridman: 这是一个好的开始。

Donald Knuth: 是的,没错。它没有通过那个测试。当第二卷以新的印刷方式出版时,我本以为那将是我一生中最快乐的一天,但我当时想把它烧掉。

Lex Fridman: 您有多生气?

Donald Knuth: 我打开书,它还是同样的米色封面,但页面上的内容看起来不对劲。数字2特别丑,我无法忍受任何页码中包含2的页面。我本来以为……我花了这么多时间进行测量,我……我以不同的方式看待字体,我拥有很好的技术,但我还没有完成,我必须在1961年之后重新调整整个系统。

Lex Fridman: 它最终让您满意了吗?

Donald Knuth: 哦,是的。

Lex Fridman: 还是说,它达到了……

Donald Knuth: 不,不,不。有很多书如果没有它就不会被写出来,这只是……这是一种乐趣。但现在,我……所有这些页面,如果我不喜欢它们,我就会修改它们。

Lex Fridman: 就像那样?

Donald Knuth: 其他人没有这种能力,他们只能使用我提供给他们的东西。

Lex Fridman: 是的。在另一方面,有排版,所以……

Donald Knuth: 字体的外观。

Lex Fridman: 字体的外观,曲线和线条。那间距呢?

Donald Knuth: 关于间距……

Lex Fridman: 因为,你知道的,空白……似乎您可以对布局进行更系统化的处理。

Donald Knuth: 哦,是的,你总是可以更进一步。我没有在0.8处停止,我大概在0.98处停止。

Lex Fridman: 看起来您没有遵循您自己的幸福法则。

Donald Knuth: 不,不,不,这……有一个……有一个日本词叫“侘寂”之类的,意思是……

Donald Knuth: 最美丽的艺术作品是那些有瑕疵的作品,因为那样的话,欣赏它们的人会有自己的理解,这会给观众带来更多的满足感,或者……但我……

Donald Knuth: 不,不,对于排版,我希望它在绝大多数情况下看起来尽可能好,如果不是,我会说,“好吧,作者还需要多做2%的工作。”但我不想说我的工作是做到200%,并把作者的所有工作都抢走。这就是我的意思。

  1. 我们对世界的理解 (1:39:24 - 1:43:29)

Lex Fridman: 如果您要大胆猜测一下,您认为我们人类对自然界的本质了解多少?您提到了您欣赏神秘,您认为我们周围的世界有多少笼罩在神秘之中?如果我们……如果您要给出一个数字,我们了解了百分之多少?

Donald Knuth: 哦,我们……有多少个前导零?0.00……我不知道。我认为它是无限

好的,让我们继续。

Donald Knuth: 我认为它是无限小的。

Lex Fridman: 我们该如何思考这个问题呢?我们该怎么办呢?我们是否要一步一步地继续前进?

Donald Knuth: 我们勉强应付着。我的意思是,我们尽力而为,我们意识到没有人是完美的,我们努力不断前进,但我们不会因为没有到达终点而停滞不前。有些数学家,当我在数学系的时候,他们办公室就在我隔壁,他们从来不考虑任何比可数无穷小的事情。而我从来没有……我们只是在可数无穷这个概念上产生了交集,因为我真的很少涉及可数无穷,我总是谈论有限的东西。但即使是局限于有限的东西,而宇宙可能是有限的,我们无法真正知道宇宙是否……

Donald Knuth: 不是由有限多个夸克之类的东西组成的,其中大N是一个有限的数。所有可理解的数字仍然远远小于几乎所有有限的数字。我有一篇名为“超自然数”的论文,我在其中……我想您可能遇到过一个叫做“克努特箭头表示法”的东西,您有没有遇到过?

Lex Fridman: 没有。

Donald Knuth: 总之,你取一个数字,我想是……我叫它……我用我自己的名字命名它,但它……但在箭头表示法中,它类似于10,然后是四个箭头,然后是一个3,之类的。不,不,箭头表示法,如果你没有箭头,那就表示乘法,x 0箭头 y 表示 x 乘以 x 乘以 x 乘以 x,乘以 y 次。如果你有一个箭头,那就表示指数运算,所以 x 一个箭头 y 表示 x 的 x 次方 的 x 次方 的 x 次方 的 x 次方,y 个 x。我发现,这种表示法是由一个1830年代的人发明的,他是一位英国贵族,他把时间都花在了思考这类事情上。这和我使用的箭头表示法的概念完全相同,他用了一种略微不同的符号。总之,还有阿克曼函数也是基于相同的思想,但阿克曼是1920年代的人。总之,你有这个数字10……

Donald Knuth: 四个箭头 3。这意味着……我们取10的10次方的10次方的10次方的10次方的10次方……我们要重复多少次呢?哦,10 两个箭头 2 次,之类的。我是说,这个堆栈有多高?但我们还要再做一次,因为那只是10 三个箭头 2。我们需要……

Lex Fridman: 四个箭头。

Donald Knuth: 四个箭头 3 是一个很大的数字,它已经远远超出了我们的理解范围。

Lex Fridman: 是的。

Donald Knuth: 但与真正的有限数字相比,它仍然非常小,因为我只用了四个箭头,10 和 3。我的意思是,我们可以用那么多箭头……有限和无限之间的界限对我们人类来说是难以理解的。无穷大是我们思考极大事物的一种有用的方式,而且……

Donald Knuth: 我们可以操纵它,但我们永远无法知道宇宙是否真的……我们还差得很远。所以,我意识到我们知道的太少了,但是……

Donald Knuth: 我们发现了非常多的东西,即使在我们这个小小的宇宙中,也没有一个人能够全部了解。

Lex Fridman: 我们做得相当不错。

  1. 问上帝的问题 (1:43:30 - 1:44:48)

Lex Fridman: 当您去到天堂,见到上帝,并可以问一个会被回答的问题时,您会问什么问题?

Donald Knuth: 您在这里用什么浏览器?(笑声)

Lex Fridman: 哈哈哈哈,好的,这很棒,Don,非常感谢您,这是一次非常愉快的谈话,非常感谢您回答了这么多问题。

Donald Knuth: 这很有趣,谢谢。

三、 结语 (1:44:49 - 1:45:53)

Lex Fridman: 感谢大家收听这次与唐纳德·克努特的对话,感谢我们的赞助商Cash App。下载Cash App并使用代码“Lex podcast”,您将获得10美元,同时10美元将捐赠给FIRST,这是一个STEM教育非营利组织,它激励着成千上万的年轻人学习和梦想工程的未来。如果您喜欢这个播客,请在YouTube上订阅,在Apple播客上给五星好评,在Patreon上支持,或者在Twitter上与我联系。最后,让我用唐纳德·克努特的一句名言与大家共勉:“我们应该不断地努力将每一门艺术转化为科学,在这个过程中,我们提升了艺术。”感谢大家的收听,希望下次再见!