硅谷的“尤达大师”
2019-01-15Sora
Sora
唐纳德·克努特
尤达大师是著名科幻影片《星球大战》里的角色。他身材矮小,寿命极长,喜欢用饱含哲理的倒装句给人忠告。更重要的是,他是绝地武士里“元老中的元老”,更是地位崇高的导师型人物。
半个世纪以来,斯坦福大学中与尤达略相似的计算机科学家唐纳德·克努特,已经成为了算法领域的精神向导,尽管他身高6英尺4英寸,且戴着眼镜。
“年轻”的极客
克努特是长达四卷的《计算机程序设计艺术》一书的作者,这也是他毕生的心血。第一卷于1968年首次出版,而合集(盒装价格约250美元)则于2013年被美国科学家列入“塑造20世纪科学”的书籍清单中—与特别版的《查尔斯·达尔文自传》、蕾切尔·卡森的《寂静的春天》以及阿尔伯特·爱因斯坦、约翰·冯诺伊曼和理查德·费曼的著作放在一起。
该书印刷超过100万册,是算法领域的《圣经》。“就像一本真实的《圣经》一样,它是漫长而全面的;没有其他书能如此面面俱到。”谷歌研究主管彼得·诺维格说。652页之后,第一卷以封底上的比尔·盖茨写的一句话作为结尾:“如果你能阅读消化完整本书,你一定要给我发一份简历。”
书中的内容是算法—满足数字时代的需求的食谱,尽管克努特喜欢指出,算法其实在3800年前的巴比伦泥板上就能找到。他是一位受人尊敬的算法大师;他的名字附在该领域最重要的一些成果上,例如克努特-莫里斯-普拉特字符串搜索算法。这项1970年完成的发明,用于在文本中找到所有出现的给定单词或字母组合—例如,现在你就可以一起按下Command和F两个按键,来搜索文档中的关键字。
现年80岁的克努特,通常穿着还是像个年轻极客:至少每年的这个时候,他都用短袖T恤套在长袖T恤外面,搭配牛仔裤。早年间,他的工作与机器息息相关,写着“原生代码”,用0和1到处修修补补。
克努特与字体设计师H e r ma n nZapf讨论字体。许多人认为克努特在TeX计算机排版系统上的工作是自古腾堡以来对排版的最大贡献
算法的黎明
19岁时,克努特在《Mad》杂志上发表了他的第一篇技术论文——《Potrzebie度量衡系统》。在计算机科学这一学科存在之前,他就已经成为了一名计算机科学家,并且在现在的克利夫兰凯斯西储大学学习数学。
他查看了学校的十进制IBM650大型计算机上面的示例程序,并注意到了一些不足之处,于是就重写了这些软件,以及课堂上所使用的教科书。同时,他还把为篮球队进行统计数据作为业余项目,编写了一个帮助他们赢得联赛的计算机程序——沃尔特·科隆凯特将其称为“电子教练”。
暑假期间,克努特通过撰写编译器赚取的钱,比教授们一年的收入都多。编译器就像一个翻译器,将高级编程语言(类似代数)转换为低级编程语言(有时是神秘的二进制),理想情况下,还能在此过程中对代码进行优化。
在计算机科学中,“优化”确实是一门艺术。这在一句克努特的口头禅中有所阐述:“不成熟的优化是万恶之源。”
最终,克努特自己也变成了编译器,他在不经意间创造了一个“算法分析”的全新领域。一位出版商聘请他写一本关于编译器的书,但这本书演变成了一本集合了他所知道的关于如何为计算机编程的知识的书——一本算法书。
“在文艺复兴时期,对算法(algorithm)这个词的起源是有疑问的。早期的语言学家试图通过做出像algiros(痛苦)+arithmos(算术)这样的组合,来推测它是如何被推导出来的。”事实上,克努特继续说,“这个命名起源于9世纪的波斯教科书作者,其姓名拉丁语化为Algorithmi。”绝不半途而废的克努特,于1979年前往乌兹别克斯坦,特地去Algorithmi的家乡进行了“朝圣”。
鸿篇巨制
克努特开始写作时,他只打算写一篇文章。不久之后,计算机科学经历了大爆炸式发展,因此,他重新进行了构想,并将书的长度定为七卷。
为了提高写完这套鸿篇巨制的概率,克努特一直十分珍惜时间。他在55岁时退休,尽可能不参加公开活动,并停止使用电子邮件(至少官方宣称是这样)。安德烈·布罗德回忆说,即使在20世纪80年代早期,时间管理也是这位教授最具代表性的特征。
克努特通常在周五早上与预约过的学生会面,这会持续到他开始在人工智能创始人约翰·麦卡锡的实验室度过漫漫长夜,以便使用闲下来的计算机。随着数字出版业务的出现,克努特开始考虑他所钟爱的书籍看起来会变成什么样的问题。
于是,他又开始创建TeX计算机排版系统。该系统为所有形式的科学传播和出版物,提供了一个极高的标准。有人认为,这是克努特对世界的最大贡献,也是自古登堡以来,人类对排版方面的最大贡献。
而且,那还是计算机在大多数人进入梦乡后的夜晚跑得更快的年代。所以克努特昼夜颠倒,将他的日程安排调整了12个小时,把学生预约挪到周五晚上8点开始,直到午夜。
布羅德博士回忆说:“当我告诉女朋友,咱们星期五晚上不能约会,因为我必须在晚上10点去见导师时,她说‘这太蠢了。”
当克努特选择在场时,他一定是百分之百投入的。微软研究院董事总经理詹妮弗·夏雷斯说:“你在他身边时会感到很荣幸。他是专业领域中的佼佼者。”
算法学家的星期天
克努特住在斯坦福,并允许自己有一名周日访客。能让他花掉整整一天是非常特别的—通常他有空的时候是在“模数午睡时间”,这是从下午1点开始,到下午4点结束的神圣日常仪式。
他起得很早,然后会在帕洛阿尔托的第一路德教会,为一屋子人提供一堂星期日学校课程。之后他开车回家,路上他会从哲学角度思考数学。
“我永远不会知道一切,”他说,“如果没有什么我知道的答案,也没有什么我不知道的答案,我的生活肯定会糟糕得多。”然后,他展示了他和他的妻子吉尔于1970年建造的“加州现代”房子。而这一天也会在啤酒与谜题派对中结束。
他的书中,有一个模块的标题为“谜题与真实世界”。他通过电子邮件,将摘录发送给了麻省理工学院的艺术家马丁·迪马内和计算机科学家埃里克·迪马内这一父子团队,因为克努特使用了他们的“算法拼图字体”。
所有的算法都会导致现实问题。人类所编写的算法—用来尝试解决越来越复杂的问题,但同时也会产生嵌入错误和偏差的代码。或许更令人担忧的,不是人类编写的算法,而是机器开始学习,并编写“自己”的算法。
克努特工作台上的笔记
机器学习
程序员仍然在训练机器,至关重要的是,为机器提供数据。然而,正如MIT媒体实验室研究附属机构的凯文·斯拉文所说:“我们现在正在编写我们无法阅读的算法。这成为了历史上的一个独特时刻,因为我们受到一系列物理学思想、行动和努力的影响,这些都源于人类但没有被人类理解。”
“现在,程序员都在使用克努特和其他人所做的成果,作为他们自己算法的组件,然后将它们与所需的其他东西结合起来。”谷歌的诺维格博士说。
“对于人工智能,我们做了同样的事情。只是组合在一起,这一部分会根据数据自动完成,而不需要程序员的工作。你想让人工智能基于数据来组合组件以获得良好的结果,但是你必须决定需要哪些组件。可能每个组件都来源于克努特所写的书中某一页或某一章节,因为这是完成某项任务的最佳方式。”
幸运的是,克努特一直在坚持不懈地钻研算法。他认为完成《计算机程序设计艺术》还需要25年,尽管自1980年以来,这个时间框架就没再变化过。
“我擔心算法突然变得太重要了,”他补充说,“最初计算机科学家担心没有人听我们说话。现在我担心的是,听的人太多了。”