图灵访谈之八:专访Donald E. Knuth(高德纳)

计算机科学泰斗Donald E. Knuth(高德纳)归隐已近20载,不问世事,潜心修订并继续创作煌煌巨著《计算机程序设计艺术》(The Art of Computer Programming)多卷本。

图灵社区藉卷4A影印版出版之机,有幸邀得大师接受关于此书的访谈,并在多位社区成员留言提问的帮助下,完成了这次珍贵的访谈。

英文版链接

高博 何逸勤 翻译

图灵社区:很多中国程序员都将您视为计算机科学领域的神祗。而这样的情况,又恰恰出现在盛行无神论的中国,很有意思。我们已经清楚您写作《计算机程序设计艺术》(以下简称TAOCP)的初衷和经历,也知道您关于“信仰与科学的关系”的系列讲座曾大受欢迎,因此对您的写作和信仰之间的关系很感兴趣。能否谈一下,信仰和上帝在TAOCP的创作过程中,给您带来的是哪些帮助呢?

高德纳:计算机科学是既壮观又幽美的,我尝试尽自己所能,以最恰当的方式来解释我所了解的某些片断。很显然,我自己并没有任何超自然能力,但的确很喜欢讲述那些似乎静静地等待着人们去讲出来的故事。写书跟讲故事十分类似。

此外,虽然计算机科学非常美妙,但它也不可能包办一切!我相信,总有一些神秘的东西是超越人类的理解而存在的。

信仰是很私人的东西,它涵盖了一些永远无法证明的概念。因此,本人在信仰问题上的看法,我并不指望每个人都能同意。我认为,上帝希望我能创造某些成果,而这些东西能够启发其他人去创造其他成果。这就是我的宗教生活和科学生活之间的主要关系。

图灵社区:对您耗费几十年的时间创作的TAOCP,我们代表所有已经和即将从中获益的中国读者,向您致以诚挚的感谢。到现在为止,这部著作已经创作了半个世纪。这样的成书过程,让我们想起歌德的《浮士德》。令人惊讶的是,目前这部作品仍可沿用您最初确立的内容架构。请问这种基础是如何构筑的?在目前的创作过程中,您用了哪些方法来保证自己的进度呢?

高德纳:是啊,我确实是几乎不间断地写计算机程序超过50年了,平均每周完成多于一个程序。譬如,我刚刚查了电脑,统计出我在今年的持续学习和探索中,到目前为止已经写了74个程序。当然,其中某些程序是短小和简单的,但另外那些可都够让我忙上一阵子的。这样的编程过程,很自然地启发了TAOCP的内容架构,我们能依此建立整个计算机科学的知识体系。1967年,我跟Peter Naur第一次见面时,我们发现各自都独立地对这一领域提出了完全一致的基本框架。

都过了50年啦,照理说我早该写完TAOCP才对。不过,我还有很多累积下来的材料,需要20年甚至更多的时间,才可以转化成恰当的文字。因此,当看到你问我怎样保持进度时,我都直想发笑。

要说我还是能有那么一点点进度的话,那最主要归功于采用了“批处理”而非“换入换出”的机制:在一个时间段内,我通常只全神贯注地做一件事情。每年我会暂停手上的工作两次,每次用两三周的时间阅读邮寄过来的期刊。我每周都会收到8份左右的期刊,我的秘书会把它们放到盒子里。浏览完它们并了解到技术动向后,我会在自己的文件中加入备注,提醒自己在将来专注于另外的主题时,应该阅读哪些内容。

目前,我正在聚精会神在“可满足性求解器”(SAT solvers)这个令人着迷的领域,最近编写的20个程序都是面向这个主题的相关探索的。藉由自己去钻研资料的手段,我可以更好地将核心思想传达给非专家的读者,并将这些思想跟其他应用紧密结合,就仿佛我的一生都在专职研究可满足性的求解问题那么自然。幸运的是,我现在跟顶级的专家们保持着联系,他们自告奋勇帮我检查写作中的错误。

