当前位置: 首页 > 科技观察

计算机界最大的“追书坑”,82岁高手Knuth还在写

时间:2023-03-20 17:23:52 科技观察

本文经AI新媒体量子位授权转载(公众号ID:QbitAI),转载请联系转载来源。DonaldKnuth,中文名高德纳,开创了“算法分析”这一计算机科学研究新领域。我们不需要对他进行过多的介绍。他发明的TeX已经成为科学界常用的排版工具,每个计算机专业的学生都应该读过他的教科书《计算机程序设计艺术》。本书原为他1962年研究生期间所著,至今未完成。第一卷1968年出版,至今已更新到第42版。为了让自己专心写书,他于1993年从斯坦福大学计算机系教授职位上退休。按照他的计划,这套书一共7册。这位82岁的老人仍在写第四卷的B部分,他预计这部分至少会包含A到F部分。DonaldKnuth的中文名字“高德娜”是姚期智的妻子楚枫来之前取的。1977年来到中国,因身材高大而姓高,Dana是Donald的音译。Knuth从13岁起就很认真。当时,一家糖果公司举办了一场比赛:用齐格勒巨型巧克力棒中的字母组词,最多者获胜。为了解决这个问题,Knuth翻了2000页的字典,向父母谎称自己生病了,没有在家上学。他花了2周的时间学习并赢得了比赛。最后他找到了4700个字,而活动组织者认为他们最多只能找到2000多个字。他因此得到了巧克力作为奖励,这只是他人生中的第一个奖项。1974年,加德纳获得美国计算机学会颁发的图灵奖;1995年获得冯诺依曼奖。今年2月,Gartner接受了美国科技网站QuantaMagazine的专访,谈到了自己创建算法分析的过程,以及卷《计算机程序设计艺术》4B的最新状态。我们将采访内容整理如下:QM:您一直对写作感兴趣吗?小时候,我发现现实世界对我来说太难了。我没想到会发现什么新东西,但我喜欢用我的写作来表达我对想法的享受。六年级时,我和几个朋友用复印机写了一篇两页的论文??。在高中时,作为一名报纸编辑,我每周一晚上都会熬夜赶出报纸。我第一次看到我的打字稿是在大学里作为学生论文的文案编辑。在大三和大四,我们开始进行工程和科学评论。比如我写了“Th5E4CH3EmIC2Al2Ca3P4Er”,每个字都是一个化学式。(注:高德纳大学时写过一篇短篇小说,每一个字都是一个化学式,有没有感觉像《绝命毒师》的片头?)QM:这就是你写这本书的原因吗?还是另有故事?《计算机程序设计艺术》是宣言。这本书描述了我喜欢做数学的方式,我希望有人曾那样教过我。从第1页开始,我开始讲述算法的故事。当时的大多数教科书都没有探讨发现的人文方面。他们只是说,“这就是化学的样子”或“这就是物理学的样子”。我还讲了一个技术故事。我说,“这行不通,这里有一种方法可以解决它。”因此,我不只是陈述事实,还添加了戏剧性内容。如果您知道发现的顺序,学习科学就会容易得多。另外,我无法抗拒一个好故事。我不认为自己是先驱,而是记者。QM:那么,除了故事之外,《计算机程序设计艺术》这本书讲的是什么?写了两年书,我才意识到这本书的新颖之处应该是可以量化判断程序的好坏。我不只是想说一个程序比另一个好,我是说一个程序比另一个程序好13.8%,并解释它们之间的比较。作者A谈论算法A,作者B谈论他的竞争算法B。作者A从未写过算法B,作者B也从未写过算法A。此外,作者A和B使用不同的计算机。作为一名中立的记者,我将从一个角度来解释这两种算法。问“算法到底有多好”是一个有趣的问题,这就是算法分析。QM:“算法分析”是否只是“计算机编程艺术”的另一种说法?1967年,在工业和应用数学学会的一次会议上,有人问我做了什么。当时,计算机科学分为数值分析、人工智能和程序设计语言。就这样,我意识到我需要为我的作品取个名字。我这本书的新颖之处在于它对算法的好坏进行了严格的研究。所以我决定,下次有人问我这个问题,我就说我是做“算法分析”的。我对算法分析的定义是:如果我对这个内容感兴趣,那就是算法分析。这不是一个很好的定义。后来,我决定证明这一点。我认为算法分析是对算法性能的定量研究。我把它分成两部分:一个考虑某个问题的所有可能算法;以及针对特定问题考虑特定算法的算法。算法分析将是我一生的工作。我跟出版社说把书名改成《算法分析》,出版社说:“那(书)就卖不出去了。“他们做出了正确的决定。不过我很高兴,在这本书出版40年后,算法分析(作为副标题)出现了五六个版本。QM:但对你来说,编程不仅仅是功能性的。对于例如,在设计TeX时,你想找到连接某些点的“最令人愉悦的曲线”。你是为了美而编程吗?我的程序必须以某种方式将这些点链接起来,逆向工程一个好的书法家的作品。字母“S”由正转负,可能中间稳定了一段距离。字母的设计者按照某种逻辑把线条做成了字母的形状。我不仅要得到设计的结果,但也想获得它背后的智慧。这就像编写计算机程序。△1980年,Gartner与字体设计师HermanZapf合作。我与设计师交谈以了解他们想要实现的目标。数学就是让设计在一种定量的方式。通过ma主题,我在所有东西上都放了小刻度盘。我可以说字母“A”有这个点,这个宽度,这个角度,那里逐渐变细,有一个确定的底部衬线长度。我从未打算更换设计师,我只是想为下一代捕捉我们现在正在做的事情。使用TeX,可以复制设计。QM:您是否预见到TeX将在全世界使用?公认?TeX最初只供我的秘书和我自己使用。菲利斯是一位很棒的秘书,她可以读懂我的笔迹并使它更漂亮。由于经验方法变得过于昂贵,印刷术正在消亡。几乎所有70年代出版的数学看起来都很糟糕。就像在《美国数学月刊》中一样,下标的字体与主线文本的字体不同。我知道计算机编程可以让书好看。1978年4月,我在5月完成了TeX10个用户,6月100个用户,7月1000个用户......每个新团队都说,“你必须拥有这个功能。”五年后,我发布了我们现在拥有的TeX.Tex最初是为美国人设计的,后来欧洲人开始使用它。到1980年代,世界上所有语言的人都在使用它。QM:听起来Discovery一直是您生活过程的一部分,今天它是否仍然相关?我平均每周写五个新程序。诗人要写诗,我要写电脑程序。理解某事的最终测试是能够将其写入计算机Explain。我可以对你说点什么,你会点头,但我不确定我是否解释得很好。但是电脑没有点头,它重复了我说的话。生活中的大部分时间,您可以作弊,但是计算机不能。QM:你把时间花在写作上,但你有其他兴趣,你每天是如何处理的?杰克·伦敦(注:美国现实主义小说家)每天写1000字,然后再与任何人交谈。他完全是这样的:“让我一个人呆着,直到我说出一千个字!”然后他会在一天剩下的时间里喝酒或校对。我不是,我的日程安排规则是在待办事项列表中首先做我最讨厌的事情。到周末,我会很开心。QM:真的吗?做自己讨厌的事怎么可能快乐呢?我很容易说,“哦,让我成为一个天才,从不打扫厕所。”即使您仍然必须清洁厕所。我和老婆的Jill买了一个409清洁套装,随便喷一喷,就心情大好地打扫厕所!一个人的成功是由高地板决定的,而不是高天花板。如果你能做好一件事,但还有其他事情你做不到,后者会拖你后腿。但是,如果您所做的一切都奏效,那么您的生活就会很美好。所以我努力学习如何让自己去做我不喜欢的事情。QM:你还有很多与计算机科学无关的项目,比如你的音乐创作《幻想曲世界》,你甚至围绕着一个两层楼的管风琴建造了一座房子。这些事情也让你快乐吗?我写了几本书,包括《计算机科学家很少谈论的事情》(计算机科学家很少谈论的事情),这是关于神学的,它不像数学或计算机科学那样无法证明。如果只剩下机械的东西,我的生活就不会完整。不明白的玄妙的事使我卑微,有些事是我无法理解的。在数学中,我知道定理是否正确,我喜欢这一点。但如果一切顺利,我的生活将不会有太多快乐。这些知识并没有让我失望,相反,它让我不墨守成规。QM:完成《计算机程序设计艺术》很重要吗?计算机科学将继续发展。一种情况是,每个人都将停止使用我们拥有的那种计算机,他们都将进行机器学习并使用量子计算机。然后我可以结束非量子计算机的故事。当我能说“这就是故事的结局”时,我会更开心。这是我能想到的完成这本书的最简单方法,但我没有回答你的问题。你知道项狄的故事吗?劳伦斯·斯特恩(注:英国感伤小说家)在18世纪末写了一部自传体小说《项狄传》,并成册出版。主人公的故事只有100页左右。作者希望主人公的人生故事完整,但他没有。直到去世,斯特恩一直在为项狄写传记。我想继续以我知道的最好方式写出好的内容,并覆盖我原来的部分。我会尽力而为,而不是说我必须在某个截止日期前完成。我很幸运能在适合我的特殊时间出生。我现在已经实现了我所有的人生目标,除了《计算机程序设计艺术》。我将继续讲述我发现的故事并继续前进。