計算機程序設計藝術
⑴ 如何閱讀和學習《計算機程序設計藝術》
拿到一本書,應該先看他的封面或者扉頁,對於前面的作者介紹和生平有一個大致內了解,這容是為了方便之後對於書中內容的理解,會知道該怎麼基於作者的觀點來理解作者的描述,也會根據這個,來思考自己的理解對於這本書的本意有多大的意義。
⑵ 計算機程序設計藝術的內容簡介
本書作者D. E. Knuth是在計算機學界十分著名的學者,在本領域享有很高權威和盛名,他的這部著作是無數計算機專業人員的學習教材和參考讀物,也是許多專業研究工作者經常閱讀的經典。本書已被翻譯為幾十種文字在世界各地出版,英文原版書在國外已經是第11次印刷。
該書1999年底被American Scientist列為20世紀最佳12部學術專著之一(與狄拉克的量子力學、愛因斯坦的相對論、曼德布羅特的分形論、鮑林的化學鍵、羅素和懷特海德的數學原理、馮諾意曼和摩根斯坦的博弈論、維納的控制論、伍德沃和霍夫曼的軌道對稱性、費曼的量子電動力學等科學史上的經典著作並列)。
本書結合大量數學知識,分析不同應用領域中的各種演算法,研究演算法的復雜性,即演算法的時間、空間效率,探討各種適用演算法等,其理論和實踐價值得到了全世界計算機工作者的公認。書中引入的許多術語、得到的許多結論都變成了計算機領域的標准術語和被廣泛引用的結果。另外,作者對有關領域的科學發展史也有深入研究,因此本書介紹眾多研究成果的同時,也對其歷史淵源和發展過程做了很好的介紹,這種特色在全球科學著作中是不多見的。
作者高德納幾十年來對此書傾注的心血難以計量,他力求隨著有關領域的最新進展不斷更新內容,力求隨著原版書的不斷重印令其技術的、史實的和出版方面的錯誤或不當減到極少(他為了能夠滿意地隨時修訂自己的著作,發明了計算機排版系統TEX和字形設計系統METAFONT,無償公諸於世,使全世界的科技文獻作者普遍受惠),現在其最新印次已很難找到錯誤,作者承諾以2.56美元兌獎勵來酬謝任何一個錯誤的頭一個發現者。而相關史實的新證據、相關研究的新進展、習題的新解答仍在及時充實到勘誤表或新的印次中。
⑶ 計算機程序設計藝術到底是演算法書還是純數學書我翻半天沒見一行代嗎,
這位兄弟 我不知道你是不是計算機或者相關專業的,我簡單給你介紹一下哈。
計算機程序藝術(下簡稱TAOCP)的的確確是一步史詩般的巨作,如果你是相關專業的話我覺得這本書讀了會獲益一輩子。TAOCP的作者是史上最年輕的圖靈獎獲得者(相當於計算機領域裡面的諾貝爾獎了),而且要強調的是他獲獎的原因不是其他,正是編寫了這樣一套書(七卷中目前只出到第四卷)。所以本套書的價值不言而喻。
對於您所問的TAOCP代碼問題,建議你從本書的第一卷開始讀起,作者在120頁左右開始定義整套書所使用的機器。沒錯,就是構建了一台虛擬的計算機,其所有操作碼也是自己定義的。說白了就是自己弄了一套匯編碼。
要強調的是作者沒有用高級語言並非時代限制(作者今日還在寫書的餘下幾卷),而是處於對於貼近硬體以及理解機器工作方式而選擇的!這正是本書的經典。語言易變,但思想永恆。
說老實話,語言不難學,看看第一卷120頁左右那幾小節就懂了,希望你好好閱讀,有所收獲!
⑷ 計算機程序設計藝術 半數值演算法 講了哪些演算法
半數值演算法,分「隨機數」和「算術」兩章。本卷總結了主要演算法範例及這些演算法的基本理論,廣泛剖析了計算機程序設計與數值分析間的相互聯系。
資料來源:http://ke..com/link?url=Geb_-bcrj839-mcJECYorbj7-GzwQOjXDlhGA8s6tdgI_zXlQbDZq#4
⑸ 跪求計算機程序設計藝術第一卷英文版。。。
這個暑假沒有回家,就從圖書館借來了第一卷,發現裡面的東西寫的的確比國內的書寫的好,可惜需要太多時間來挖掘,難度較大。如果做題目的話,一年能看完一本書也應該......
⑹ 如何閱讀和學習《計算機程序設計藝術》
為了以後找工作更加方便,你可以選擇一些比較熱門的專業,例如電商、網路編程、電商財會、ui設計等等,發展前景大,能夠進入的工作單位都比較容易找。其實這些計算機相關專業,學習起來還是比較容易的,上課好好聽老師的思路,根據老師的指導走流程,祝你學到真本事
⑺ 如果把那三卷TAOCP(計算機程序設計藝術) 看完, 並把那裡的習題做完, 能達到怎麼樣的水平
比爾蓋茨會很愛你。
其實完全不需要什麼外在的資源,就是死摳這已經出版的四冊,把它摳完,你就是大ACE了。
話說這套書還沒寫完,圖靈獎就迫不及待地頒給了它,史上最年輕的圖靈獎得主。巨著、典章、聖典級別的東西。
反正我是看不下去……買了一套擺在書架上花供養,一翻就頭暈,IT聖經的威力可不是開玩笑的……
話說過了這么多年了,題主看了嗎?
⑻ 計算機程序設計藝術 英文版 電子版
一共三卷,2008年出版的,英文版PDF電子版,要嗎?點我頭像聯系
⑼ 如何閱讀和學習《計算機程序設計藝術(TAOCP)》
哦,上帝!《The Art of Computer Programming》引那位出名的王垠對的評論: 本來早就想想寫一個對於Knuth的The Art of Computer Programming的看法。 沒想到一去Amazon就找到一個同類 關於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的支票就作為一種可以炫耀的東西。以前我就看到一個Cambridge的教授主頁上掛著一個Knuth支票的照片。Knuth的支票真的可以作為炫耀的資本嗎?告訴你們,我找到的錯誤都是typo而已,沒想到他也給我支票。誰叫他打字不小心,Millennium都能打成 Millenium?嘿!我湊足了一頓飯錢的支票時就想去中國銀行兌現,准備換了錢大吃一頓。可是銀行的職員告訴我,他們必須把支票寄回美國才能拿到現金,辦理這件事的費用大大高於支票本身的價值!所以Knuth相當於給我一些空頭支票。Damn!早該想到的,他為什麼不往大家的信用卡上面轉賬,而使用支票這種過時的東西!他明顯覺得有他簽名的支票,肯定誰也不會拿去兌現,甚至裝裱在相框里作為紀念。hmmm... 算你狠~ 好了,啰里啰唆。還是看看這個別人寫的書評。White elephant,這確實道出了我對這套書的感覺。 (但是評價者有些觀點我不能苟同,比如「O(n)表示法足夠了」。) 希望以後對 paper 也有這種公開的 comments! Dan Friedman 的故事 (4)——C311當我剛從 Cornell 轉學到 IU 的時候,Dan Friedman 叫我去上他的研究生程序語言課 B521。我當時以自己在 Cornell 上過程序語言課程為由,想不去上他的課。Friedman 把我叫到他的辦公室,讓我在他旁邊坐下來,和藹的對我說:「王垠,我知道你在 Cornell 上過這種課。我也知道 Cornell 是比 IU 好很多的學校。可是每個老師的教學方法都是不一樣的,你應該來上我的課。我和我的朋友們在這里做教授,不是因為喜歡這個學校,而是因為我們的家人和朋友都在這里。」後來由於跟 Amr Sabry(我現在的導師)的課程 B522 時間重合,他特別安排我坐在本科生的 C311 的課堂上,卻拿研究生課程的學分。後來發現,這兩門課的內容基本沒有區別,只不過研究生的作業要多一些。 在第一堂課上,他說了一句讓我記憶至今的話:「《The Little Schemer》和《Essentials of Programming Languages》是這門課的參考教材,但是我上課從來不講我的書里的內容。」剛一開始,我就發現這門課跟我在 Cornell 學到的東西很不一樣。雖然有些概念,比如 closure,CPS,我在 Cornell 都學過,在他的課堂上,我卻看到這些概念完全不同的一面,以至於我覺得其實我之前完全不懂這些概念!這是因為在 Cornell 學到這些東西的時候只是用來應付作業,而在 Friedman 的課上,我利用它們來完成有實際意義的目標,所以才真正的體會到這些概念的內涵和價值。 一個例子就是課程進入到沒幾個星期的時候,我們開始寫解釋器來執行簡單的 Scheme 程序。然後我們把這個解釋器進行 CPS 變換,引入全局變數作為"寄存器" (register),把 CPS 產生的 continuation 轉換成數據結構(也就是堆棧)。最後我們得到的是一個抽象機 (abstract machine),而這在本質上相當於一個真實機器里的中央處理器(CPU)或者虛擬機(比如 JVM)。所以我們其實從無到有,「發明」了 CPU!從這里,我才真正的理解到寄存器,堆棧等的本質,以及我們為什麼需要它們。我才真正的明白了,馮諾依曼體系構架為什麼要設計成這個樣子。後來他讓我們去看一篇他的好朋友 Olivier Danvy 的論文,講述如何從各種不同的解釋器經過 CPS 變換得出不同種類的抽象機模型。這是我第一次感覺到程序語言的理論對於現實世界的巨大威力,也讓我理解到,機器並不是計算的本質。機器可以用任何可行的技術實現,比如集成電路,激光,量子,分子,基因…… 但是無論用什麼作為機器的材料,我們所要表達的語義,也就是計算的本質,卻是不變的。 而這些還不是我那屆 C311 全部的內容。後半學期,我們開始學習 miniKanren,一種他自己設計的用於教學的邏輯式語言 (logic programming language)。這個語言類似 Prolog,但是它把 Prolog 的很多缺點給去掉了,而且變得更加容易理解。教材是免費送給我們的《The Reasoned Schemer》。在書的最後,兩頁紙的篇幅,就是整個 miniKanren 語言的實現!我學得比較快,後來就開始搗鼓這個實現,把有些部分重新設計了一下,然後加入了一些我想要的功能。這樣的教學,給了我設計邏輯式語言的能力,而不只是停留於一個使用者。這是學習 Prolog 不可能做到的事情,因為 Prolog 實現的復雜性,會讓初學者無從下手,只能停留在使用者的階段。 我很幸運當初聽了他的話,去上了這門課,否則我就不會是今天的我。 誰是真正的程序語言專家Knuth 也曾有類似的說法:「要是看不懂 TAOCP,就別當程序員。」他總是被譽為「計算機科學的神」,在他的演講里大談文學,藝術,上帝和宗教,給人陡增神秘感。他總是說程序員應該學習機器語言,而不是高級語言,機器才是不變的真理。但是 Knuth 卻不是從科學的角度來看這個問題,而只是他個人的偏見。當他看到 Fortran, Lisp, ALGOL, Pascal, C, C++, Java 這些語言的發展彷彿沒有盡頭的時候,他並沒有理解其中不變的原理。在程序語言的設計上,他不是一個強者。他很有可能根本不理解 lambda calculus 和類型理論,否則他不會設計出像 TeX 那樣毫無章法的語言。TeX 排版的質量無可厚非,但是到了1978年還仍然採用程序語言專家們早已深惡痛絕的 dynamic scoping,再加上其它一些蹩腳的設計,說明他對程序語言理論缺乏理解。實際上 TeX 含有一個圖靈完備的擴展語言,是因為 Knuth 採納了 Guy Steele(Scheme 的發明者)的建議,然而 Knuth 卻沒有把它設計好。 Knuth 覺得機器是不變的真理,所以他堅持用機器語言來寫作 TAOCP。但是由於機器語言缺乏抽象,程序員沒法專注於真正的問題。使用機器語言來描述演算法,會把本來很簡單的問題都顯得高深難懂,彷彿這書永遠也看不完。有多少人真正的看過 TAOCP 呢?恐怕大部分人把這套書買回去,只是把它們擺在書架上做面子。只要有人說機器語言太難懂,這些人就會說你自己不夠聰明,不配做程序員。而其實呢,他們自己都沒看過。 機器不是計算的本質這個事實,很多人包括 Dijkstra,早就看到了。他說:「計算機科學是個錯誤的名字,因為它不是計算機的科學,這就像外科手術不是刀子的科學。」而這是幾乎每一個程序語言專家都明白的道理。在他們的眼裡,這不再是道聽途說或者個人觀點,而是可以用邏輯來證明的事實。真正明白計算本質的人,可以設計出全新的硬體來來滿足語義的需要,而不是受控於處理器的設計。他們甚至可以超越集成電路,而使用另外的技術來製造機器。這些都說明,計算其實是獨立於機器的。 有不好的想法不要緊,但是如果把不好的想法硬說成是好的,那就會阻礙歷史發展了。我並不否認 Knuth 和 Ritchie 對演算法,排版和操作系統的重要貢獻,但是由於他們以及他們崇拜者經常在有關語言的事情上誤導群眾,所以覺得有必要指出他們的一些局限性。Linus Torvalds, Guido van Rossum, Eric Raymond, Paul Graham 也經常發表對語言的評論,被很多人奉為聖旨,但其實他們言論裡面很少有真知灼見。 其實我要說的不過是,通常程序員們膜拜的偶像,大部分都不是真正的程序語言專家。希望你不要覺得這是危言聳聽,實際上這些是大部分世界級的計算機科學家們很多年前就知道的事情。
⑽ kindle 能閱讀計算機程序設計藝術嗎
當然可以閱讀,kindle相當於一個電紙書播放器,只要有計算機程序設計藝術書的資源,kindle就可以閱讀。如果網路上沒有相關資源,kindle就無法看了。