前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >纽约时报长文:硅谷的尤达—算法大师Donald Knuth

纽约时报长文:硅谷的尤达—算法大师Donald Knuth

作者头像
AI科技评论
发布2018-12-29 16:16:40
5250
发布2018-12-29 16:16:40
举报
文章被收录于专栏:AI科技评论

AI科技评论按:Donald Knuth,著名计算机科学家,誉满全球的图灵奖获得者,斯坦福大学计算机系荣誉退休教授。作为现代计算机科学的先驱人物,他发明了计算机排版系统 TEX 和 METAFONT,创造了算法分析的领域,在计算机科学及数学领域发表了多部具广泛影响的论文和著作。日前,纽约时报对他进行了一次专访。在这次访谈中,Knuth 博士谈到了他对算法的一些看法,反思了他 50 年来的作品《The Art of Computer Programming》,并表示:“我担心算法变得太过重要。一开始,我们这些计算机科学家担心没有人听我们的,但现在,听我们的人太多了。” 关于纽约时报的撰文,雷锋网 AI 科技评论编译整理如下:

Donald Knuth 在加利福尼亚州斯坦福的家中。他是个臭名昭著的完美主义者,愿意对任何在他的书中发现错误的人给予奖励。

斯坦福大学的计算机科学家 Donald Knuth 与《星球大战》中的尤达略有相似,半个世纪以来,他一直是算法领域的精神导师——尽管他身高 6 尺 4 英寸(约 1 米93),戴着眼镜。

他是《The Art of Computer Programming》一书的作者,这部作品是他的终生工作,共有四卷。第一卷于 1968 年出版,这卷书籍(盒装出售,售价约 250 美元)2013 年被 American Scientist 杂志评选为塑造上世纪科学的书籍,一起被列入的书籍包括《The Autobiography of Charles Darwin》特别版、Tom Wolfe 的《The Right Stuff》、Rachel Carson 的《Silent Spring》以及 Albert Einstein、John von Neumann 和 Richard Feynman 的专著。

《The Art of Computer Programming》出版了一百多万册,是计算机领域的圣经。谷歌研究主管 Peter Norvig 曾说过:“这本书就像一本真正的圣经,它很长,也很全面,没有一本书能像它那样全面。”翻过 652 页,第一卷结束,可以看到后封面上比尔·盖茨的推荐语:“如果你能读懂全部内容,一定要给我发份简历。”

本书开头摘录自《McCall’s Cookbook》:

你们写了上千封信要求我们出版的那本书来啦。我们花了很多年的时间反复检查书里面那些数不尽的食谱,只为给您带来最好的、有趣的、完美的内容。

这本书主要讲算法,尽管 Knuth 博士指出,在 3800 年前的巴比伦刻写板上也能找到算法,但这本书能满足数字时代的需求。Knuth 是一位受人尊敬的算法专家;他的名字与该领域一些最重要的方法关联在一起,例如 Knuth-Morris-Pratt 字符串搜索算法。这个算法是在 1970 年设计的,它可以在文本中查找给定单词或字母的所有匹配内容——例如,当你点击 Command + F 在文档中搜索关键字时采用的就是这种算法。

工作时,现年 80 岁的 Knuth 博士通常穿得像个年轻的极客:上身长袖T恤,外面套件短袖T恤,下身牛仔裤,他在每年这个时候都是这种打扮。在早些年,他总是和机器打交道,写一些原始的二进制编码。

Norvig 博士说:“Knuth 证明了计算机系统实际上可以一直被理解到二进制编码级别。”但如今,随着算法对二进制编码的主宰(和破坏),普通程序员不再有时间去处理那些二进制“垃圾”,而是使用抽象的层次结构和一层又一层的代码,并且还经常使用从代码库找来的一连串代码。但是精英阶层的工程师偶尔还是会深入研究底层代码。

Norvig 博士在加利福尼亚州山景城的一次 Google 旅行小组会议上说:“在 Google,有时我们只是把东西整合在一起,但是更多时候,比如你正在为数十亿用户提供服务,高效很重要。效率提高 10% 就可以创造数十亿美元的价值,为了获得足够高的效率,你必须明白到底发生了什么。”

1963年,加利福尼亚理工学院,在这里Knuth获得博士学位

或许正如 Google 著名科学家 Andrei Broder 和 Knuth 博士以前的一个研究生在会议中所说的那样:“我们想为我们正在做的事情提供一些理论基础。我们不需要轻浮的、草率的或二流的算法。我们不希望其他的算法工程师说,‘你们这些家伙是白痴’”。

Google Trips 应用程序创建于 2016 年,采用了“定向运动算法”,用于绘制一天的推荐旅游活动。该团队正在致力于“最大限度地让一天看起来不那么糟糕”,例如,避免将用户反复送到同一地区,只是因为看的景点不同。他们从 300 年前的瑞士数学家莱昂哈德.欧拉的算法中得到灵感,欧拉想绘制一条穿越普鲁士城市科尼斯堡的路线,这条路线只穿过科尼斯堡的七座桥各一次。Knuth 博士在他的书的第一卷中阐述了欧拉的经典问题(他曾经将欧拉方法用于控制缝纫机的计算机编码)。

