大家好,我是石头哥。
今天,给大家介绍一位大佬 —— 高德纳(Donald Ervin Knuth),美国著名计算机科学家,是现代计算机科学的鼻祖。
也许你已经听说过这个名字,如果没有,我再找几个关于他的标签:图灵奖得主,《计算机程序设计艺术》(The Art of Computer ,TAOCP),TeX 排版系统,KMP 算法……等等。
《计算机程序设计艺术卷1》
上周末,我花了不少时间阅读了相关材料,觉得这位大佬真的是非常牛逼,非常有意思的。比如,他为了给读者奖励,居然专门开了家“银行”,石头给大家找了个赚美元的路子,抓住机会
。
缘起
高德纳中文名是姚期智老婆给取得,以“高”为姓,据Knuth自述是因其个头高大,且辅音G和K读音接近,“德纳”则与“Donald”相谐。然后高德纳老婆的中文名是高精兰(Nancy Jill Carter)。
高德纳于1938年出生于美国,在他读大学期间,偶然接触了计算机,并从此对计算机产生了极大的好奇与兴趣。
他在攻读数学博士学位期间,利用闲暇时间接了点私活,写编译器。在编译器和程序设计这个方面有了名气,就有出版社找他约稿写书。
这就是《计算机程序设计艺术》这套书的起点。
不过,约稿后经过4年,大佬已经写了大几千页,但没交稿,因为撑不起整本书,没办法只能分多卷出版。
1968 年,终于推出了这套《计算机程序设计艺术》的第一卷 —— 《基本算法》。据说比尔盖茨曾花几个月的时间去读这本书,然后还帮忙打广告说,如果想成为一个优秀的程序员,那就应该去读读这本书吧。
计算机程序设计艺术
这套书籍确实很难,不太适合初学者,我也读过这本书,说实话,真的很难啃,感兴趣的同学可在公众号后台回复“高德纳”获取书籍的电子版。
这套书籍计划出七卷,第二卷《半数字化算法》于1969年出版,第三卷《排序与搜索》于1973年出版。
图灵奖
这套书才写三卷,就非常牛 X 了,牛X 的什么程度?牛X 到 1974年的图灵奖就颁给36岁的他了。当然能够获奖不仅仅是因为这书,但这书确实占了较大比例。
连图灵奖推荐语都说了:
For his major contributions to the analysis of algorithms and the design of programming languages, and in particular for his contributions to the "art of computer programming" through his well-known books in a continuous series by this title.
不过我很好奇,图灵奖早期奖金只有1000美元吗(大佬简历里面有写)?(最新的图灵奖奖金由Google赞助是100W美元)。
看大佬的简历,能知道,他获得了太多奖项(简历中2页全是,图灵奖只是其中两页中的一行记录),发表了很多论文。
停笔
在这之后的相当长一段时间内,大佬“封笔”了,据说原因是他写书时,排版的工具太差了,书里面又是各种公式推导之类的,写起来相当麻烦。
因此,大佬就自己设计实现了一套排版系统 —— Tex,大部分写学术论文的同学应该都有接触过,我的硕士论文也用了这套排版系统,真的很省心,就连最后答辩的 PPT 也可以用,强烈推荐强烈推荐强烈推荐给在校生。
有意思的是,TeX 软件的版本号也不是常规的V1.0、V2.0之类的,而是以圆周率 π 作为版本号。
比如某个版本是3.1415
,下个版本就是3.14159
。包括他研发的一套 METAFONT 字体 系统的版本号是用常数 e 来做版本号的。哈哈,大佬果然有意思。(更有意思的在后面)。
有了排版系统之后,写书的任务就继续了,因为大佬力求完美,包括写书也是。因此在92年左右,他就宣布退休全职写书了。因为继续完成这本书将至少花费 20 年的时间。
I retired early because I realized that I would need at least 20 years of full-time work to complete The Art of Computer Programming (TAOCP), which I have always viewed as the most important project of my life.
另外,到1991年为止,他一共带了28个博士生,因为28这个数字很不错,因此他宣布不再带博士生了。哈哈。
I'm proud of the 28 students for whom I was a dissertation advisor (see vita); and I know that 28 is a perfect number. So I won't be advising any more students. But I do say that if somebody solves one of the open problems stated in one of my Computer Musings, within about two or three weeks of the time I stated it, I'll sign their thesis. (After two or three weeks, I'll be working on something else and won't have time to read their work.)
上面也提到,如果你有机会在2-3周内解答他提出的一些问题,他也愿意帮你在论文上签字。
书籍进度
目前,这套丛书,已经出版到第4券的A部分,(第4券又将分为ABC)。
在写第4券的时候,大佬又将书分成多个小册子,大概每年发两册(每册128页左右)。这样的好处是,能够提前公布出来供大家测试反馈。对出书也会分 alpha-test
,beta-test
)。
目前正在进行出版的是4B的两册:
Volume 4 Fascicle 5, Mathematical Preliminaries Redux; Introduction to Backtracking; Dancing Links (2019), xiii 383pp. ISBN 978-0-13-467179-6
Volume 4 Fascicle 6, Satisfiability (2015), xiii 310pp. ISBN 978-0-13-439760-3
正在进行 alpha 测试的是这两小册,测试版本的书籍可以直接在其个人主页下载的,他还在主页上呼吁大家可以帮忙 review 下其中的内容是否正确。
- Pre-Fascicle 8a (Hamiltonian Paths and Cycles);
- Pre-Fascicle 9b (A Potpourri of Puzzles).
开银行奖励读者
另外,大佬还有意思的地方是,他居然开了一家银行 —— The Bank of San Serriffe。
虚拟银行支票
不要误会,这是家虚拟银行,是用来奖励人们在他的作品中找出“bug”。
高德纳出版书籍
比如你找到他的书籍中的错误,就可以收到奖励2.56美元(16进制的1美元);提不错的建议可获得 0.32美元的奖励。细心的读者可以通过这种方式把购书的费用赚回来。
The first finder of any error in my books receives 0x1.00 (2.56), deposited to their account at the Bank of San Serriffe; significant suggestions are also worth 0x0.20 (0.32) each. If you are a really careful reader, you may be able to recoup more than the cost of the books this way.
或者如果在他的Tex系统中找到第一个 Bug 能获得2.56美元奖励,并按照指数增长(可怕),到目前327.68 美元封顶(见 欧阳顺湘:高德纳的奖励支票与 《数学之英文写作》作者的一错一美元)。
找到错误后被证实正确后,大佬最开始都是直接写支票给寄出,本来这套奖励体系一直运作良好,都跑了40年了。
不过随着互联网的成熟和发展,很多获得奖励支票的人可能就会到处炫耀,可能会泄露了一些隐私信息等,这带来了不少安全问题。因此大佬不得不关闭3个银行账号。
Certainly I do not believe that anybody who received one of my checks has been in any way a culprit. But all such recipients are entitled to bragging rights; therefore the numbers printed on those checks inevitably become known to random members of the public.)
奖励支票
为了解决这个问题,2006年,大佬就开发了这套“虚拟银行系统”,哈哈,其实就是一个列表记录了,谁谁剩下多少余额, 网页上展示的最少的是 0x0.10,其中 0x1 = USD2.56,如果想变现,可以联系大佬。
截止到 2021 年 1 月 21 日,该银行一共存储了845 位同学的账户。大佬也说了,这些账户仅仅是 2006 年以来的,1968 年到 2005 年之间的奖金也发了很多,这里就不记录了。值得说明的是,如果账户变现了,上面的账户金额不会减少,但也不能多次变现的。
其中最多奖励获得者,Udo Wermuth,累计获得奖励 0x9da.18,转化一下大概近 6500,4W 人民币呀,不错的收入。石头无聊大概计算了一下上面银行总共的负债总计 0x8502.34,也就是差不多 2.2W。
结合 shell 用这几个命令 cut,xargs,sed,bc
可以很快计算出来的(注意下进制转换),详细计算方法可以参考下之前写的这篇文章 —— 提升开发效率N倍的20 命令行神器!(附 demo)
另外,大佬早在1990年就宣布不再用电子邮箱进行日常工作和交流了,除非你是反馈他书籍的错误(大佬强调反馈错误也只能用纯文本,不能包含任何附件)。如果是其他目的的邮件沟通,会被他助理打印出来直接扔垃圾桶,或者用来打草稿的。
另外,如果想获得上述奖励,除了找出版书籍上的错误,或者找软件bug外,石头哥在大佬的主页上看到还有一个比较容易的方式。
大佬为了自己的作品更加完美,因此希望上面没有错误,哪怕引用材料提到的人名是否是全名(很多外文文献引用都习惯简写),然后人名拼写是否正宗(和母语写法一致)等。
Here are some people whose full names I have been unable to discover. Such people often tend to be from Europe or Australia; some of them may no longer be alive. Perhaps you will recognize one or more of these names. With luck you might even be able to reach somebody on this list easily by email. I will gladly deposit 0x1.00 (US2.56) to the account of the first person who sends me the full name of anybody listed here.
爱好
另外,从大佬的主页上能看出来,他还有一个爱好就是音乐。自己家中也有一台巨型管风琴,并且还会创作一些作品,其主页上甚至有不少演奏作品。
管风琴
另外,从他跟他老婆的一些“个人爱好”中也能看出去大佬的严谨态度。
比如和老婆在2003年度假期间,处于好奇收集了一系列的菱形路标,这些路标并不都是官方的。
菱形路标
每个路标都标注了拍摄的时间和地点,以及准确的经纬度。直到2012年1月为止,已经收集了 1150个不同的菱形路标。
更多有趣的内容可直接访问高德纳个人主页,上面也有他书籍的进度等等。
高德纳个人主页
最后愿老爷子身体健康,期待大佬后续的精彩作品,能不能读懂无所谓,收藏是必须的
,哈哈,当然也期待有朝一日能读懂他的作品。
本篇结束,希望大家有收获,我是石头哥,咱们下周三见!
本文内容主要参考来源:
- https://www-cs-faculty.stanford.edu/~knuth/
- http://blog.chinaunix.net/uid-24708340-id-3263608.html
- https://amturing.acm.org/award_winners/knuth_1013846.cfm
你好,我是程序猿石头(ID: tangleithu),目前就职于阿里云,清华学渣,前大疆后端 Leader。用不同的视角分享高质量文章,以每篇文章都让人有收获为目的,欢迎关注,交流和指导!