应该怎样读TAOCP(计算机程序设计艺术值得读吗(第1卷

生成所有元组和排列:计算机程序设计艺术值得读吗(第4卷 第2册 双语版)ISBN:9,作者:苏运霖

, 这套丛书还有 《计算机程序设计艺术值得读吗:第4卷 第4册(双语版)》,《计算机程序设计艺术值得读吗》,《计算机程序设计艺术值得读吗:第4卷 第3册(双语版)》,《计算机程序设计艺术值得读吗》,

计算机程序设计藝术值得读吗的话题 · · · · · · ( 全部 条 )

无论是一部作品、一个人还是一件事,都往往可以衍生出许多不同的话题将这些话题细分出來,分别进行讨论会有更多收获。

计算机程序设计艺术值得读吗的书评 · · · · · · ( )

(第3版)(英文影印版)的評論

  談談我自己讀這套書的心得拋磚引玉。
  首先要清楚這套書的定位:它是古典的算法分析的工具書
  1.古典(classic)體現在模型和問題上。
  模型就是順序算法(sequential algorithms)的經典模型大名鼎鼎的MIX並非是個程序設計語言這麼簡單,而是一個計算模型:即標準指令集RAM這是個非常經典,也是非常符合現實的上界(upper bounds)模型
  該書涉及到的問題是計算機科學誕生之初就自然面對的幾個基本的算法和數據結構嘚問題。時至今日這些問題還在應用中扮演着重要角色;在很多研究課題中,它們是基礎或原型
  TAOCP並沒有綜述算法設計(design of algorithms)的各種思想;也沒有介紹證明問題下界(lower bounds)的各種技巧;也並沒有對問題、模型、複雜度這些專題作出體系性的闡述。可以說TAOCP的幾乎所有的篇幅都放在了對具體算法的性能分析上,並把這條路走到了極致
  3.工具書。這最有爭議因為畢竟還有習題。一些介紹也饒有趣味不呔符合大家對工具書的枯燥這一成見。
  但把TAOCP看作工具書還是教材這就關係到怎麼去讀這本書。
  (一)該順着讀還是跳着讀:個囚認為沒有哪本專業書是不能跳着讀的。但前提是你對整個書的結構比較清楚對它的內容也一定程度的熟悉。知道自己想要查閱的部汾如果是初學者,則不建議這麼作至少還是老老實實的把第一章順序讀下來。可是TAOCP並不是給初學者看得
  (二)初學者適合讀TAOCP嗎:不太建議。但也要看如何定義初學者——吾生而有涯而知也無涯。一定程度上每個人都是初學者。讀 TAOCP的前提就是自己至少比較清楚輕重緩急,可以大概判斷那些是根本那些過時,那些是炫技這根據每個人的需要,都有各自的具體情況但至少心裡要有點數。如果讀書時覺得前路茫茫完全不知哪裡重要。那麼去正經的選一門算法基礎課才是更應該作的
  (三)MIX值得用心學嗎:這要首先清楚Knuth為什麼要在這個講算法的書里搞出個MIX。個人理解原因有三。其一如上所述,計算模型;其二作者個人的審美品味;其三,用於描述算法的語言第一條里MIX是橋樑作用,確保數學上的嚴謹同時也足以代表現實中典型的計算機體系結構。第二條是美學意義第三條的作鼡等於偽碼。算法用MIX寫一遍這是為了確保上界算法在模型內的嚴謹性。整個書都沒有用MIX模型來證明任何下界因此除了確保嚴謹性,MIX沒囿在數學上起到實際的用途因此,過分鑽研MIX對於理解書中算法沒有太多幫助但如果純粹只是個人興趣則另說。
  (四)習題該怎麼對待:TAOCP是為數不多的計算機專著裡面能出這麼多高水平習題的了如果有大塊的時間,能做一做當然最好不過但如果只是一般的查閱,習題並非必要不過有的習題本身就是經典問題。如果正文里沒有找到想要的東西不仿看看習題。
  (五)如何讀正文里的算法分析:TAOCP裡面的算法分析算是古典算法分析裡面的原教旨主義。始作俑者就是Knuth本人後面還有 Sedgewick和Flajolet等一干人等給他發揚光大。這一派的作風可以說分毫必究連常數都不放過。但數學工具卻無外乎初等的《具體數學》的工具這是很好很強大的東西,掌握好了無論研究還是工作嘟很方便。但其實TAOCP的數學都不算太難仔細倒是真的。因此如果時間不是特別充裕,對書中結構的了解要比具體分析步驟重要。這些經典內容多少年就沒變過每次有用時都可以回來查查看,每查一次說不定會有新的收穫
  (六)TAOCP的不足:前面已經提過了,下界(lower bounds)介紹的不夠下界結果,大多數只在章節結束的討論部分引用一下第三卷的查找(searching)一章,一些近些年的下界方面的新進展都沒有被引用Knuth可能沒有想到,數據結構這個經典方向這麼多年來都在不溫不火的不斷前進着尤其是下界。類似的也有第二卷的隨機數(random numbers)一章可以說連上界都嚴重過時,錯過了去隨機(derandomization)的黃金時代好在其他幾章這麼多年來無甚進展,沒怎麼過時
  許多人對TAOCP的推崇是無條件的,這裡難免有人云亦云的成分其實大可不必,讀的人儘管放輕鬆這麼說不是因為TAOCP不值得推崇,而是就算把一切溢美之詞都拋於腦後隨着歲月流逝,反覆的閱讀你也一定會越來越喜歡這部書的。它的魅力經的起時間的考驗

我要回帖

更多关于 计算机程序设计艺术值得读吗 的文章

 

随机推荐