The Art of Computer Programming

《計算機程序設計藝術》即《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! 設計


Volume 1 orm

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

相關文章
相關標籤/搜索