《计算机程序设计艺术》即《The Art of Computer Programming》是计算机领域里颠峰级的里程碑,加上国外人士对它的推崇,因此提起它的大名简直就象法律书籍中的宪法同样神圣。html
Donald.E.Knuth(唐 纳德.E.克努特,中文名高德纳)是算法和程序设计技术的先驱者,是计算机排版系统TEX和METAFONT的发明者,他因这些成就和大量创造性的影响深 远的著做(19部书和160篇论文)而誉满全球。做为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七 卷集。这一伟大工程在1962年他仍是加利福尼亚理工学院的研究生时就开始了。
Knuth教授得到了许多奖项和荣誉,包括美国计算机协会图灵奖(ACM Turing Award),美国前总统卡特授予的科学金奖(Medal of Science),美国数学学会斯蒂尔奖(AMS Steele Prize),以及1996年11月因为发明先进技术荣获的极受尊重的京都奖(KyotoPrize)。现与其妻Jill生活于斯坦福校园内。程序员
若是你认为你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》,若是你能读懂整套书的话,请给我发一份你的简历。--Bill Gates算法
引那位出名的王垠对TAOCP的评论:
原本早就想一想写一个对于Knuth的The Art of Computer Programming的见解。
关 于Knuth的 TAOCP,我想,大部分人声称看了他的书,或者买了他的书,不过是做为一种炫耀的资本或者摆设。我对门的同窗几年前就买了一套三本,全新的精装本,花了 200多块钱。但是呢,他历来就没看。我把它借过来,看了几页就放在那里没有看了。我哪有时间看他用那些一个字节6位的机器语言实现简单的链表!有一天一 个师弟走进来,看到那套书在我书架上,显示出一种敬畏感:“挖!师兄!你好牛啊!竟然看这么高深的书!” 我一愣。嗯,不错嘛,这套书放在书架上可让人对我另眼相看。这恐怕就是它对不少人的实际做用。还有人能够帮助神化这套书,同时也神化本身,好比他能够这 么说:“谁要是看完了Don Knuth的 The Art of Computer Programming 我就雇用他!” 这样能够显得比通常看过书的人还要高一等。听说Bill Gates就是这么作的。我怀疑他本身看完过没有。
我讨厌这套书的一个缘由就是 Knuth故意用一个叫 MIX 的处理器的机器语言来写这本书。虽然在新版的书里他设计了一种新的处理器 MMIX,可是换汤不换药。他觉得一部“永恒”的计算机编程书不该该使用高级语言,由于它们很容易过期。可是他错了,机器语言偏偏是最容易过期的东西,看 看如今有多少牌子的更新换代的处理器就知道。而世界上确实存在很是高级的语言从60年代到如今都没有过期。我预言,MMIX会在不久的未来被淘汰。很可笑 的是MMIX是在MIX上加了一个“M”,表明Millennium(千禧年)。关于它的专著也起名为 MMIXware---A RISC Computer for the Third Millennium。一千年甚至短短一百年,几十年之后,计算机仍是不是二进制的集成电路都说不清楚,何况这个处理器其实就是从别的处理器好比RISC II, Sparc之类的捡了一点东西,没有什么大的创新。他就把这个处理器的模拟程序印在纸上卖,曰:“一个优秀的程序要像一部好的小说同样容易读懂。一个优秀 的程序员会在未来拿到普利策奖。”
用机器语言写一点初级的计算机入门部分还能够,可是用来写整整一部书未免容易让读者只见树木不见森林了。看 TAOCP最容易出现的一种现象就是,“哇!原来这个程序能够这么写。” 可是你不知道为啥那么写。虽然能够知道一些底层的缘由,可是最根本的原理,读者始终不会明白。就像看清楚了一张图片上的每个像素,却认不出图片上实际上是 一个熟人。看清楚了棋盘上每个棋子能走的地方,却不能赢棋。Dijkstra 说计算科学不该该被叫作"computer science",就像外科手术不该该叫作"knife science"。但是这关Knuth什么事呢,他的书名叫作 The Art of...
我 曾经说找到Knuth书里的错误,获得几张支票,受到很大鼓舞。我真的受到鼓舞了吗?我真的从他的书里获得什么新的想法吗?抛开潜意识里想显示一下本身的 念头,我得出的结论是:没有。每个认为本身从这套书获得了什么的人都仔细想一下,到底你的知识,你的新想法是从哪里来的?
再说他的支票吧…… 不少人拿了Knuth的支票就做为一种能够炫耀的东西。之前我就看到一个Cambridge的教授主页上挂着一个Knuth支票的照片。Knuth的支票 真的能够做为炫耀的资本吗?告诉大家,我找到的错误都是typo而已,没想到他也给我支票。谁叫他打字不当心,Millennium都能打成 Millenium?嘿!我凑足了一顿饭钱的支票时就想去中国银行兑现,准备换了钱大吃一顿。但是银行的职员告诉我,他们必须把支票寄回美国才能拿到现 金,办理这件事的费用大大高于支票自己的价值!因此Knuth至关于给我一些空头支票。Damn!早该想到的,他为何不往你们的信用卡上面转帐,而使用 支票这种过期的东西!他明显以为有他签名的支票,确定谁也不会拿去兑现,甚至装裱在相框里做为记念。hmmm... 算你狠~
好了,啰里啰唆。仍是看看这个别人写的书评。White elephant,这确实道出了我对这套书的感受。 (可是评价者有些观点我不能苟同,好比“O(n)表示法足够了”。) 但愿之后对 paper 也有这种公开的 comments!编程
http://www-cs-faculty.stanford.edu/~knuth/taocp.html;app
The Art of Computer Programmingdom
by Donald E. Knuth. spa
At the end of 1999, these books were named among the best twelve physical-science monographs of the century by American Scientist, along with: Dirac on quantum mechanics, Einstein on relativity, Mandelbrot on fractals, Pauling on the chemical bond, Russell and Whitehead on foundations of mathematics, von Neumann and Morgenstern on game theory, Wiener on cybernetics, Woodward and Hoffmann on orbital symmetry, Feynman on quantum electrodynamics, Smith on the search for structure, and Einstein's collected papers. Wow! 设计
Fundamental Algorithms, Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 0-201-89683-4
Volume 1 Fascicle 1, MMIX: A RISC Computer for the New Millennium (2005), v+134pp. ISBN 0-201-85392-2htm
Chapter 1, by Ken Hirose, Kihon Samp? / Kiso Gainen (Tokyo: Saiensu-Sha, 1978), 22+331pp.;
Chapter 2, by Nobuo Yoneda and Katsuhiko Kakehi, Kihon Sampo? / J?h? K?z? (Tokyo: Saiensu-Sha, 1978), 8+373pp.
Translations of previous editions:
Chinese translation by Guan JiWen and Su YunLin, Ji Suan Ji Cheng Xu She Ji Ji Qiao, 1. Juan: Ji Ben Suan Fa (Beijing: Defense Industry Publishing Co., 1980), 14+573pp.
Translations of the third edition:
Chinese translation by Su YunLin, Ji Suan Ji Cheng Xu She Ji Yi Shu, 1. Juan: Ji Ben Suan Fa (Beijing: National Defense Industry Press, 2002), xx+625pp.
Volume 2
Seminumerical Algorithms, Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp.
ISBN 0-201-89684-2
Chapter 3, by Masaaki Sibuya, Kihon Samp? / Rans? (Tokyo: Saiensu-Sha, 1982), ii+259pp.;
Chapter 4, by Keisuke Nakagawa, Kihon Samp? / Sanjutsu Enzan (Tokyo: Saiensu-Sha, 1986), xii+536pp.
Translations of previous editions:
Chinese translation by Guan JiWen and Su YunLin, Ji Suan Ji Cheng Xu She Ji Ji Qiao, 2. Juan: Ban Shu Zhi Suan Fa (Beijing: Defense Industry Publishing Co., 1992), 10+622pp.
Translations of the third edition:
Chinese translation by Su YunLin, Ji Suan Ji Cheng Xu She Ji Yi Shu, 2. Juan: Ban Shu Zhi Suan Fa (Beijing: National Defense Industry Press, 2002), xii+760pp.
Volume 3
Sorting and Searching, Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout.
ISBN 0-201-89685-0
Translations of the first edition:
Chinese translation by Guan JiWen and Su YunLin, Ji Suan Ji Cheng Xu She Ji Ji Qiao, 3. Juan: Pai Xu He Cha Zhao (Beijing: Defense Industry Publishing Co., 1985), viii+645pp.
Translations of the second edition:
Chinese translation by Su YunLin, Ji Suan Ji Cheng Xu She Ji Yi Shu, 3. Juan: Pai Xu Yu Cha Zhao (Beijing: National Defense Industry Press, 2002), x+779pp.
Volume 4A
Combinatorial Algorithms, Part 1 (Upper Saddle River, New Jersey: Addison-Wesley, 2011), xvi+883pp.
ISBN 0-201-03804-8
(Preliminary drafts were previously published as paperback fascicles; see below.)
The Remainder of Volume 4
Present plans are for Volume 4A to be the first in a series of several subvolumes 4A, 4B, 4C, ... entitled Combinatorial Algorithms, Part 1, 2, 3, .... The remaining subvolumes, currently in preparation, will have the following general outline:
7.2.2. Basic backtrack
7.2.3. Efficient backtracking
7.3. Shortest paths
7.4. Graph algorithms
7.4.1. Components and traversal
7.4.2. Special classes of graphs
7.4.3. Expander graphs
7.4.4. Random graphs
7.5. Network algorithms
7.5.1. Distinct representatives
7.5.2. The assignment problem
7.5.3. Network flows
7.5.4. Optimum subtrees
7.5.5. Optimum matching
7.5.6. Optimum orderings
7.6. Independence theory
7.6.1. Independence structures
7.6.2. Efficient matroid algorithms
7.7. Discrete dynamic programming
7.8. Branch-and-bound techniques
7.9. Herculean tasks (aka NP-hard problems)
7.10. Near-optimization
8. Recursion
Paperback Fascicles
New material for Volume 4 will first appear in beta-test form as fascicles of approximately 128 pages each, issued approximately twice per year. These fascicles will represent my best attempt to write a comprehensive account; but computer science has grown to the point where I cannot hope to be an authority on all the material covered in these books. Therefore I'll need feedback from readers in order to prepare the official volumes later.
For example, the following fascicles appeared before the hardcover edition of Volume 4A was complete.
Volume 4 Fascicle 0, Introduction to Combinatorial Algorithms and Boolean Functions (2008), xii+216pp. ISBN 0-321-53496-4
Volume 4 Fascicle 1, Bitwise Tricks & Techniques; Binary Decision Diagrams (2009), xiii+261pp. ISBN 0-321-58050-8
Volume 4 Fascicle 2, Generating All Tuples and Permutations (2005), v+128pp. ISBN 0-201-85393-0
Volume 4 Fascicle 3, Generating All Combinations and Partitions (2005), vi+150pp. ISBN 0-201-85394-9
Volume 4 Fascicle 4, Generating All Trees; History of Combinatorial Generation (2006), vi+120pp. ISBN 0-321-33570-8
Volume 5
Syntactic Algorithms, in preparation. Estimated to be ready in 2020
9. Lexical scanning (includes also string search and data compression)
10. Parsing techniques