图灵社区:我们听说,您目前还是先写出手稿,再在计算机中编辑。然而,您的TeX实际上颠覆了整个出版行业。那么,请问您不全用计算机写作的原因是什么?Dr. Dobbs在评价TAOCP 4A的时候,提到“正如前几卷TAOCP那样,最新的这一卷也是浓缩了一个主题的精华内容。基于其高密度的内容和描述,本书是近年来屈指可数的必须在印刷版格式下阅读的计算机图书之一。书中为数庞大的数学注释,将使所有电子格式束手无策,PDF版就像一批处处写满文字的JPEG,难以卒读。”您是否有考虑过,未来的电子写作和阅读应该是怎样的呢?

高德纳:我书写的速度跟我思维的速度是匹配的,这么一来,就完全不存在任何“瓶颈”。而我打字的速度就比我思考的速度更快,这样当我试图用键盘创作重要内容时,就会产生同步问题。(事实上,我也是先用笔写下你这10个问题的答案的。此刻,我正在Mac上输入草稿,并在过程中尽可能修润行文。)

速度通常不会是最重要的标准。科学一般都难以迅速解释或迅速领会。我知道我的书是不容易读,不过要知道的是,如果不是我精雕细琢地写的话,它们会比现在难读一百倍。

图灵社区:《编程人生》中,您讨论到黑盒的问题时,评论道:“程序里有黑盒是不坏,但通常来说,如果可以看到盒子里的东西,弄清楚黑盒内部的机理,那就可以改进它。”我们觉得这里似乎蕴含着黑客的精神。如果是的话,您是否可以具体描述一下您心目中的黑客精神?

高德纳:关于黑客精神,Steven Ley那本了不起的《黑客》中描述得最好。那本书会同时地从众多层面来审视一个问题,并寻找新的形式来组合基本的概念。

图灵社区:您从来都以极客(geek)自诩,并曾在访谈中提到,论文集第8卷《娱乐和游戏论文集》(Selected Papers on Fun and Games)中有一章是“极客艺术品”(geek art)。大部分中国读者都还无缘读到这本书,是否可以简单介绍一下,“极客艺术品”所包含的内容呢?

高德纳:你们应该翻译那本书啊,我说真的!

简单说,能称得上“极客艺术品”的应该是这样的艺术作品:它不仅仅能因其美丽的颜色、质感和形式而打动我,同时也因能其对技术的呈现方式而愉悦我的另一半大脑。

例如,我最珍爱的极客艺术藏品中的一件,正是Bob Sedgewick(即Robert Sedgewick,《算法》的作者——译注)送给我的,那是1975年,他完成关于快速排序的博士论文的时候。那是一件瑰丽的双层编织的纺织品,图案正是他在研究中发现的其中一个数学模型。这个作品是他亲自在提花织机上手工织造的。类似的作品还有我妻子做给我的一张巧夺天工的被子,上面的图案是以爱因斯坦质数的迷人模型为基础的。去年,我自己也利用零碎时间做了一些作品,那是用色彩斑斓的线、樱桃木和黄铜钉交错而成的“凯尔特骑士之旅”。

我的很多朋友都已经培养出对极客艺术品的品味。我听说,Nathan Myrvold已经搜罗了几百件这样的作品,其中大部分都是为他的居室专门制作的。

图灵社区:您的TeX系统是开源的,您本人也被认为是开源的重要实践者。在曾经的访谈中,您说“过去的几十年间,开放源代码的成功可能是计算机领域中唯一没使我觉得惊讶的事情。”那么,在后面的几十年,您预想开源运动将会有怎样的发展呢?

高德纳:请别让我预测未来,也不要相信别人在这个问题上的说三道四。

