《计算机程序设计艺术》即《The Art of Computer Programming》是计算机领域里颠峰级的里程碑,加上国外人士对它的推崇,所以提起它的大名简直就象法律书籍中的宪法一样神圣。

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;

The Art of Computer Programming

by Donald E. Knuth.

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!

Volume 1

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-2

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

The Art of Computer Programming的更多相关文章

  1. The Art Of Computer Programming: 1.1

    The Art Of Computer Programming: 1.1 */--> div.org-src-container { font-size: 85%; font-family: m ...

  2. K老在拿图灵奖时的发言:Computer Programming as an Art

    很多话说得很透彻,把一些觉比较精彩的摘抄一下. ... It seems to me that if the authors I studied were writing today, they wo ...

  3. The art of multipropcessor programming 读书笔记-硬件基础1

    本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...

  4. The Art of Multiprocessor Programming读书笔记 (更新至第3章)

    这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记.目前有关共享内存并发同步相关的书籍并不多,但是学术文献却不少,跨越的时 ...

  5. 类型检查和鸭子类型 Duck typing in computer programming is an application of the duck test 鸭子测试 鸭子类型 指示编译器将类的类型检查安排在运行时而不是编译时 type checking can be specified to occur at run time rather than compile time.

    Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊! Duck typing in computer programming is an applicati ...

  6. The art of multipropcessor programming 读书笔记-硬件基础2

    本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...

  7. The art of multipropcessor programming 读书笔记-3. 自旋锁与争用(2)

    本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...

  8. Reflection (computer programming) -反射-自身结构信息

    n computer science, reflection is the ability of a computer program to examine, introspect, and modi ...

  9. Computer Science: the Big Picture

    1.课程PPTMIT OpenCourseWarehttp://ocw.mit.edu/courses/; Courses  Stanfordhttp://cs.stanford.edu/course ...

随机推荐

  1. Lockless Ring Buffer Design

    https://www.kernel.org/doc/Documentation/trace/ring-buffer-design.txt Lockless Ring Buffer Design == ...

  2. MySQL 索引优化 btree hash rtree

    一.MySQL索引类型 mysql里目前只支持4种索引分别是:full-text,b-tree,hash,r-tree b-tree索引应该是mysql里最广泛的索引的了,除了archive基本所有的 ...

  3. php计算脚本执行时间

    利用PHP的microtime实现 function getCurrentTime () { list ($msec, $sec) = explode(" ", microtime ...

  4. HDU 4941 Magical Forest 【离散化】【map】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 题目大意:给你10^5个点.每一个点有一个数值.点的xy坐标是0~10^9.点存在于矩阵中.然后 ...

  5. cocos2dx的图片载入

    //data: 图片文件数据 dataLen: 文件长度 bool Image::initWithImageData(const unsigned char * data, ssize_t dataL ...

  6. BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解

    昨天公布了BackTrack5 (BT5)无线weppassword破解教程之minidwep-gtk破解法一文,对BT5下破解wep无线password的简单方法做了介绍,今天奶牛为朋友们介绍下怎样 ...

  7. 从头学Android系列

    从头学Android系列 http://blog.csdn.net/worker90/article/category/888358

  8. 【原创】PostSharp入门笔记

    最近写了一个抓取软件,用户反映软件偶尔会抛异常: 由于当时写代码时没有注意异常处理,大部分方法都没有写try…catch…finally的语句,所以很难找出异常是出在哪个地方,难道要为所有方法加上tr ...

  9. [Angular2 Router] CanActivate Route Guard - An Example of An Asynchronous Route Guard

    In this tutorial we are going to learn how we can to configure an can activate route guard in the An ...

  10. [Angular2 Form] Understand the Angular 2 States of Inputs: Pristine and Untouched

    Angular 2’s ngModel exposes more than just validity, it even gives you the states of whether the inp ...