棋盘,Bug和支票

Posted by Xiaozhe Yao on April 7, 2021

最近心血来潮想有空就写点东西。我打算仿照Ukim同学的 Heroes in my heart 写一些我心中的,主要是计算机领域的天才和英雄。


棋盘 Bug 和 支票

可能很多同学都听说过棋盘和小麦的故事。大致是说有一个国王遇到了一个数学家,就打算赏赐他一些东西。数学家说他只需要一些小麦,只需要第一天给他1颗,第二天给他2颗,第三天4颗。就这样依次,每天乘以2,达到一个棋盘(即64天)即可。这个国王一开始以为没有什么,结果给着给着发现,到了二十几天的时候就给不下去了。这个故事常常被用来告诉大家指数增长的速度是很快的。

但现实中真的有人愿意以指数的速度付给大家钱。高德纳老爷子(我也不知道为什么我要给他加上老爷子的title)声称:只要找到他软件或书里bug的人,第一个人“重赏”256美分,之后每个人得到的赏金都在前一个人的基础上乘以2。尽管如此重赏,实际上高老爷子并没有付出多少钱。一方面这种赏金激励了他少写bug,另一方面大家都认为这张支票是远比金额重要的东西,从而大部分都把支票装裱起来挂在墙上,而不是去兑现。如果你去哪位老师家中或办公室中有这样的支票,那他很有可能是大佬中的大佬。

(如果我搞一个这样的赏金,怕是钱包一天就空了)

高德纳老爷子的贡献之一是文字排版。这听起来虽然有点奇怪,但确实如此:他为了给自己的书排版而专门发明了一套软件 TeX,并逐渐让这个软件成为了写论文,书籍的标配。这个软件的版本号也很有意思:它以圆周率的位数作为版本号,目前已经进化到了3.141592653版。不知道 Chrome 和学坏的 Firefox 会不会有一天学习这种方式,也许会遇到浮点数溢出的问题。

高德纳老爷子的另一大贡献是成为了计算机领域最大的(且我严重怀疑是唯一的)、会被催更的作者。他在读研时就开始写《计算机程序设计艺术》,打算写7卷。现在他已经83岁了,这本书也出到了第四卷,的……B分册。这本书1962年时出版社就约了稿,过去了4年之后,毫无动静。出版社按耐不住去问高老爷子,老爷子答:才写了3000多页,还没进入正题呢。

说起趣事来那就很多了。其中之一是他的名字,他英文是Donald Knuth,完全没有“高”的发音。“高”这个姓是姚期智夫人给他取的,因为他长得很高,将近两米。