不读书
是成为不了大佬的
不知道差友们听没听过「用0 和1 重写的圣经」。
比尔·盖茨读完这本书之后都认为,读完的人应该给他递简历;李开复则说,书里的题目做对大部分就不错了;
更多的人则一致同意这本书是垫桌子的好苗子......
新款显示器增高支架现已到货
说了这么多,但是先别急去买书!在那之前,我们先看看这部算法巨著的难度......
嗯。。。好吧。即使以「地狱级」难度而著称,这部巨著也只能算是写这本书的这位大佬人生中比较突出的一项成果。(大佬受到过总统接见,拿奖拿到手软…)
要知道,算法(Algorithm)这个词就是这位大佬使用五个维度重新定义的。(算法的概念就是人家提的,出本书怎么了)
而写这部书中间的插曲更是厉害的不得了:大佬写到一半时觉得出版社的印刷效果太差,扭头设计了一套新的排版系统和字体方案;这套排版系统至今依旧是撰写学术文章的首选。
好吧,说到这儿可能已经有个别差友猜到了,差评君今天想和大家聊聊的就是那个被称为「 算法上帝」的男人:
高德纳(Donald Ervin Knuth)
算法分析之父
高德纳生于1938 年1 月10 日,在他1977 年访华前夕,清华大学教授储枫为其取了一个中文名「 高德纳」,这三个汉字也被写在了他斯坦福大学的个人主页中。(所以坊间一些诸如高纳德、唐纳德的叫法是错误的…)
高德纳对自己的中文名所作的解释
能被视为「 重写圣经」的男人自然不简单,高德纳搞大新闻的经历可以一路追溯回八年级:当地一家糖果厂举办了一场比赛,规则是使用其产品「 Ziegler's Giant Bar 」中出现的英文字母,重新组合成新的单词。
当时这场比赛的裁判预先准备了一张单子,搜集了2500 个可能出现的组合。
而高德纳却以4500 个单词组合轻松赢得了冠军,比裁判搜集到的词还多出了2000 个!
这场比赛也让高德纳为他的学校赢得了一台电视机,以及每位同学一块的Ziegler 巧克力棒;也让世人第一次窥见了算法分析之父的智商。
但你以为大佬都是天生的吗?曾经数学一度是高德纳的短板,老师都担心他能否顺利毕业。而高德纳则是投入了大量的业余时间恶补数学,这才为他之后研究算法打下了坚实基础。
此后高德纳一路高歌猛进,以平均分97.5 的创纪录高分从高中毕业,进入大学学习。
这个世界失去了一位音乐家
高德纳的父亲多才多艺,周日在教堂演奏风琴,因此高德纳在音乐方面也有着不错的造诣。青年高德纳还一度为成为优秀的音乐家而努力,创作了不少作品。
报考大学时高德纳一度踌躇于选择深造音乐还是物理;经过一番抉择,高德纳最终进入了俄亥俄州的凯斯理工学院学习物理。
正是在此期间,高德纳接触到了当时最先进的IBM 650 型计算机;在研究了说明手册中的程序之后,高德纳坚信自己能写出比之更好程序。
IBM 650
算法之父自然不会食言;之后,高德纳除了用IBM 650 写出了一些小游戏和数学程序之外,还为校篮球队写了一个程序:
通过分析球员的得分、助攻、抢断、篮板球、盖帽等数据,帮助教练挑选合适的成员;他的大学校队也因此获得了全美大学生篮球联赛的冠军。
之后高德纳由主修物理变为数学,由于在大学的表现太过突出,学校干脆在毕业时一并给了他学士和硕士学位,省下了两年学费!
从此,这个世界上少了一位音乐家、物理学家,多了一位算法分析之父。
拖稿,有理有据
大学毕业后,高德纳进入加州理工学院研究所攻读数学博士学位;期间,业内著名的爱迪生韦斯利(Addison-Wesley)出版社找到了高德纳,希望他写一本有关程序编译的书,他欣然接受。
(A-W 曾出版诸如《 费曼物理学讲义》、《 C++ 编程语言》、《 人月神话》等行业巨著)
然而数年过去了,高德纳一点动静都没有;不得已,出版社代表找上了门,才得知高德纳已经攒了大概3000 页的手写稿。然而,高德纳却说:
「 我才刚写了个序章啊」…
在与出版社协商之后,《 计算机程序设计艺术》(简称TAOCP)按照总共七卷的设想开始逐卷出版。
这套书后来被《美国科学家》誉为20 世纪最佳12 部学术专著之一,要知道这12 本里另外的书都是《 相对论》、《 量子力学理论》这类的巨著…
在TAOCP 出版了三卷(1973 年)之后,高德纳就已经拿到了有计算机界诺贝尔奖之称的ACM 图灵奖(1974 年);此时的高德纳才刚满36 岁,而他也成为了最年轻的图灵奖得主!
36 岁乍一看不算大,但一年只有一人的图灵奖可不是大白菜。以往按照成就等身的原则,获奖者怎么也得是50 岁以上的行业泰斗。有成就者大有人在,为什么就给了只有36 岁,连书都没写完的高德纳?
没办法,人家太屌了:整卷还没出完就卖了100 多万套,俨然被计算机界视为「神作」。
TAOCP 的中译本(截至到4A 卷)可以在国内买到
造车,顺便重新发明轮子
就在高德纳声望达到顶点之时,他却宣布歇笔10 年,这期间众说纷纭:有说他才不配位见好就收的;也有说他写不出比肩第三卷水准的新书干脆封笔的…
十年之后,高德纳憋出了一个大炸弹:TeX 排版系统;也顺便终结了各种流言。
高德纳是一个追求完美的人,从他写第四章之前把前三章从头到尾重新修订了一遍就可以看出来。
然而当年的照相排版(在他眼中)太过粗糙,影响了最终的印刷质量。
照相排版印刷的公式,排版耗时耗力,且效果不佳
完美的书怎么可以使用有瑕疵的印刷?所以高德纳干脆自己研究数字排版系统,最终的成果就是TeX。至于排版的效果,时间可以作证:直到现在,撰写学术论文的首选依旧是基于TeX 的前端封装。
没用LaTeX、MacTeX、MiKTeX 和各种TeX 写过论文的理科生是不完整的
这就好比是大佬本来想造车,结果发现别人的轮子都不好使,就重新发明了一遍轮子。
这还没完,高纳德研究程序的时候顺便研究出来了一种新的编程思想(文学编程思想)、新的编程语言(WEB/CWEB)和新的字体方案(METAFONT 字体)。
差评君琢磨了一下大佬当时的心理活动:很简单嘛,我写程序,得有思想啊;有了思想干脆变成语言吧;这个语言不错,程序就拿这个写吧;排版软件写好了,没有字体不能打字啊……
追求完美
高德纳对软件版本号的选取很有意思,不似平常所见的0.1 或者v001,而是从1 开始,到达3 后转而增加小数点后的位数,使之逐渐接近于圆周率的π,代表这是一个完美的版本。(目前TeX 的版本号是3.14159265)
高德纳还给TeX 设立了独特的捉虫机制:发现第一个软件错误的给2.56 美元,第二个5.12 美元,第三个10.24 美元… 以此类推。敢用这种倍数奖金的方案进行奖励,足以见得高德纳对代码的自信。(虽然大部分人拿到了有大佬签名的支票后都直接珍藏了,根本不舍得兑…)
高德纳自己设计的奖励支票
针对TAOCP,高德纳同样设立了「 每发现一处错误,奖励2.56 美元」的捉虫机制。
为什么是2.56 美元?因为「 256 美分刚好是十六进制的1 美元」,这是程序员的数字浪漫~
2008 年,在TAOCP 第三卷出版时隔30 多年之后,TAOCP 的第四卷上半卷出版。
高德纳如今已将精力完全投入到撰写TAOCP 中,如果一切顺利,第五卷将会于2025 年出版;按照他的预计,写完第五卷之后,他会再重新将前五卷修订一遍;若有余力才会继续撰写TAOCP 的第六卷与第七卷。
TAOCP 从1968 年出版至今,已经走过了51 年;而它的作者高德纳如今也已81 岁高龄了,而我们都期待在未来的某一日,能看到TAOCP 第七卷出版的消息。
还记得开头比尔·盖茨说过的那句话吗,其实它的后面还有一句:
It took incredible discipline, and several months, for me to read it. I studied 20 pages, put it away for a week, and came back for another 20 pages. If somebody is so brash that they think they know everything, Knuth will help them understand that the world is deep and complicated.
“ 我花了几个月的时间,靠着极高的自制力看了这本书;我每研读20 页需要花一周时间来消化。如果有谁牛得不得了,自认为秒天秒地;那高德纳就会帮他们重新认识这个世界的深奥与复杂。”
“ 大佬眼中如果工具用着不趁手,那一定是工具太烂了”