“欣哥, 我什么时候可以看《计算机程序设计艺术》?” “你这辈子可能都不需要看了! 我在大学的时候并不知道《计算机程序设计艺术》(简称TAOCP)有多牛,他的作者有多牛,人家计划写七卷,写了三卷以后,图灵奖的评委们就“迫不及待”地把图灵奖版给他了。 我只是看到了比尔盖茨的一句话: “如果你完完整整读完了《计算机程序设计艺术》,请立刻给我发一份简历。” 我立刻就跑到图书馆去,翻出了那本泛黄的,破旧的《计算机程序设计艺术》,准备看完后给盖茨发简历。 这本书一开始就是数学准备,讲归纳法,幂,对数,排序和阶乘,几乎全是数学公式,我一看到数学就头大,特别是觉得这些东西高中应该掌握了,于是果断跳过。 然后的章节就把我镇住了,这是什么算法书啊!一开头居然自定义一个了虚拟的计算机,附带了一套自定义的汇编语言,然后书中的算法都用自己的汇编语言来写, 截个图大家感受下: 用汇编写算法,这不是自虐吗?为啥不用C语言?C语言也很贴近硬件啊! 哦,这本书出版的时候(1968年),C语言还没诞生(1972年)呢! Kunth 老爷子选择自创汇编,除了迫不得已,还有可能是:语言会随着时代潮起潮落衰落,而自己定义的虚拟机和汇编将会永恒。 我释然了,放弃了, 决定不再给比尔盖茨发信了。 我很清楚自己有几斤几两,这本充满着数学和汇编的书并不是为我等凡夫俗子缩写,我还是老老实实地去看我的数据结构和算法的教科书把。 Knuth说过:“要是看不懂 TAOCP,就别当程序员。” 显然Knuth是错的, 我还是成了一个程序员。 工作以后,我还买了一本,放到书架上来装点门面,显得自己非常高深的样子。 有一次被同学看到了,调侃似地问我:“你真的把这本书看完了?给比尔盖茨发简历没有?” 我无言以对,默默地把它从书架上抽出来,放到了箱子的最底部,然后换上了一本《算法导论》 。 后来这个“可恶”的同学又来了,惊讶问我:“你把《算法导论》看完了?厉害啊!” 于是我默默地把《算法导论》 也抽了出来,换上了一本《算法》。没错,这就是我一直推荐的一本算法书,适合我等凡夫俗子阅读。 如果你不是做算法分析的,我不建议你去碰《计算机程序设计艺术》这个圣经了。有啃这本书的时间,我觉得还不如自己去折腾个操作系统/数据库/框架出来,要有意思得多。 (完) |
|