本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处
晓查 编译整理

Donald Knuth,中文名高德纳,是他创造了“算法分析”这一新的计算机科学研究领域。

对于他,我们已无需太多赘述。他发明的TeX已成为科学界通用的排版工具,每个计算机专业学生应该都拜读过他的教材《计算机程序设计艺术》

这本书原本是他在1962年读研期间开始编写,至今尚未完成,第1卷第1版于1968年出版,到今天已经更新到第42版。

为了让自己能专心写书,他1993年从斯坦福大学的计算机科学教授职位上退休,按照他的规划这套书的总共有7卷。

现年82岁的他还在努力完成第4卷的B分册,他预计这本书至少包含A到F部分。

Donald Knuth的中文名“高德纳”是1977年访问中国前,姚期智夫人储枫所取。姓高是因为他身材高大,德纳是Donald的音译。

高德纳从13岁开始就较真。当时一家糖果公司举办了一场比赛:用Ziegler’s Giant Bar里的字母组成单词,最多者获胜。

为了解决这个问题,高德纳翻阅了2000页的字典,而且还骗父母说自己病了,在家不上学,用2周的时间潜心研究并赢得了比赛。

最后他找到了4700个单词,而活动主办方以为最多只能找到2000多个单词。他因此获得了巧克力的奖励,而这只是他人生的第一个奖项。

1974年,高德纳获得了美国计算机学会的图灵奖;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年,高德纳与字体设计师Herman Zapf合作

我与设计师交谈,了解他们想要达到的目标。数学是以定量的方式获取设计。

通过数学,我在每样东西上都放了小刻度盘。我可以说字母“A”有这个点、这个宽度、这个角度、在那里变细、底部有确定的衬线长度。

我从未打算取代设计师,我只想为下一代人精确获取我们现在正在做的事情。有了TeX,设计就可以重现。

QM:您有没有预料到TeX在全世界被接受?

TeX最初只是给我的秘书和我自己使用。Phyllis是一位出色的秘书,她可以读懂我的笔迹并使它更漂亮。

由于经验的方法变得过于昂贵,因此印刷技术日渐式微。

1970年代发表的几乎所有数学著作都看起来都很糟糕。比如在《美国数学月刊》中,下标的字体与主线文本不同。

我知道计算机编程可以使书本看起来不错。

1978年4月,我完成了TeX的试用版调试。5月有10个用户,6月有100个用户,7月份有1000个用户……每个新的团队都会说:“你必须有这个功能。”

五年后,我发布了我们现在拥有的TeX。Tex最初为美国人设计的,然后欧洲人也开始使用它。到了1980年代,世界上各种语言的人都在使用它。

QM:听起来探索发现一直是您人生进程的一部分,到今天仍然适用吗?

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

理解某件事的终极测试是能否向计算机解释。我可以对你说些什么,你会点头,但我不确定我解释得很好。

但是计算机没有点头,它重复了我所说的。在生活中大多数时候,您可以欺骗,但是对计算机不行。

QM:您花时间写作,但您还有其他兴趣,您每天是如何处理的?

杰克·伦敦(注:美国现实主义小说家)每天在与别人交谈之前都要写1000字。他完全就像这样:“让我一个人静一静,直到我有千言万语!”然后他会在一天的剩余时间里喝酒或校对。

我不是,我的日程安排原则是,在待办事项清单上先做自己最讨厌的事情。到周末,我就会很开心。

QM:真的吗?做讨厌的事情怎么能让自己快乐?

对我来说,说“哦,让我成为一个天才,永远不要打扫厕所”,这是很容易的。即便你还是要去打扫厕所。

我妻子的吉尔和我买了一套409清洁套装,然后就可以到处喷喷,心情愉悦地去打扫厕所!

一个人的成功是由高的下限决定的,而不是高的上限。如果你能把某件事做得很好,但还有其他事情你失败了,而后者会让你退缩。

但是如果你所做的每件事都成了,那么你就有了美好的生活。所以我努力学习如何让自己去做不喜欢的事情。

QM:您也有许多与计算机科学无关的项目,例如您的音乐作品《幻想曲世界》,您甚至在两层高的管风琴周围建造房子。这些事情是否也使您感到快乐?

我写了几本书,包括《计算机科学家很少谈论的事情》(Things a Computer Scientist Rarely Talks About),这些书是关于神学的,它不像数学或者的计算机科学,你无法证明。

如果只剩下机械的东西,我的生活就不会完整。我不了解的神秘事物让我谦逊,有些事情超出了我的理解。

在数学中,我知道定理是否正确,我喜欢这样。但是如果一切都可行的话,我就不会有太多的生活乐趣。这些知识不会使我失望,相反,它让我不会墨守成规。

QM:完成《计算机程序设计艺术》是否重要?

计算机科学将继续发展。一种情况是,每个人都将不再使用我们现有的那种计算机,他们都会去做机器学习并使用量子计算机。

然后我就可以结束非量子计算机的故事。当我可以说“这就是故事的结局”的时候,我会更开心。

