作者 | 年素清
责编 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
高德纳(Donald Ervin Knuth)被誉为现代计算机科学的鼻祖,毕生致力于编译程序、属性文法和运算法则等领域的前沿研究,共出版专著17部,发表论文150余篇,写出TeX和METAFONT两个数字排版系统,撰写出IT界经典巨著《计算机程序设计的艺术》,提出计算机科学技术最基本的两个概念:“算法”(Algorithm)和“数据结构”(Data Structure)。
他还是个音乐天才,自己谱写乐曲,用信息论分析音乐复杂度。现年82岁的高德纳仍笔耕不断,忙着完成《计算机程序设计的艺术》第4卷的B部分。下面我们来一起看看这位程序员大佬的故事吧:
维基百科:高德纳
高德纳于1938年1月10日在美国威斯康星州密尔沃基市出生。他从小表现出与众不同的才能:高德纳在8岁的时候,为了帮自己所在的班在一个拼写单词活动夺得冠军,跟老师请假装病在家两周,利用一部大字典,得出了4500个单词,比裁判所准备的还要多出2000个,这使得小高德纳一下子成了学校的名人。高中时,高德纳发明了一种算法,对任意画出的2条相交直线可通过这种算法立即给出相应的方程。此外,中学时期的高德纳还写过一篇名为《普茨比度量衡体系》的科学幻想小说,并在美国著名的《疯狂》杂志上发表,大受欢迎,杂志被多次重印。这部小说不仅令他挣得平生第一笔稿费25美元,更令他获得了西屋“科学天才” 奖的提名。1956年,高德纳以打破学校记录的高分毕业,进入俄亥俄州克利夫兰的开思理工学院攻读物理。大一暑假,高德纳留校打工。碰巧他工作室的隔壁是学校机房,一台新到的、体积庞大的IBM650引起了高德纳极大的好奇。他接连好几天彻夜不眠地呆在机房,熬夜读IBM 650的说明手册,甚至自学基本的程序设计。那时高等计算机语言还没问世,编写程序只能用第二代或是汇编语言,编程是一件既耗时又费力的事。但操作过几次IBM 650后,高德纳声称自己能编写出比说明手册上介绍的更好程序。高德纳很快便写出了把数字转化为素数、井字游戏等可执行数学函数的程序。他还为校篮球队开发出了一个应用程序,可根据球员在每场比赛中的得分、助攻、抢断、篮板球、盖帽等多项统计数字对球员进行综合评估,球队教练根据评估结果来挑选球员,这使得开思理工学院在1960年赢得了联赛冠军。因为对计算机编程一发不可收拾的着迷,高德纳在大二时决定改学数学。1960年,高德纳从开思学院毕业,在全体教员参加的选举上,因表现出色被授予学士学位,还同时被破例授予硕士学位。随之他进入加州理工学院研究生院,1963年获得博士学位,留校工作。高德纳在读研时,开始为不同的计算机编写编译器,当时很多软件公司花费高价寻求这样的程序,据说高德纳的一个编译器可卖出5000美元的高价。在博士毕业的前一年,一著名出版社约小有名气的高德纳写一本编译器和程序设计方面的书。出版社在1962年约稿,可直到1966年高德纳还未收到任何反馈,编辑忍不住催促高德纳进展。高德纳说才刚刚完成3000多页,但仍然没有进入主题。编辑在震惊之余,决定出多卷本。这便是《计算机程序设计艺术》系列丛书的由来。这一套书是编程界的名书,第一卷的《基本算法》于1968年正式发行,主要讲述编程时要用到的基本数学知识和处理不同问题要用到的算法。但真正能读完读懂的人为数并不多,据说比尔•盖茨费时几个月才能读完这一卷。后来第二卷、第三卷相继出版,销量突破百万不止,风靡全球。美国ACM在1974年将图灵奖授予给他。彼时的高德纳不过36岁,是最年轻的图灵奖获得者,这个记录一直保持至今。
尽管前三卷书取得了相当大的成功,可是高德纳随后却暂停了写作第四卷的计划,理由是现有的计算机排版软件效果太差,破坏了这套书的美。接下来高德纳花费整整十年的时间专研排版问题。他发现当时的计算机虽能替代人工排出普通的报纸杂志样式,但对处理复杂的数理公式却无能为力。于是高德纳试图为计算机写一个小程序来解决这个问题,这个程序被命名为“TeX”。Tex很快被采用,如今仍是全球学术排版的不二之选。除此之外,高德纳还字体设计系统METAFONT和文学化编程,前者对整个西文印刷行业带来了革命性变革,后者则充分展示程序设计的艺术性:清晰、美感、诗意。
拿奖杯装水果
高德纳一生所获得的荣誉不计其数,ACM除了授予他图灵奖外,还在1971年授予他以COBOL的发明人、女计算机科学家霍普(Grace Murray Hopper)命名的奖项,这个奖项是专门奖励30岁以下的优秀青年计算机科学家的。因研发Tex和METAFONT等成就,当时的美国总统在1979年亲自为高德纳颁发了美国国家科学奖奖章。他还获得了美国数学和IEEE颁发的共五个奖项。面对这么多荣誉,高德纳却始终保持一种十分超然的态度,据说当年的碗状图灵奖杯如今已被他当做了盛放水果的果盘。高德纳的父亲是一个多才多艺的人,星期天在教堂演奏风琴,受父亲影响,高德纳从小便爱上了音乐,这个爱好一直伴随他一生。他甚至一度打算报考音乐专业。虽然高德纳主业是编程,但音乐是他的“主要副业”, 他在著作《娱乐和游戏论文集》一书里,用四个章节来阐述了他和音乐的关系。高德纳将写作喻为演奏管风琴,他的书房里的摆放有一台特制的84管管风琴,当他连续工作几天需要放松一下时,便会着手谱写管风琴乐曲。高德纳称自己在上世纪60年代就拟订了作曲的计划,虽然别人来做这些事可以比他高明得多,但“内心却有一个声音在催我歌唱!”细心的读者可能会发现“高德纳”并非其英文原名的音译,确实如此,这个名字是高德纳在1977年访华时,香港城大计算机科学系主任、华裔图灵奖得主姚期智夫人姚储枫教授所起。以“高”为姓,是因为他体型高大,而且辅音G和K读音接近;“德纳”则与“Donald”相谐,在中文里含体面高贵之意。姚储枫还给高德纳的爱人取了“高精兰”的中文名,为他们的孩子John和Jen分别起名“高小强”、“高小珍”。他们全家和中国孩子在公园玩了无需语言交流的游戏。现年82岁的高德纳仍笔耕不断,忙着完成第4卷的B部分,他预计这本书将至少包含A到F部分。看到这,大家给大佬点个赞吧!
参考:
计算机算法鼻祖——高德纳
唐纳德·克努特百科
计算机鼻祖-Donald Knuth(高德纳) 的传奇