当前位置: > 华宇登录 > 正文 正文

华宇注册主管_高德纳访谈实录:除了写书,他已

对计算机科学先驱高德纳(Donald Knuth)来说,优越的编程就相当于美妙的表达。现年 82 岁高龄的高德纳老爷子至今仍坚持写作已经连续几十年的计算机科学巨著《计算机程序设计艺术》(The Art of Computer Programming)。克日,《量子杂志》采访了这位孜孜不倦讲述计算机科学故事的计算机科学家,也让我们看到了这位计算机科学先驱的另一面。


本文来自微信民众号:机械之心(ID:almosthuman2014),作者:Susan D'Agostino,机械之心编译,原题目《高德纳:讲故事停不下来的计算机科学先驱》头图来自:Donald Knuth主页


高德纳老爷子一生都在用计算机程序讲述计算机程序的故事。图源:Vivian Cromwell


一场糖果名称组词竞赛让高德纳认清了自己的才气


高德纳是一位计算机科学家,他的岁数差不多就和他投身领域降生的时间一样长。在上世纪中叶计算机编程刚刚降生的那些年,当地一家名为 Ziegler 的糖果公司举办了一场竞赛,这让那时仅 13 岁的高德纳看清了自己的才气。这场竞赛是让孩子们确定能用一种糖果名称(即 Giant Bar)的字母组成多少个单词,这是一个界定清晰明确的问题,也正是他所喜欢的那类问题。


“我有一种强迫症,而它让我产生了对数字离散问题的兴趣。而且,我也很热爱钻研大量信息。”高德纳说。


在他家的地下室中,高德纳系统性地翻阅了他家那本 2000 页厚的 Funk&Wagnalls 无删节版词典。他甚至说服了怙恃,让他们信赖自己生病了,这样他两周时间都没去上学,而是把时间投入到了这个问题上。基于这种糖果名称的字母,他标注了以 Aa、Ab 和 Ba 等可能在单词前面的字母串,并将它们做成了索引卡片。之后,他最先检索词典中知足条件的条目。他发现词典中有些部门可以完全跳过,好比以字母 C 或 BU 开头的单词部门。


赛事官方预计最后的胜者能找到约莫 2000 个单词,而高德纳整整找到了 4700 多个。他为他的班级赢得了在电视上露脸以及巧克力奖励。


在那以后,他还将继续为自己赢得更多“巧克力”,包罗第一届 ACM 格蕾丝·穆雷·赫柏(Grace Murray Hopper)奖以及美国国家科学奖章和 1974 年图灵奖。


孜孜不倦编撰计算机科学巨著《计算机程序设计艺术》


高德纳甚至将自己对离散数字问题和大量信息的热爱融入到了他的皇皇巨著《计算机程序设计艺术》中,这套书从 1962 年他照样一个研究生时就已经最先写了,但到现在还未完成。


1968 年他出书了该书的第 1 卷,现在该卷已经印了 27 版。第 2 和 3 卷划分出书于 1969 和 1973 年。那时刻他已经是斯坦福大学的一位计算机科学教授了,但他也忧郁教职事情会故障自己写完这套书。因此他在 1990 年请假,接着在 1993 年退休,计划余生都用来完成这套七卷巨著。


现在,他已经 82 岁了,仍在起劲撰写第 4 卷的 B 部门,他预计这一卷至少有 A 到 F 共 6 部门。


高德纳正起劲撰写《计算机程序设计的艺术》第 4 卷 B 部门。他预计这一卷至少另有 4 部门,而整套书另有 5、6、7 三卷要完成。照片来自高德纳的妻子高精兰(Jill Knuth)。


高德纳访谈实录:一个纷歧样的高德纳老爷子


高德纳接受了《量子杂志》的采访,并就提出的问题逐一举行了回覆。从这些采访中可以望见高德纳老爷子的科研理念和人生态度。


您一直都对写作有兴趣吗?


之前,有人告诉我说现实天下对我而言太难了。我并没有想要发现任何新器械的想法,但我热爱通过写作来表达我享受这些头脑的喜悦。


高德纳总是讲述带有科学内容转折的故事。上大学时他写了一篇短篇小说,内里的每个词都是一个化学式。照片来自高德纳的妻子高精兰(Jill Knuth)


上六年级时,我和几个同伙在一台油印机上写了两页的文章,不外内容全是笑话。上高中时,作为新闻报编辑,我每周一晚上都要通宵达旦赶稿子。上大学时,我作为校刊编辑写了自己的第一行文字。在大学三四年级时,我们最先写工程和科学谈论。举个例子,我写了《Th_5E_4 CH_3EmIC_2Al_2Ca_3P_4Er》,其中每个词都是一个化学式。