那是我想象的完成这本书的最简单方法,但是我没有回答你的问题。

你知道“项狄”的故事吗?劳伦斯·斯特恩(注:英国伤感主义小说家)在18世纪后期撰写了一本自传体小说《项狄传》,以分册方式出版。

主人公的故事大概只有100页。作者希望主角人生故事完整,但是他没有做到。斯特恩一直在写项狄传,直到去世。

我想以我所知的最佳方式继续去写出好的内容,并涵盖我独创性的部分。我会尽我所能,而不是说我必须在某个截止日期之前完成。

我一直非常幸运,在适合我的特别的时候出生。

除了《计算机程序设计艺术》,我现在已经实现了我一生的所有目标。我将继续讲述我找到的故事并持续下去。

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

计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...相关推荐

  1. 82岁高龄的高德纳仍在写《计算机程序设计艺术》,那是他未完成的人生目标...

    本文转载自:程序员书库 编译:猿妹 链接: https://www.quantamagazine.org/computer-scientist-donald-knuth-cant-stop-telli ...

  2. 披阅十载,84岁图灵奖得主高德纳的《计算机程序设计艺术:卷4B》终于出版

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 来自:机器之心 从博士期间的一个决定开始,高德纳已经坚持写了 50 年. 刚刚,84 岁 ...

  3. 【AI架构实践】企业级应用集成AI大模型架构白皮书 / By 禅与计算机程序设计艺术AI

    目录 企业级应用集成AI大模型架构白皮书 摘要 目录 1. 引言 2. AI大模型概述

  4. 这算通过审核了么?接下来还有没有什么坑,求大神指点!--酷课堂iOS交流群问答精华整理(201808期)

    酷课堂iOS交流群 我们是一个什么样的组织: 酷课堂iOS交流群,聚集了一群热爱技术.有趣.有料,平均Q龄在10年以上的"老司机",他们遍布在全国/球各地,有知名企业iOS工程师. ...

  5. 36 岁捧走图灵碗!80 岁算法大师高德纳要在 105 岁完结《计算机程序设计艺术》...

    编译:CSDN - 弯月(ID:CSDNnews):英文: Siobhan Roberts 号称计算机领域经典必读的著作你都读过哪些,例如<计算机程序设计艺术>系列?近日,这套书的作者高德 ...

  6. c语言写的跳转心理测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求各位大神赐教!我做了一个"心理测试的答题卷"编程,总共有10道题,每道题有3个供选择的答案,每个答案得分从小到大是8分.5分和3分, ...

  7. 用c语言编写心里测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求各位大神赐教!我做了一个"心理测试的答题卷"编程,总共有10道题,每道题有3个供选择的答案,每个答案得分从小到大是8分.5分和3分, ...

  8. c语言编写心理测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求各位大神赐教!我做了一个"心理测试的答题卷"编程,总共有10道题,每道题有3个供选择的答案,每个答案得分从小到大是8分.5分和3分, ...

  9. c语言做心理测试程序,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求各位大神赐教!我做了一个"心理测试的答题卷"编程,总共有10道题,每道题有3个供选择的答案,每个答案得分从小到大是8分.5分和3分, ...

最新文章

  1. 华为企业管理经典案例_企业税务筹划-华为公司税筹案例分析
  2. 抛出java类型异常的方法_Java Streams:抛出异常的优雅方法
  3. CentOS挂载NTFS移动硬盘
  4. 2019牛客暑期多校训练营(第一场)E题 ABBA(DP)
  5. 批量部署虚拟机实战解析
  6. C语言试题九十之实现输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
  7. matlab 离散傅里叶变换_Matlab中的傅里叶变换
  8. Ubuntu安装Chrome的方法
  9. 机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
  10. Jenkins下载war包升级版本
  11. 艺工交叉——观《达芬奇的人生密码》有感
  12. 一些有趣的数学知识-数学知识
  13. Monte-Carlo算法(基本原理,理论基础,应用实践)
  14. 41-fcntl设置文件锁
  15. Windows 技术篇-安装指定版本Internet Explorer浏览器方法,IE浏览器的升级和降级
  16. openmv 神经网络 超出内存_星瞳科技OpenMV视频教程22-神经网络cifar_10
  17. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
  18. 面试 java -----Socket编程
  19. 19.Oracle数据库SQL开发之 笛卡尔积
  20. vs.net发送邮件(2.0)

热门文章

  1. 刻意练习:LeetCode实战 -- Task01. 两数之和
  2. 【ACM】杭电OJ 2036(待更)
  3. 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...
  4. 多数编程语言里的0.1+0.2≠0.3?
  5. 75道常见AI面试题,看看你的知识盲点在哪?(附解析)
  6. 那位13岁就当上老板的开发者是如何炼成的?
  7. 8月精选Python开源项目Top10
  8. AI一分钟 | 北京发放自动驾驶首批牌照,百度获准测试;亿航美国分公司申请破产,债务高达数百万美元
  9. 新手科普 | 探索机器学习模型,保障账户安全
  10. SpringBoot最最最常用的注解梳理