回到开源,怎么说呢,有一件事是我希望发生(并且很奇怪为什么尚未发生的)。换言之,我希望人们可以找到一种比较简单的途径,让用户能够定制他们的开源发行版。这么一来,所有人都可以使得系统根据他们自己的计算机进行优化的调适,因为用户是通过编译自己拿到的源代码,而不是仅仅安装(已经编译好的、未根据系统做好编译优化的——译注)二进制包。开源系统有一种尚未开发的潜力,会使它大大好于任何闭源的系统,因为专有的、事先打包的二进制成品必须在可用硬件限制的条件下照顾到最差情况。举例来说,emacs对于我来说运行得又好又快,但我怀疑我如果能毫无畏惧地在自己的机器上编译它的话,它运行起来会快得多。我没空去学习Ubuntu这个发行版的所有底层复杂细节。(我还真的重新编译过Linux内核——但只有在向导手把手的指引下才得以完成。)

图灵社区:虽然,TAOCP代表着您的主要成就,连您目前的头衔都是“计算机程序设计艺术荣休教授”;但也有很多人认为,您花十年时间开发的TeX,对世界的影响更大。您对此有何看法?是否可以总结一下,算法研究和实际编程之间的联系和各自作用呢?

高德纳:我对于把一项有益的活动排在另一项之前这种事,不十分感冒。例如,生物学家不应该把所有时间都花在攻克癌症和其他重症的疗法上。如果他们中的一些人仅在较轻微的问题上取得了重大进展——比如,消灭了头皮屑——他们也许实际上会带给更多人更持久的快乐。

长远来看,TeX使得文学编程成为了可能这件事,也许最终会给更多人的生活带来积极的影响,这一点强过我所做的任何其他工作,因为文学化的程序给它的用户带来的改进是巨大的。

但我们还是别拿苹果去和橘子比较了。我认为生活中的每一个方面都是值得改进的,而我也很高兴能在自己生活的场所和时代中以多种不同的方式做出贡献。

图灵社区:《具体数学:计算机科学基础(第2版)》(Concrete Mathematics: A Foundation for Computer Science,2E)的中文版同样会由图灵出版。是否可以谈谈它的写作初衷,以及它跟TAOCP的关系?

高德纳:《具体数学》是一份“纲领”,它的内容是我对于数学诸多方面应该如何教与学的思考。熟练掌握代数公式的基础技能,对我来说始终都是关键所在。这些内容在TAOCP里都有讨论,但只能是蜻蜓点水;在斯坦福大学的课程中,我得以深入更多的细节,而那些课程都被囊括在这本书中了。

图灵社区:“高德纳”似乎是您仅有的一个外文姓名,这个名字让中国读者很有亲切感。我们只知道这个名字是储枫教授(香港城市大学计算机科学系主任,图灵奖得主姚期智的夫人——译注)在您1977年访华前夕为您取的。给我们谈谈这个名字的背后的故事吧?

高德纳:储枫告诉我,之所以选择“高”作为我的中国姓,是因为我个子高,还因为辅音G和K读起来差不多。“德纳”两个字,显而易见,是“Donald”不错的谐音,并且有着体面的意义。她还给我的爱人Jill起了“高精兰”这个名字。

我的两个孩子John和Jen也和我们一起来到了中国,他们当时分别是12和11岁——他们和中国孩子们在城市公园里玩了一些不需要语言交流的游戏。储枫给他们也分别起了“高小强”和“高小珍”的名字(见卷2索引)。

图灵社区:我们已经翻译了关于您的管风琴的一篇介绍,也读到您在访谈中曾经把写作比喻成演奏管风琴。可以谈谈音乐对您生活和研究的影响吗?

高德纳:音乐是我的主要副业,也是《娱乐和游戏论文集》一书其中四个章节的主要内容。闲下来的时间,在我在TAOCP上连续几天工作并需要休息一下时,最近我开始(尽管只是试验性地)着手谱写新的管风琴乐曲,也算是终于兑现了一些我在上世纪60年代就拟订了的计划。尽管我知道别人来做这些事的话,可以比我高明得多,但内心却有一个声音在催我歌唱!

图灵社区:最后,送上所有中国读者的最诚挚问候,祝您保持健康,如期完成TAOCP的下一卷!

高德纳:再次感谢你们富有启发的问题。


更多精彩,加入图灵访谈微信!