这是您撰写这部巨著的缘故原由吗?您是否将其视为又一个故事?


《计算机程序设计艺术》是一个宣言。它讲述了我何等喜欢数学以及我希望的学习方式。从第 1 页最先,我最先讲关于算法的故事。那时刻大多数教科书都没有探索科学发现中人的一面。它们只是说“这是化学的事情方式”或“那是物理学的事情方式”。


我也讲了一个关于手艺的故事。我说:“有些器械是没有效果的,这里有一种可以解决问题的方式。我不只是单纯地陈述事实,我还增加了戏剧性。”若是你知道发现的先后顺序,那么科学学习来就变得容易多了。另外,我也没法拒绝一个好故事。我没把自己视为一个先驱,而是将自己看作是一个纪录者。


那么除了故事之外,《计算机程序设计艺术》还讲了什么?


在我写了两年书之后,我意识到这套书的新颖之处在于它可以定量地确定一个程序的优劣水平。我不只是想说一个程序比另一个程序更好。我想说的是一个程序比另一个程序好 13.8%,而且对这种对照效果做出了注释。


作者 A 会谈论算法 A,作者 B 会谈论他的竞争算法 B。而且,作者 A 从来不写关于算法 B 的器械,作者 B 也从来不写有关算法 A 的器械。另外,作者 A 和 B 使用的计算机也纷歧样。那么,作为一个中立的纪录者,我会从这样一个角度注释这两个算法,即“一个算法事实有多好?”。提出这样的问题是很有意思的,这就是算法剖析。


“算法剖析”只是“计算机程序设计艺术”的另一种说法吗?


1967 年,我在加入工业与应用数学学会集会(Industrial and Applied Mathematics conference)时,有人问我做了些什么。那时刻,计算机科学被划分成了数值剖析、人工智能和编程语言几个领域。我意识到我需要为我的事情起个名字。


我的书的新颖性在于对算法的优劣水平展开了严酷的探讨。以是我决议下次有人问我这个问题时,我会回覆自己在做“算法剖析”。我的界说是:若是我对此感兴趣,那这就是算法剖析。这不是一个异常好的界说。


但对您而言,程序设计关乎的不仅仅是功效。好比说,当您在设计 TeX 时,您想要找到毗邻特定点的“最心旷神怡的曲线”。您那时想把美编写成程序吗?


我的程序毗邻点的方式就像是对优异书法家的事情举行反向工程(reverse-engineered)。好比字母 S 中有一个点是曲率由正变负的点,然后会稳固一段时间。这个字母的设计者遵照了一些逻辑来让该线条酿成字母的形状。我不仅希望体验这种设计效果,还想明白其背后的智力历程。这就像编写一个计算机程序。


1980 年,高德纳与字体设计师 Herman Zapf 在他的斯坦福大学办公室,这时刻高德纳的排版程序 TeX 刚公布仅几年时间。图片来自:Chuck Painter / Stanford News Service


我与设计师举行了攀谈,希望明白他们想要实现什么。这里涉及到的数学是希望能以量化的方式来明白这些设计。借助数学,我在所有器械上都放上了一个小刻度盘。好比对于字母 A,我可以说它的粗细水平、这里的角度是多少、那里逐渐变细、底部有个凸起以及有特定的衬线长度等等。


我从没想过取代设计师。我只是想让后裔领会我们那时是怎样做的。使用 TeX,我们可以将设计重现出来。


那时您是否预见到 TeX 会被全天下接纳或者它的泛化能力?


那时 TeX 只是为了给我的秘书和我自己用。Phyllis(Astrid Benson Winkler)是一位精彩的秘书。她能读懂我的手写内容并让它们以更优美的方式出现出来。打印手艺日渐式微,由于这种方式虽然经由验证,但成本却过于高昂。1970 年月揭晓的险些所有数学著作看起来都异常貌寝。在《美国数学月刊(American Mathematical Monthly)》上,下标字体与正文主体字体都纷歧样。我知道计算机编程能让这些书也变得悦目。


1973 年 4 月,我完成了 TeX 一个试验版本的调试。5 月份,我有了 10 个用户。6 月份,我有了 100 个用户。7 月份,我有了 1000 个。每个新的用户群都会说:“TeX 必须具有这样那样的功效”。五年之后,我公布了基本上就是现在这样的 TeX。这个软件最早是为美国人设计的,然后欧洲人也最先使用它。以是在 20 世纪 80 年月,我为 TeX 添加了天下语言支持。


