0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高德纳:计算机科学先驱的另一面

算法与数据结构 来源:机器之心 2020-06-03 17:46 次阅读

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

高德纳老爷子一生都在用计算机程序讲述计算机程序的故事。图源: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 页的故事。他想要完成这个人生故事,但当然他最后完不成。斯特恩一直在写特里斯特拉姆·项狄的故事,直到他再也写不动了。 我想要以我知道的最好的方式继续写优质内容,介绍那些我有一些原创性看法的事情。我会尽可能地去做,而不会说我要在某个截止日期前完成些什么。我一直都非常幸运,正好赶上了时代的浪潮,出生在了我可以做特别适合我做的事情的时代。现在除了《计算机程序设计艺术》,我已经完成了我所有的人生目标。在现在这种情况下,我还将继续讲述我可以找到的各种故事,并将它们传递下去。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4599

    浏览量

    92622
  • 计算机科学
    +关注

    关注

    1

    文章

    142

    浏览量

    11357

原文标题:高德纳:讲故事停不下来的计算机科学先驱

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机的内存容量有什么作用

    计算机的内存容量,作为个核心概念,在计算机科学、信息技术以及日常使用中扮演着至关重要的角色。它不仅直接关系到计算机处理数据的能力,还影响着
    的头像 发表于 09-10 14:47 542次阅读

    晶体管计算机和电子管计算机有什么区别

    晶体管计算机和电子管计算机作为计算机发展史上的两个重要阶段,它们在多个方面存在显著的区别。以下是对这两类计算机在硬件、性能、应用以及技术发展等方面区别的详细阐述。
    的头像 发表于 08-23 15:28 1351次阅读

    借助NVIDIA超级计算机加速量子计算发展

    科学期刊《自然》(Nature)本月早些时候发表了项研究,通过使用 NVIDIA 驱动的超级计算机,验证了量子计算的商业化途径。
    的头像 发表于 07-25 09:55 485次阅读

    什么是工业计算机(IPC)?

    )根据预期用途提供、特定的处理器容量减少能源需求长期可用性易于维护或完全免维护防止划痕、振动或外部冲击使用工业计算机的优势与传统计算机不同,工业计算机专为恶劣的工作
    的头像 发表于 06-24 18:01 661次阅读
    什么是工业<b class='flag-5'>计算机</b>(IPC)?

    工业控制计算机的硬件组成有哪些

    工业控制计算机(Industrial Personal Computer,IPC)是种专门为工业环境设计的计算机系统,具有高可靠性、稳定性、
    的头像 发表于 06-16 11:33 1467次阅读

    工业计算机与普通计算机的区别

    在信息化和自动化日益发展的今天,计算机已经成为了我们日常生活和工作中不可或缺的工具。然而,在计算机领域中,工业计算机和普通计算机虽然都具备基本的计算
    的头像 发表于 06-06 16:45 1192次阅读

    诺和诺基金会将联手英伟达打造丹麦AI超级计算机

    诺和诺基金会携手英伟达,共同宣布在丹麦打造台领先的AI超级计算机。这台超级计算机将致力于推动医疗保健、生命科学以及绿色转型等领域的科研与
    的头像 发表于 03-21 13:43 558次阅读

    【量子计算机重构未来 | 阅读体验】+量子计算机的原理究竟是什么以及有哪些应用

    本书内容从目录可以看出本书主要是两部分内容,部分介绍量子计算机原理,部分介绍其应用。 其实个人也是抱着对这两个问题的兴趣来看的。 究竟什么是量子计算机相信很多读者都是抱着
    发表于 03-11 12:50

    【量子计算机重构未来 | 阅读体验】+ 初识量子计算机

    欣喜收到《量子计算机——重构未来》书,感谢电子发烧友论坛提供了个让我了解量子计算机的机会! 自己对电子计算机有点了解,但对量子
    发表于 03-05 17:37

    微机原理和计算机组成原理的区别

    微机原理和计算机组成原理是计算机科学中两个重要的主题,它们虽然有定的关联,但也存在些区别。本文将详细阐述微机原理和
    的头像 发表于 01-14 14:56 3177次阅读

    量子计算机的作用有哪些

    量子计算机种基于量子力学原理的新型计算机,它利用量子比特(qubit)进行信息处理,具有传统计算机无法比拟的计算能力和潜力。量子
    的头像 发表于 12-30 14:32 1818次阅读

    工业计算机与商用计算机的区别

    工业计算机与商用计算机的区别  工业计算机和商用计算机是两种应用于不同领域的计算机系统。虽然它们在技术方面存在
    的头像 发表于 12-27 10:50 589次阅读

    什么是后量子密码学?量子计算机vs经典计算机

    后量子密码学(Post-Quantum Cryptography,PQC)是在经典计算机上定义和执行算法,研究量子计算机和经典计算机都无法破解的新密码系统。后量子密码学的提出是为了抵抗量子计算
    的头像 发表于 12-19 11:42 1614次阅读

    PCB设计经验大全,注意事项通通告诉你

     PCB板可以分为单层板、双层板和多层板。各种电子元件都是被集成在PCB板上的,在基本的单层PCB上,零件都集中在一面,导线则都集中在另一面。这么来我们就需要在板子上打洞,这样接脚才能穿过板子到
    发表于 12-14 16:34 165次阅读

    pcb板材质种类介绍

     单面板(Single-Sided Boards) 在基本的PCB上,零件集中在其中一面,导线则集中在另一面上(有贴片元件时和导线为同一面,插件器件再另一面)。因为导线只出现在其中
    发表于 12-11 16:32 1106次阅读