高德纳 计算机界最大“追书坑” 82岁大神高德纳仍在写《计算机程序设计艺术》4B卷
关注前沿科技 量子位小茶整理整理量子位 报道 | 公众号 QbitAI中文名叫Gartner的Donald Knuth开创了计算机科学的新研究领域“算法分析”。
我们不需要深入了解他的细节。他发明的TeX已经成为科学界常用的排版工具,每一个计算机专业的学生都应该读过他的教材《计算机编程艺术》。
这本书原本是他在1962年读研期间开始编写,至今尚未完成,第1卷第1版于1968年出版,到今天已经更新到第42版。为了专心写书,他于1993年以斯坦福大学计算机科学教授的身份退休。现年82岁的他还在努力完成第4卷的B分册,他预计这本书至少包含A到F部分。唐纳德·克努特的中文名字“高德纳”是姚期智·朱枫女士在1977年访华前取的。他姓高是因为他个子高,而丹娜是唐纳德的音译。
高德纳从13岁开始就较真。当时一家糖果公司举办了一场比赛:用Ziegler’s Giant Bar里的字母组成单词,最多者获胜。为了解决这个问题,Gartner查阅了一本2000页的字典,并对父母撒谎说自己生病了,没有在家上学。他花了两周时间学习并赢得了比赛。最后他找到了4700个单词,而活动主办方以为最多只能找到2000多个单词。他因此获得了巧克力的奖励,而这只是他人生的第一个奖项。1974年,Gartner获得美国计算机学会图灵奖;1995年,他获得了冯·诺依曼奖。今年2月,高德纳接受了美国科技网站Quanta Magazine的采访,谈到了他创立算法分析的过程,以及《计算机程序设计艺术》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与字体设计师Herman Zapf合作
我与设计师交谈,了解他们想要达到的目标。数学是以定量的方式获取设计。通过数学,我在每样东西上都放了一个小表盘。我可以说字母“a”有这个点,这个宽度,这个角度,它在那里变窄,它在底部有一个确定的衬线长度。我从未打算取代设计师,我只想为下一代人精确获取我们现在正在做的事情。有了TeX,设计就可以重现。质量管理:你期望TeX被全世界接受吗?TeX最初只是给我的秘书和我自己使用。Phyllis是一位出色的秘书,她可以读懂我的笔迹并使它更漂亮。因为经验方法变得太昂贵,印刷技术正在下降。1970年代发表的几乎所有数学着作都看起来都很糟糕。比如在《美国数学月刊》中,下标的字体与主线文本不同。我知道电脑编程可以让书好看。1978年4月,我完成了TeX的试用版调试。5月有10个用户,6月有100个用户,7月份有1000个用户……每个新的团队都会说:“你必须有这个功能。”五年后,我发布了我们现在拥有的TeX。特克斯最初是为美国人设计的,后来欧洲人开始使用它。到了20世纪80年代,世界上所有语言的人都在使用它。QM:听起来探索发现一直是您人生进程的一部分,到今天仍然适用吗?我平均每周写五个新节目。诗人必须写诗,而我必须写计算机程序。理解一件事的最终考验是它是否能被计算机解释。我可以对你说点什么,你会点头,但我不确定我能解释得很好。
但是计算机没有点头,它重复了我所说的。在生活中大多数时候,您可以欺骗,但是对计算机不行。QM:你花时间写作,但你有其他兴趣。你每天是怎么和他们打交道的?杰克·伦敦每天在与别人交谈之前都要写1000字。他完全就像这样:“让我一个人静一静,直到我有千言万语!”然后他会在一天的剩余时间里喝酒或校对。我没有。我的日程安排原则是先做待办事项清单上我最讨厌的事情。周末,我会很开心。QM:真的吗?做讨厌的事情怎么能让自己快乐?对我来说,说“哦,让我成为一个天才,永远不要打扫厕所”很容易。即使你还得打扫厕所。我妻子的吉尔和我买了一套409清洁套装,然后就可以到处喷喷,心情愉悦地去打扫厕所!一个人的成功是由高下限决定的,而不是高上限。如果你能做好一件事,但有其他事情你失败了,后者会让你退缩。
但是如果你所做的每件事都成了,那么你就有了美好的生活。所以我努力学习如何让自己去做不喜欢的事情。QM:你还有很多与计算机科学无关的项目,比如你的音乐剧《幻想曲世界》。你甚至在一个两层楼的风琴周围建了一栋房子。这些事情也让你开心吗?我写了几本书,包括《计算机科学家很少谈论的事情》,这些书是关于神学的,它不像数学或者的计算机科学,你无法证明。如果只剩下机械的东西,我的人生就不完整了。我不懂的神秘的东西让我卑微,有些东西是我无法理解的。在数学中,我知道定理是否正确,我喜欢这样。但是如果一切都可行的话,我就不会有太多的生活乐趣。这些知识不会使我失望,相反,它让我不会墨守成规。QM:学完《计算机编程艺术》重要吗?计算机科学将继续发展。一种情况是,每个人都将不再使用我们现有的那种计算机,他们都会去做机器学习并使用量子计算机。那我就可以结束非量子计算机的故事了。当我能说“故事到此结束”时,我会更开心。那是我想象的完成这本书的最简单方法,但是我没有回答你的问题。你知道“香笛”的故事吗?18世纪后期,劳伦斯·斯特恩写了一部自传体小说《湘地传》,并分卷出版。主人公的故事大概只有100页。作者希望主角人生故事完整,但是他没有做到。斯特恩一直在写项狄传,直到去世。我想继续用我所知道的最好的方式写好内容,并且覆盖我的原创性。我会尽力而为,不是说一定要在某个期限前完成。我一直非常幸运,在适合我的特别的时候出生。除了计算机编程艺术,我现在已经实现了我人生的所有目标。我会继续讲我发现的故事,继续走下去。原文链接:https://www . quantamagazine . org/computer-scientist-Donald-knuth-cant-stop-stories-20200416/作者系网易新闻·网易号“各有态度”签约作者原标题:“计算机行业最大的“追书坑”,82岁的大神Gartner还在写《计算机编程艺术》第4B卷