听起来您的开发历程一直伴随着新的发现。到现在依然云云吗?


我平均每周写 5 个新程序。诗人必须写诗,而我必须写计算机程序。


对于我是否明白某些器械,最终测试就是看我能否向计算机注释这个器械。我可以向你注释说明,你可能会颔首示意明白,但我不能确定我是否注释清晰了。但计算机“不会颔首”,它只会精准地重复我让它去做的事。在生涯中的许多时刻,你可以虚张声势,但这对计算机不起作用。


“人类之间相同的最好方式是故事”高德纳说。这种方式让他可以更严酷更中立地剖析算法。图片来自 Vivian Cromwell


您夜日继日地写作,您另有其它爱好吗?您怎样渡过一样平常的每一天?


杰克·伦敦天天都要写作 1000 词之后才会与人谈话。他完全就是“在我完成 1000 词之前不要打扰我”,然后他剩下的时间就是喝酒或校对。但我差别,我的日程安排原则是优先做我最厌恶的事情。到周末时,我会异常开心。


真的吗?怎么做您憎恶的事会让您开心?


在我看来,这样说很简朴:“让我做个天才吧,永远不用清算茅厕。”但纵然清算茅厕也是可以做的。我的妻子 Jill 和我有能放 409 清洁剂插槽的制服。你去茅厕扫除然后喷水,清算茅厕的感受异常好。


决议一个人生涯乐成的因素是要有一个较高的最小值,而不是较高的最大值。若是你能很好地做成一些事情,其它事情又会失败,那么后者就拖累了你。但若是你险些能把每件事都做得不错,那么你就有一个好的人生。以是我全力去学习其他人可能以为做起来不愉快的事情。


2020 年,高德纳在自己家中。1993 年他退休了,以便完成自己的巨著《计算机程序设计艺术》。照片来自高德纳的妻子高精兰(Jill Knuth)


您也有许多与计算机科学无关的项目,好比您的音乐作品《Fantasia Apocalyptica》。您的屋子甚至都是您绕着一组两层楼高的管风琴制作的。这样的流动也让您感应快乐吗?


我写了好几本关于神学的书,包罗《计算机科学家很少谈论的事情(Things a Computer Scientist Rarely Talks About)》,内里的器械与数学或计算机科学纷歧样,你没法证实它们。若是我的生涯都是剖析和厘清事物,那么就会不完整。我不明白的神秘事物给我了谦卑。有一些事情超出了我的明白。


在数学领域,我知道定理何时是准确的。我喜欢那样。但若是一切都可做可行,那么生涯就毫无意思。这样的知识不会让我绝望。相反,它能确保我的生涯纷歧成稳定。


您以为顺利完成《计算机程序设计艺术》是不是异常重要?


哦,我知道计算机科学还会继续长存并发展下去。有一种情形是所有人都不再研究现在的计算机了。他们全都跑去研究机械学习和量子计算机。那么我可以走到非量子计算机的终点。若是我可以说“这就是故事的终点”,我固然很喜悦。这是想象我自己会完成的最简朴的方式。但我不会回覆你的问题。


你知道特里斯特拉姆·项狄(Tristram Shandy)吗?18 世纪后期,劳伦斯·斯特恩(Lawrence Sterne)写了一本自传性的书《绅士特里斯特拉姆·项狄的人生和看法》(The Life and Opinions of Tristram Shandy, Gentleman),并以分册或分期的形式揭晓了它。其中写了他人生第一周的约莫 100 页的故事。他想要完成这个人生故事,但固然他最后完不成。斯特恩一直在写特里斯特拉姆·项狄的故事,直到他再也写不动了。


我想要以我知道的最好的方式继续写优质内容,先容那些我有一些原创性看法的事情。我会尽可能地去做,而不会说我要在某个停止日期前完成些什么。我一直都异常幸运,正好赶上了时代的浪潮,出生在了我可以做稀奇适合我做的事情的时代。现在除了《计算机程序设计艺术》,我已经完成了我所有的人生目的。在现在这种情形下,我还将继续讲述我可以找到的种种故事,并将它们通报下去。


原文链接:https://www.quantamagazine.org/computer-scientist-donald-knuth-cant-stop-telling-stories-20200416/


本文来自微信民众号:机械之心(ID:almosthuman2014),作者:Susan D'Agostino

版权保护: 本文由 原创,转载请保留链接: http://www.allart.com.cn//html/2020/0506/1748.html

相关文章