遵循 Knuth 博士的教义有助于避免代码的堆砌。众所周知,他引入了“编码可读性”的概念,强调代码对于人类和计算机都具有好的可读性的重要性,如今这个概念已经成为了共识。Knuth 博士甚至认为,一些计算机程序就像伊丽莎白·毕晓普的诗歌和菲利普·罗斯的《美国牧歌》一样,可读性和普利策文学奖作品并无二致。

他也是一位臭名昭著的完美主义者。xkcd 漫画家、《事物解释者》的作者 Randall Munroe 第一次听说 Knuth 博士,还是别人提到 Knuth 博士会提供奖金给任何在他的书中发现错误的人。Knuth 回忆道,“他们说得到 Knuth 博士的奖金就像获得计算机科学界的诺贝尔奖。”

Knuth 博士具有对自己要求严格、博学等诸多特质,这些特质也解释了为什么他这本书的完成遥遥无期。他和 Google 的联合创始人谢尔盖·布林打赌,布林是否会在他结束自己的作品之前获得博士学位。

算法的曙光

19 岁时,Knuth 博士在《疯狂》杂志上发表了他的第一篇技术论文《The Potrzebie System of Weights and Measures》。在计算机科学这门学科存在之前,他就成为了一名计算机科学家,在克利夫兰的一所学校学习数学,这所学校就是如今的 Case Western Reserve University。他看了学校的 IBM 650 大型机(一台十进制计算机)的示例程序,发现了一些不足之处,就重写了该软件和在课堂上使用的教科书。作为一项辅助项目,他编写计算机程序来执行统计数据,帮助篮球队赢得联赛冠军。

在暑假期间,Knuth 博士编写编译器赚的钱比当教授一年挣的还多。编译器就像一个翻译器,将高级编程语言(类似于代数)转换为低级编程语言(有时是神秘的二进制),并在转换过程中对其改进。在计算机科学中,“优化”确实是一门艺术,Knuthian 有一句名言:“过早的优化是万恶之源。”

最终,Knuth 博士自己成为了“编译器”,他无意中开辟了一个新的领域,并称之为“算法分析”,有个出版商委托他写一本关于编译器的书,这本书最后成为一本他所知道的所有计算机编程方法的集合,成为了一本关于算法的书。

摄于 1981 年,Knuth 正在看 1957 年出版的《疯狂》杂志,这本杂志里有他发表的第一篇技术论文,发表这篇论文的时候他才 19 岁。

《The Art of Computer Programming》1-4卷。比尔·盖茨在推荐语中写道:“如果你能读懂全部内容,一定要给我发份简历。”

“文艺复兴时期,人们开始怀疑算法这个词的起源。” Knuth 博士说道,“早期的语言学家试图通过组合像 algiros [痛苦] + arithmos [数字] 这些词来猜测它的起源。”“事实上,”,Knuth 博士继续说,“在 9 世纪波斯教科书作者 Abū ‘Abd Allāh Muhammad ibn Mūsā al-Khwārizmī 的书中就有这个词的拉丁语。”。1979 年,Knuth 博士去了乌兹别克斯坦,到 al-Khwārizmī’s 的故乡朝圣。

当 Knuth 博士刚开始写作时,他没打算写得这么复杂。不久之后,计算机科学经历大爆炸,所以他重新构思了这部作品并重铸成七卷。现在,他开始分册,把它们分成一系列丛书。接下来要写的是系列 5 的第 4 卷,包含 “backtracking” 和 “dancing links” 算法,原计划出版的时间为圣诞节,但它被推迟到第二年四月出版,因为 Knuth 博士不断发现越来越多有意思的问题,他想把这些问题写进书中。

为了尽早完成这本书,Knuth 博士一直惜时如金。他 55 岁退休,极少参加公众活动,并停止使用电子邮件(至少停止了因公电子邮件)。Andrei Broder 回忆说,即使是在 20 世纪 80 年代早期,Knuth 对时间也管理得非常严格。

Knuth 博士通常在周五上午约见学生,在这之后他便在人工智能学科创始人 John McCarthy 的实验室度过夜晚,在这里他可以使用空闲的计算机。随着数字出版的出现,Knuth 博士对他心爱的书在书页上的样子感到不满,他承担了创建 TeX 计算机排版系统的任务,现在这一系统仍然是所有科学出版物的形式的黄金标准。有些人认为这是 Knuth 博士对世界最大的贡献,也是自 Gutenberg 以来人类对印刷术最大的贡献。

这条长达十年的迂回之路发生在用户之间共享计算机的时代,那时,在大多数人都睡觉的晚上,计算机跑得更快。因此,Knuth 博士的作息开始日夜颠倒,他把作息时间调整了 12 个小时,并将约见学生的时间改为周五晚上 8 点到午夜。Broder 博士回忆说:“当我告诉我的女朋友周五晚上不能做任何事情,因为周五晚上 10 点,我必须和我的导师见面时,她想,‘这件事太愚蠢了,真的是太愚蠢。’

当 Knuth 出现时,他一定会 100% 投入到当前的事情中。微软研究院董事总经理Jennifer Chayes 说:“和他在一起你会很高兴。”“他在社区里是最棒的。如果说有个人在某种程度上既温暖又有深度,那这个人就是 Don。”

Knuth 与字体设计师 Hermann Zapf 讨论字样。许多人认为 Knuth 博士在 TeX 电脑排版系统上的工作,是自 Gutenberg.CreditBettmann的Getty Images 以来对排版最大的贡献。

拜访Knuth的星期天

Knuth 住在斯坦福,允许周日来访。他这一天的时间很独特,通常他的空闲时间是从下午 1 点到到 4 点(称为 “modulo nap time” ),他会进行一场神圣的每日仪式。他很早就起床,去帕洛阿尔托的第一路德教堂,在这里他给人们上一门“Sunday” 学校课程。在开车回家时,他会对数学进行一些哲学上的思考。

“我永远不可能全都知道,”他说,“如果我对问题的答案一无所知,或者我什么都知道,生活将会糟糕得多。”然后他带我们参观了他加州现代风格的房子,这所房子是他和他的妻子 Jill 在 1970 年建造的,Jill 是一名平面设计师。他的办公室里乱七八糟地堆放着成堆的 USB 线,还装饰着 Jill 设计的情人节心形艺术品。最令人印象深刻的是音乐厅,环绕着他定制的 812 管风琴。在这天的最后,我们开了一场益智派对,并喝了啤酒。

拼图和游戏,写一本关于超现实数的中篇小说,写一部 90 分钟的多媒体音乐白日梦——“幻想启示录”,这些都是他真正感兴趣的东西。他的书有一部分名为“谜题与真实世界”。他把这里的一段发给了艺术家 Martin Demaine 和计算机科学家 Erik Demaine,因为他用到了他们的“algorithmic puzzle fonts”。他们是俩父子,都在麻省理工学院。

“我很激动,”Erik Demaine 说。“能出现在这本书里面真是荣幸。”他提到了 Knuth的另一句名言,这句鼓舞人心的话是两年一度的 “FUN with Algorithms” 会议的座右铭:“快乐也许是一直以来的主要目标。”

“但是后来,” Demaine 博士说,“这个领域崛起并且追求实际应用。”工程师、科学家和艺术家们正在联合起来解决现实世界的问题,如蛋白质折叠、机器人技术、安全气囊等问题,他们使用 Demaine 父子的数学折纸设计方法来将纸片和连杆折叠成不同的形状。

当然,算法繁琐性会导致现实问题。人类编写的算法正解决着越来越难的问题,但是会出现存在错误和偏见的代码,这些已经足够麻烦了。更令人担忧的也许是那些不是由人类编写的算法,即机器通过学习后编写的算法。

程序员仍然训练机器,关键是,他们会给机器输入数据。(数据是偏见和错误的新领域,并且这里的错误和偏见更难被发现和修正)。然而,正如麻省理工学院媒体实验室研究员 Kevin Slavin 所说:“我们现在正在编一些自己看不懂的算法。这是一个独一无二的时代,我们受制于那些源于我们,但是我们并不理解的思想、行动所支配。”正如 Slavin在TED 中提到的那句话,“如果你是一个算法,那你将有光明的未来。(“It’s a bright future, if you’re an algorithm.”)”

1999 年,Knuth 博士在家办公

一些笔记

“如果你是一个精通 Knuth 所述知识的算法,那未来将更加光明。”Google 的 Norvig 博士表示,“今天,程序员使用 Knuth 和其他人已经完成的内容作为他们算法的组成部分,然后他们把这些内容与他们需要的其他内容相结合。”

“AI 也是一样,只是这些组合将会基于数据自动完成,而不是由程序员来完成。你希望 AI 能够基于数据,将之前的内容组合起来,得到好的结果。但是你必须决定这些内容是什么。可能所有内容都出自 Knuth 作品的某个页面或章节,因为这是完成某些任务的最佳方式。”

Knuth 一直在坚持完成他的作品,他估计还需要 25 年才能完成《The Art of Computer Programming》,尽管自 1980 年他就已经在做这件事情。“会不会有一章,或者有一页谈到会写算法的算法?”“当然不会!”Knuth 表示。

“我担心算法变得太过重要。”他补充道,“一开始,我们这些计算机科学家担心没有人听我们的,但现在,听我们的人太多了。”

来源:

https://www.nytimes.com/2018/12/17/science/donald-knuth-computers-algorithms-programming.html?smid=tw-nytimesscience&smtyp=cur

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技评论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档