好的計算機書籍 http://outmyth.blogdriver.com/outmyth/1122212.html

【動機】就計算機這個專業來說吧,因爲我是非科班出身的學生,要重新開始補相應的知識,目前定下來要學習的基礎理論知識有:離散數學,數據結構與算法,

組成原理,彙編,操作系統,網絡等等,有的時候覺得這裏每一個知識點要學的深入的話都是無底洞,不過我又是那種喜歡追根究底的人,比如學習a知識的時候要

用到b知識,我會停下來學學b知識,然後一直這樣下去.....有時候也會覺得很累,覺得沒有一個盡頭。最近也看到一個觀點:讀書應該“不求甚解”,我想了很久

,還是不明白其中的大意。上面我提到的那些知識點要怎樣才能達到“知道”的度?一般的,“知道”這個度又是如何掌握的?


--------------------------------------------

數學

--------------------------------------------
離散數學

============================================

具體數學:計算機科學基礎(英文版.第2版)         
 
【原書名】 Concrete Mathematics A Foundation for Computer Science(Second Edition) 
【原出版社】 Addison Wesley  
【作者】 (美)Ronald L.Graham,Donald E.Knuth,Oren Patashnik  
【叢書名】 經典原版書庫  
【出版社】 機械工業出版社  
http://www.china-pub.com/computers/common/info.asp?id=7210

【參考資料】
http://www.cfcs.com.cn/fjas/ebook.htm
http://privatewww.essex.ac.uk/~mpthak/xfiles.htm

【評論】
如果認真讀這本書,會改變我們從小已經被糟蹋了的數學思維。慢慢讀,不應該太功利。作者很有趣。如果認真對待裏面的公式,會發現它們很奇妙。一點也不枯


前天收到了本書 , 大師寫的就是不一樣, 是學習計算機方面的絕好的書,文字很幽默而且它教給你的不是金子而是點石成金之術,聽說很久以前國內就引進了

也有中文版,莊心谷老師翻譯的(中文版:《具體數學》,出版社:西安電子科技大學,這本書的89年版在中國有翻譯出版,譯者好象是莊心谷
由西安電子科技大學出版社出版,出版時間是1992年。)。我還喜歡一本是RICHARD A.BRUALDI的組合數學,寫的非常好
絕對經典的一本好書,“圖靈獎”得主Donald E.Knuth撰寫《計算機程序設計藝術》第1卷和第3卷的數學基礎
作者文風幽默倒是確確實實的。書上頁邊的旁註很有意思。說是學生們筆記中的旁註。以前的學生的注(或五花八門的評論),能如此大量出現在教科書裏,國情

真是大大的不同。
訓練思維的好書,國內找不到這樣的書。看這本書不輕鬆,要有很好的數學功底,但看懂它能極大的提升你的功力,要想成爲真正的牛人這本書不容錯過!
從來計算機數學不分家,這本書可以真正的稱爲計算機的數學基礎,出自名家之手,又被斯坦福等大學採用,看後收益不淺,果真不同凡響。想學好計算機,這本

書絕不會令你失望。
這本書好就好在讓人的思維爲之一變,讓人覺得原來事情可以這樣看啊!~
讀過的最好看的數學書。

亞馬遜如是說:The material is very dense, and it's not a book I'd recommend for casual reading: this is stuff you only work

through if you're going to need it. But if you *are* going to need it, this book will make it a lot more pleasant.
不能當小說看。但是當需要時,此書將變得樂趣無窮。

--------------------------------------------

算法

--------------------------------------------

數據結構與算法(英文影印版)  
 
【原書名】 Data Structures and Algorithms   
【原出版社】 Pearson Education  
【作者】 Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman  
【叢書名】 大學計算機教育國外著名教材系列(影印版)  
【出版社】 清華大學出版社  
http://www.china-pub.com/computers/common/info.asp?id=14954

【參考資料】

【評論】
本書是20多年前出版的,採用pascal描述。
該書有中譯本,書名《數據結構與算法》,唐守文等翻譯,1987年科學出版社出版。

Bible!!20年來這本書依然是講解基本數據結構與算法最清晰、優美、權威的教科書!
aho幫的data structures and algorithms和cormen等introduction to algorithms是學習數據結構與算法最完美的方案!

這本書是作者另外的那本書《Design and Analysis of Computer Algorithms》的前6章的精簡版本。
http://www.cocw.net/mit/Electrical-Engineering-and-Computer-Science/6-046JFall-2004/Readings/index.htm
Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Data Structures and Algorithms. Reading, MA: Addison-Wesley, 1983. ISBN:

0201000237. (http://www.china-pub.com/computers/common/info.asp?id=14362)

我覺得三位大師的書最大的特點是好懂好學,深入淺出,解釋的例子舉得很好,能夠讓你弄清原理。

這本書非常非常適合作爲計算機專業本科生數據結構和算法的教材,至今爲止我還沒找到比這本書更好的介紹基本數據結構和算法的書。正如aho幫經典的編譯原

理書(dragon book)一樣,這本書同樣經典、權威、優美、清晰!!

============================================


算法引論:一種創造性方法         
 
【原書名】 Introduction to Algorithms: A Creative Approach 
【原出版社】 Addison Wesley/Pearson  
【作者】 (美)Udi Manber  
【譯者】 黃林鵬 謝瑾奎 陸首博  
【出版社】 電子工業出版社  
 
本書是國際算法大師烏迪?曼博(Udi Manber)博士撰寫的一本享有盛譽的著作,組織結構清晰且易於理解,強調了創造性,具有濃郁特色,時至今日仍有巨大的

價值,適合作爲計算機及相關專業算法和高級算法課程的教材。

http://www.china-pub.com/computers/common/info.asp?id=26775 

============================================

算法導論(第二版 影印版)         
  
【原書名】 Introduction to Algorithms(Second Edition) 
【原出版社】 The MIT Press  
【作者】 (美)Thomas H.Cormen Charles E.Leiserson Ronald L.Rivest Clifford Stein  
【出版社】 高等教育出版社 

http://www.china-pub.com/computers/common/info.asp?id=6434

【參考資料】
e-book: 
http://www.cfcs.com.cn/fjas/ebook.htm
http://219.139.240.53/Soft/Soft_12024.htm
http://online.ysu.edu.cn/personal/yyf/weitao/taocp/clrs.htm

本書答案(solutions to the exercises in the book: "Introduction to Algorithms" by Cormen, Leiserson and Rivest.)
http://www.itu.dk/people/beetle
Solutions for the second edition:
http://www.it-c.dk/people/beetle/solution.pdf
http://www.it-c.dk/people/beetle/teaching/solution.pdf

課程的錄像
http://18.89.1.101/sma/5503fall2001/index5503fall2001.html

對應該書的rm錄像的下載地址:
http://acm.ustc.edu.cn/~algorithm/video/Introduction_To_Algorithm/

對應於錄像的麻省理工學院這門課(6.046J / 18.410J 2001秋季課程:算法導論)的“開放式課程網頁”: 
http://www.cocw.net/mit/Electrical-Engineering-and-Computer-Science/6-046JIntroduction-to-AlgorithmsFall2001/CourseHome/ 
上面可以下載到完整的pdf版的“課堂講義”、“習題”、“習題答案”、“作業”、“作業答案”、“試卷”和“試卷答案”,另外還有“教學大綱”、“教學時程”、“相關閱讀

資料”等等資料

勘誤
http://www.cs.dartmouth.edu/~thc/clrs-2e-bugs/bugs.php


練習題部分答案下載: 
http://ftp.cdaan.com/sy/light/clrs_study.pdf

MIT OpenCourseWare
http://ocw.mit.edu/OcwWeb/index.htm

【評論】
這本書的英文簡稱或暱稱不是ITA,而是CLR(第一版)或CLRS(第二版),其實就是幾位作者的姓名縮寫加在一起

百科全書的組織方式,麻省理工的團隊作品,經典中之經典,作者剛剛獲得去年的圖靈獎,國外絕大多數大學算法課的必備教材。

這本書的大部分內容是美國大學的本科教學內容。
這是一本經典,在CiteSeer被引用最多的文章排名中位居第二。http://citeseer.nj.nec.com/articles.html

許多美國大學的研究生院都把這本書作爲教材,詳細講解。在《程序員》的算法書排名上位列第二,僅次於大名頂頂的 the art of computer programming

我最初注意到CLR大約是96年,當時看到不少論文後面把它作爲參考文獻。後來領導安排我教離散數學,這不是我的特長科目,所以備課的時候我找了不少相關的

書籍和文章,其中包括純數學的,也包括數據結構和算法方面的,因爲我更關心學生在做課題的過程中的實際算法設計和分析能力。我發現最近出的一些數據結構

和算法教材除了把TAOCP作爲權威來源以外,也把CLR作爲標準參考書。TAOCP的傳奇很多人都熟悉,但CLR知道的就不多了。我也是一樣無知,所以就在網上找了

一些材料,瞭解到CLR的一些特點。我的感覺是用CLR教研究生是一個不錯的選擇(我們教研室教算法的老師覺得它比Aho幫的算法設計與分析深度淺,但是我說

CLR更全、更現代、學生更容易接受)。

講算法講的比較好的幾本書之一。雖然自己英文不是很好,看這本書是看完一節,查一次英漢詞典,但是總體來說,書流暢敘述了對於算法的講解,整體還是比較

通俗易懂的。原汁原味的書,看着是種享受。不過讀過幾遍後,還是有不懂的地方,有時還要溫習一下,又會有不同的領悟。

作者之一Ronald Rivest是RSA的設計者,於2002年獲得圖靈獎。

如果不想急功近利,又不想陷入基礎理論的浩瀚煙海,那麼本書就是大家的最好選擇.算法類很優秀的書,通俗易懂,深入淺出,很適合中初類讀者。

<<現代計算機常用數據結構和算法>>是CLR 1ed(美國1990年出版),1994年南京大學計算機系潘金貴翻譯,書號是ISBN 7-305-02424-4/TP*83,花了兩年多時

間1992年翻譯出來的,1994南大出版.

既有詳細的解說又有嚴格的數學論證,好書,強烈推薦。 算法書中的經典!內容全面準確,對每個算法都有理論上的證明,語言嚴謹流暢,是每個算法愛好者或程

序設計人員的必備參考書!

按照這本書自己的講法,它不僅適合研究生,也適合本科生,因爲書中的材料被組織成相對較小的章節,可以靈活地取捨和組織。對國內的本科生來說,用英語學

習專業材料通常有一定的問題。主要原因是不習慣而不是看不懂。這本書的寫作風格平實(或者說枯燥),應該不難閱讀。但是如果是頭一次閱讀專業英文教材,

一般會感覺到不容易形成摘要。

行文流暢,讓人有欲罷不能之感.有些與數據結構重合的部分一對比不知比嚴蔚敏的相應章節好上多少,真正的大師水準.就個人感覺,隱藏在算法背後的設計思想與

設計技術剖析的不細,更多的筆墨放在了證明上,此乃白璧微瑕.

關於這本書和那本《algorithms in C++》的感想:
那本書是用 C++ 代碼來描述算法。作者是老師,而不是工程師。這本書是用僞碼來描述算法。
那本書偏重算法的實現。這本書偏重算法的證明和分析。
那本書的習題多爲“Write a program ...”。這本書的習題多爲“Give an algorithm ...”or “Give a proof ...”.
這本書比那本書厚。

內容特點是抽象和形式化,既有嚴格的理論證明,又具有很強的構造性

算法是程序設計的靈魂,而此書堪稱算法分析著作中的“獨孤九劍”,故我強烈推薦。

我選的第一本算法教材,本書的確很全面論述了算法的內容,而且對各個層次讀者都有考慮,建議買一本讀一讀,很值。
理論嚴謹,啓發性高,具有大量的圖表;對算法一步步的推導,萬丈高樓從地起!既適合研究生與科研人員,又適合初學者,看了絕對大有裨益!!

門檻低,適用人羣廣!想作程序員,算法必須學,這是少有的不打擊積極性的書。

絕對的經典!深入淺出!大量的圖表,對算法不是直接給出,而是一步步的推導,讓人有知其然而知其所以然的感覺!適合各種水平的人看,如果你願意,甚至可

以把他作爲數學書看!!着次地,怎一個爽字了得。

雖然說是抽象了點,但是隻有這樣才能夠從最基本的原理出發,獲取算法的精髓。這本書既特別適合初學者,對想要更深一層研究算法的也很有裨益。最適合計算

機算法初學者的名著!

它很厚實,不僅在於它的尺寸,更在於它所承載的知識。
外形的厚重與閱讀的舒暢使它成爲經典的對立統一,就像是一名外形高大的卻身懷絕世輕功的武林高手。

幾乎所有的算法教科書都把這本《算法導論》列爲參考首選。對每個算法都給出了嚴格的數學證明,讓人看了有種:知其然而知其所以然的感覺!!

我們傾向於把CLR和TAOCP進行對比。
從寫作質量上看,兩者都是罕見的上品。
從範圍上看,TAOCP的整套書比一卷本(很龐大的一卷!)的CLR宏大,但是TAOCP的後幾卷還沒出來,CLR覆蓋的有些內容在TAOCP的前三卷裏面沒有討論。
從詳盡程度上看,CLR很詳盡,而TAOCP極詳盡。
從作者的聲譽上看,寫TAOCP的Knuth是大名家,百年一遇的天才;主筆CLR的Cormen從學術成就還不能說已經非常卓著。當然CLR中的R即Rivest也是個非常人物

,公開祕鑰密碼算法RSA就是此公的傑作。
有一個現象很有意思,TAOCP是Knuth在CalTech上研究生的時候就開始寫作的,而CLR是Cormen還在MIT做博士生的時候就已經出版了!
從出版後的影響上看,TAOCP出版了三卷後,Knuth就獲得了圖靈獎,而這三卷書則塑造了計算機科學。CLR目前是算法的標準教材,美國許多名校的計算機系都使

用它,另外許多專業人員也經常引用它。
我覺得Knuth的寫作有一個標準,那就是成爲科學史上的里程碑。我們會想起歐幾里德的“幾何原本”,牛頓的“自然哲學的數學原理”。
CLR會達到什麼地位,一代人、兩代人的標準教材還是更高?Only time will tell.
從書籍產生的意義講:AOCP和CLR不能項比較。AOCP在計算機領域是屬於開創性的作品,具有學科經典的地位。爾後,有關數據結構和算法的書基本都是對AOCP的

解讀、大衆化、實用化,同時增加一些改進的、新的算法。CLRS基本也屬於此類。只是他的寫法較好,理論深度適中。另外,兩書的習題都非常豐富。我認爲,如

果不做習題,書的價值將減少一半。

但TAOCP給人的感覺比較學院派,而ITA則相對來說較爲實用一點。

============================================

編程珠璣(第二版)        

【原書名】 Programming Pearls Second Edition  
【原出版社】 Addison Wesley  
【作者】 Jon Bentley  
【譯者】 謝君英 石朝江  
【叢書名】 大師簽名系列  
【出版社】 中國電力出版社 

http://www.china-pub.com/computers/common/info.asp?id=16802
http://www.china-pub.com/computers/common/info.asp?id=18348 [英文影印版]

============================================

STL 源碼剖析         
 
【作者】 侯捷  
【叢書名】 侯捷譯作系列  
【出版社】 華中科技大學出版社 
http://www.china-pub.com/computers/common/info.asp?id=6384

--------------------------------------------

網絡

--------------------------------------------
計算機網絡(第4版)                
 
【作者】 謝希仁  
【叢書名】 高等學校電子信息類規劃教材  
【出版社】 電子工業出版社  
http://www.china-pub.com/computers/common/info.asp?id=12772

【評論】
國內網絡書籍絕對的經典之作!

============================================

計算機網絡(第4版)(中文版)         
 
【原書名】 Computer Networks, Fourth Edition 
【原出版社】 Pearson Education  
【作者】 Andrew S.Tanenbaum,Vrije Universiteit,Amsterdam,The Netherlands  
【譯者】 潘愛民  
【叢書名】 世界著名計算機教材精選  
【出版社】 清華大學出版社

http://www.china-pub.com/computers/common/info.asp?id=19442

http://www.china-pub.com/computers/common/info.asp?id=15894 [英文影印版]

【參考資料】
本書的PPT:
http://authors.phptr.com/tanenbaumcn4/

【評論】

國防科技大學倪鵬雲教授關於該書的評論,可參見http://www.china-pub.com/main/sale/renwu/mainb.htm

《計算機網絡》這本書有20多年的歷史(1980年第1版)和積累,作者有豐富的知識基礎和教學經驗。本書基本上按照從底向上的思路,內容涉獵非常廣,但是並不

深入,然而作者提供了很多參考資料,所以,這本書既是一本教材,也是一本很好的參考書。實際上,在國外,還有完全不同思路的教材也同樣很受歡迎,比如

James Kurose和Keith Ross合著的《Computer networking: A top-down approach featuring the Internet》也是一本不錯的網絡教材,它從應用層

開始講起,由上至下,由淺入深,適合於作爲學習用書。

其實這一版本的書和第三版區別不大,第四版主要是刪掉了第三版中講述ATM的部分,然後是將以前應用層中的安全部分作爲第8章重點講述,其餘的差別很小.個人認

爲第版還是相當不錯的完全順應了歷史潮流,ATM作爲已經或是將要被淘汰出局的技術,確實不用花太多的時間在上面.作爲當前網絡研究方面熱點的安全問題確實應

該重點講述.

本書講解詳盡,並儘量兼顧全面與重點突出之間的均衡,這種內容安排相信可以滿足大多數人的需求,應該說該書的特點就是內容全面,而且緊跟潮流,對典型的

技術案例做了重點剖析。

我覺得它寫的像一本大全類的書,什麼都說,結果什麼說的不痛不癢,有點像蜻蜓點水那樣子,像是簡介的書那樣,不深入,真的不深入,我還以爲外國老寫的書都是比

較風趣幽默的,不過好像看上去也不怎麼風趣幽默!還有失望的是,這麼大的一本書,在網絡硬件和網絡OS這方面的知識卻介紹的不多,結果我很多想查找也沒找到.
我覺得如果是初學者看這本書的話,不見的會很好,因爲這裏面只是一個簡介,忽略了一些細節的問題和各個原理/協議/標準之間在的聯繫和串通,忽視了一個整體的

網絡通信環境下的通信的怎麼開始,過程是怎麼樣,結果是怎麼樣,在這樣的一個過程中,各個原理/協議/標準的執行以及他們的細節問題,
總之我覺得這本書是把網絡的各個部分分塊了,沒有從整體上來講網絡的實現技術.所以我不建議初學者看着本書,但是當你不是初學者的時候,看這本書對你來說就

好像是在看網絡概論之類的入門書籍了,真是矛盾啊.

人說“一本好書帶來一個世界”,可這本書是“一個章節帶來一個世界”!作者的知識廣博讓人敬佩,第二章的傅立葉分析光幾句話就把以前學了一個學期信號課也不

甚了了的地方講清楚了

關於謝老的電子工業出版社的同樣名稱的書與這本書的對比:
強烈建議初學網絡的網友,去看謝老的那本書,謝老的那本書,寫作非常嚴謹,並解釋清楚了許多初學者或者是工作多年的仍混淆的基本概念,絕對稱得上字字珠

磯。關鍵在於謝老將一些老的網絡技術作了刪減,增加了不少當前熱門的網絡技術,可以說是一本跟得上時代的網絡教科書。
Andrew的這本有自己的特色,但我覺得在許多方面,比不上謝老的這本國產書。它的內容龐雜,該講清楚的地方沒有講清楚,初學者容易混淆的地方則一筆帶過,

看了這本書的人,也許要將這樣的混淆概念帶到以後的工作中去。這些方面的例子可以具很多。如:路由器的基本原理,謝老的這本就講得比較好。TCP協議流量

控制部分也是謝老的這本比較好。謝老的這本還將ALOHA的原理作爲附錄,從正文中刪除了,這也是適應網絡發展的要求。最短路徑算法如果看Andrew的,你很難

懂,但看了謝老的附錄裏的算法描述,一看就懂,還能明白Andrew沒講的內容。對於應用層協議,謝老的這本抓住重點,寫得簡明扼要,因爲讀者基本接觸過或學

到過應用層的一些協議原理。該細的細,該粗的粗。而andrew這本卻是眉毛鬍子一把抓,什麼都羅列來,什麼也沒講明白。特別是關於SNMP部分,沒有謝老的這

本條理清楚。
不多講了,我的意思在於:我們不要迷信外國作者所謂的暢銷書,其實國內作者寫的書比他們更好,我們應該從實際出發,選擇適合自己的書。
我看過謝老的前幾章,確實講的很清楚。如發送速率(傳輸速率)和傳播速率。很難得國內作者的書比國外好的。

我對比了兩者,覺得還是謝老師的書更加深入淺出,道理清楚,概念解釋的有針對性;而經典呢,似乎一下子難以讓人看進去,而且更像是一篇篇論文,並不解釋

太多的基礎概念和道理,講解的是技術。所以,我也建議初學者或者向我這樣的帶着工作中的疑惑去看書的人,還是買着一本;而有一定水平的當然看經典較好,

也可作爲收藏。

這兩本書各有側重點,寫書的目的不太一樣。謝老的這本書側重於網絡應用,講述了現有網絡的基本原理,側重於現有網絡的基本概念,寫得非常流暢,非常適合

有志於網絡應用的讀者,這也是國內寫得最好的一本網絡應用教程。
而Andrew的那本書,側重於講網絡的構成原理,適合於有志於網絡設計、網絡開發的讀者,其理念在於啓發你設計一個完整網絡所要考慮的問題。這本書不算是最

好的,但是一本百科全書(有點這個意思)。我的朋友在加拿大讀書,他們學校用的教材我也看了,比這兩本都要好,理論也講得比較深。
所以這兩本書各有側重點,但都是兩本比較好的書,讀者應該按照自己的發展方向來選擇所用的教材。

講解的非常詳細!對一項技術的優缺點,應用方向,不同技術,不同協議之間的比較都作了詳細深刻講解!與謝希仁的那本《計算機網絡》相比,這本書寫的更深

,知識面更廣!不過謝老這本知識結構緊湊,每個概念都給出嚴格定義,較好的把握了重點!所以我還是建議兩本一起看

和大家討論以下學網絡必看的一些書籍
我覺得這本和謝老的那本以及tcp/ip詳解應該是必看的
不知大家有沒有看過
機械工業出版的
計算機網絡: 自頂向下方法(原書第3版)  
是不是可列於必看之列
還有高傳善翻譯的一本網絡互連書
這些書都很經典

學網絡,要看的書出這本書以外,還有謝希仁的同名的書,當然《TCP/IP祥解:卷一:協議》也是必不可少的。
我的感覺是這本書是一個非常好入門及提高階段,而《TCP/IP祥解:卷一:協議》則是精通必需的。
謝老的書是對這兩本書的不錯的結合。但深度不及這兩本書。

網絡是一個非常大的概念,不可能在一本入門教材裏講得很深入徹底。如果您想要了解那些advanced topic背後的基本原理:如果要學習BSD Socket可以看

rstevens的書,要學習Internet協議可以看Stevens寫的TCP/IP Illustrated和Comer的TCP/IP網際互聯,要學習分佈式對象系統可以看《分佈式系統原理

》,要學習協議的形式化驗證方法可以看林闖的書……等等

Stevens寫的TCP/IP Illustrated和Comer的TCP/IP網際互聯跟“計算機網絡”這本書是互補的。前者針對TCP/IP,後者講網絡原理。

比較經典的計算機網絡首先推崇的是Richard Steven的書,tcp/ip illustrator三卷;那個時候還流行過Douglas Comer教授的 "internetworking with

tcp/ip 三卷。


--------------------------------------------

操作系統

--------------------------------------------
現代操作系統 (第2版)          
 
【原書名】 現代操作系統(英文版.第2版) [原書信息]  
【作者】 (荷)Andrew S. Tanenbaum  
【譯者】 陳向羣 馬洪兵  
【叢書名】 計算機科學叢書  
【出版社】 機械工業出版社  
http://www.china-pub.com/computers/common/info.asp?id=25383
http://www.china-pub.com/computers/common/info.asp?id=4802 [英文版]

Andrew S.Tanenbaum ,學界泰斗
五大名著,橫跨三個基礎領域:
操作系統:設計與實現;分佈式操作系統;現代操作系統;計算機網絡;結構化計算機組成
思路清晰,以發展爲主導,注意啓發式引出問題,不僅是計算機專家,亦是教育大家

操作系統領域的經典之作,已被國外多所重點大學採用爲教材或作爲教學參考書。通過學習本書,讀者定能對操作系統的功能與實現技術有全面的瞭解。

《操作系統概念(6)》和《現代操作系統(2)》,這兩本書都是很經典的操作系統書籍

兩本都是最經典的,但是,我覺的這本內容細一點,雖然操作系統概念容易讀些,但是分佈式部分太範,且io和文件部分個人覺的內容有些泛了,有些佔篇幅了,而這本

是每張都有結合實例,理論也有深度,去掉了分佈式。尤其是《操作系統概念》分佈式部分,點了又不深入,分佈失算法思想只給了個綱要,拜占庭問題更是粗略,

分佈式部分就象《現代操作系統一樣》該去掉的!

內容很好,比operating system concept要詳細深入,如果再有本《操作系統設計與實現》2版,參考參考minix實現,那就是絕配了!

所以這本書要比操作系統概念好,爲啥很多人看<<操作系統概念>>好呢,那是因爲將的比較容易懂,我看<<操作系統概念>>用了5天,看小說一樣,它的很多東西都是

點到爲止,雖然是有收穫,但看完了,還要參考<<現代操作系統>>

這本應該更好些,<操作系統概念>部分講的並不好,只讓人對操作系統結構的整體概念有個瞭解,深度就比不上modern operating system了,我兩本都看了,比如

io,文件等部分,很多的關鍵數據結構都沒有給出來

我是University of Melbourne的。我學OS這門課程時用的就是這本書作爲textbook,非常經典。另外,我們也要閱讀:《Operating System Concepts

6th》,《The design of the UNIX Operating System》,《Inside Windows2000》,《The Unix Internals》和《Operating Systems:A Modern

Perspective》等和一些論文。

如果我們在上個世紀九十年代初就能看到這樣的好書,現在世界上就會多出個Chinux也說不定。呵呵,不過此書的確經典。

有了minix的書和《understanding linux kernel》這本書不買也罷,不過有錢和有時間看看還是值得。總比國內的什麼湯的教材好多了。

============================================

--------------------------------------------
數據庫

--------------------------------------------
數據庫系統概論


============================================


--------------------------------------------

程序設計

--------------------------------------------

計算機程序的構造和解釋(原書第2版)

【原書名】 Structure and Interpretation of Computer Programs,Second Edition 
【原出版社】 Massachusetts Institute of Technology  
【作者】 (美)Harold Abelson,Gerald Jay Sussman,Julie Sussman  
【譯者】 裘宗燕  
【叢書名】 計算機科學叢書  
【出版社】 機械工業出版社 

http://www.china-pub.com/computers/common/info.asp?id=17992

【參考資料】
相關網站有本書源代碼及其他教輔資料,網址爲:www-mitpress.mit.edu/sicp/

mitpress公開的在線瀏覽版本
http://mitpress.mit.edu/sicp/full-text/book/book.html

the homework answer
http://inst.eecs.berkeley.edu/~cs61a/hw/index.html
http://www-inst.eecs.berkeley.edu/~cs61a/sp06/

作者授課錄像下載
http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

UC Berkeley的教學錄像(Spring 2004):
http://webcast.berkeley.edu/courses/archive.html?prog=40&group=57

最省事的scheme環境,初學推薦
http://www.drscheme.org/

The Scheme Programming Language, 2nd Edition
?; 1996 Prentice Hall
http://www.scheme.com/tspl2d/

備查
http://www.schemers.org/Documents/Standards/R5RS/

更多關於scheme
http://www.schemers.org/
http://www.swiss.ai.mit.edu/projects/scheme/index.html
http://readscheme.org/
http://dmoz.org/Computers/Programming/Languages/Functional/
http://directory.google.com/Top/Computers/Programming/Languages/Functional/


http://lambda-the-ultimate.org/

http://www.ai.mit.edu/research/publications/publications.shtml

開放式課程計劃OOPS
http://www.cocw.net/
  
【評論】 
紫皮書(Purple Book)!巫師書!!SICP!!!TheBook!!!!
四個名字都是這本書的暱稱,“紫皮書”是因爲書皮是紫的,“巫師書”是因爲書皮上印着一男一女兩個巫師模樣的人,“SICP”就是書名幾個單詞的首字母,“

TheBook”是因爲這本書是在scheme領域內公認的聖經,所以有此暱稱

絕對是好書, 非常具有啓發性.
把編譯器、算法、硬件的的內容用Lisp語言聯繫起來。


次書是我學習CS的第一本教材(MIT的6.001),非常好。

Its the Best! Its the Worst! Why the split?, May 8, 2000
Reviewer: Peter Norvig (Palo Alto, CA USA) - See all my reviews
    
I think its fascinating that there is such a split between those who love and hate this book. Most reviews give a bell-shaped

curve of star ratings; this one has a peak at 1, a peak at 5, and very little in between. How could this be? I think it is

because SICP is a very personal message that works only if the reader is a computer scientist (or willing to become one). So

I agree that the book's odds of success are better if you read it after having some experience.
To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are

built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are

the ones who just want to know how to drive their car on the highway, just like everyone else.
if you want to be a real professional, you should read this

Donald Knuth says he wrote his books for "the one person in 50 who has this strange way of thinking that makes a programmer".

I think the most amazing thing about SICP is that there are so FEW people who hate it: if Knuth were right, then only 1 out

of 50 people would be giving this 5 stars, instead of about 25 out of 50. Now, a big part of the explanation is that the

audience is self-selected, and is not a representative sample. But I think part of it is because Sussman and Abelson have

succeeded grandly in communicating "this strange way of thinking" to (some but not all) people who otherwise would never get

there.

Those who hate SICP think it doesn't deliver enough tips and tricks for the amount of time it takes to read. But if you're

like me, you're not looking for one more trick, rather you're looking for a way of synthesizing what you already know, and

building a rich framework onto which you can add new learning over a career. That's what SICP has done for me. I read a draft

version of the book around 1982 and it changed the way I think about my profession. If you're a thoughtful computer scientist

(or want to be one), it will change your life too.

Some of the reviewers complain that SICP doesn't teach the basics of OO design, and so on. In a sense they are right. The

book doesn't directly tell you how to design and write an object-oriented program using the subset of object-oriented

principles that show up in the syntax of Java or C++. Rather, the book tells you what those principles are, how they came to

be selected as worthwhile, how they can be implemented from the ground up, and how a different combination of principles

might be more appropriate for a particular problem. This approach requires you to understand the range of possibilities, and

to think about trade-offs as you go through the design process. Programming is a craft that is subject to frequent failure:

many projects are started and abandoned because the designers do not have the flexibility, experience and understanding to

come up with a suitable design and implementation. SICP gives you an approach that will succeed, but it is an approach based

on principles and wisdom, not on a checklist. If you don't understand the principles, or if you are the kind of person who

wants to be given a cookbook of what to do rather than to think creatively, or if you only want to work on problems that are

pretty much like the problem you worked on last time, then this approach will not work for you. There are other approaches

that will be more reproducible for a limited range of simple problems, but there is no better way than SICP to learn how to

address the truly hard problems.

The Classic, May 20, 2000
Reviewer: paul graham (Cambridge, MA United States) - See all my reviews 
This is one of the great classics of computer science. I bought my first copy 15 years ago, and I still don't feel I have

learned everything the book has to teach.
I have learned enough to write a couple books on Lisp that (currently) have four to five stars. Yet SICP, which is pretty

much the bible of our world, has only three? How can this be?

Reading the reviews made it clear what happened. An optimistic professor somewhere has been feeding SICP to undergrads who

are not ready for it. But it is encouraging to see how many thoughtful people have come forward to defend the book.

Let's see if we can put this in terms that the undergrads will understand -- a problem set:

1. Kenneth Clark said that if a lot of smart people have liked something that you don't, you should try and figure out what

they saw in it. List 10 qualities that SICP's defenders have claimed for it.

2. How is the intention of SICP different from that of Knuth? Kernighan & Ritchie? An algorithms textbook?

3. Does any other book fulfill this purpose better?

4. What other programming books first published in the mid 1980s are still relevant today?

5. Could the concepts in this book have been presented any better in a language other than Scheme?

6. Who is al? Why is his name in lowercase?

讀書時曾經讀過William R. Cook的文章《Object-oriented programming versus abstract data types》,當時對文章中的觀點有些疑惑,當我讀到

2.4抽象數據的多重表示時,頓時豁然開朗,作者談及數據導向的程序設計和可加性時給出的圖2-22複數系統的操作表與William R. Cook文中的觀點非常接近。

確實是好書。好書慢慢讀,如品茶、品酒,回味無窮。

如果想對書中所用的Scheme語言做進一步瞭解的話,可以在 http://www.drscheme.org/  下載DrScheme解釋/編譯器。Scheme語言雖然另類及實際用途有

限,但卻有較高的“可玩性”,主要表現在它對幾類編程語言範例(paradigm) -- 過程型/面向對象型/函數型/邏輯型 -- 都能做出良好表達。

說起Comp.Sci.的讀物,其實除了TAOCP、CLR外還有一本經典叫作 SICP (Structure and Interpretation of Computer Programs,俗稱“紫皮書”或“巫

師書”)。MIT和UCBerkeley兩大學府都指定這本書作爲計算機科目的入門教材。它涉及的不是具體的數據結構和算法,而是對“計算機程序”這個概念本身的解構

/解讀。“程序即思維表達”是此書傳遞的一個意念。由於涉及的是程序設計的抽象層面,批評者會認爲這本書不夠實用(這在amazon.com上讀者書評中的分歧可

見一斑),但事實上很多頂尖的程序設計師都認爲正是這本書幫他們“開了竅”,是一本具有高度啓發性的經典。

我很喜歡SICP,但是要說推薦給出版社我卻很猶豫。原因是雖然這本書追問編程的本質,對有科學探索氣質的人很有吸引力,但是對於大部分忙碌的程序員來說,

恐怕覺得沒有時間慢慢體會它的好處。這本書用LISP的變體SCHEME語言講事,國內對於主流語言趨之若騖的大多數人恐怕不買帳。
    對於曲高和寡的著作,出版社引進就會蝕本。好在有在線版本,喜歡的人自可以免費閱讀。

============================================

程序設計語言--實踐之路(圖書館必藏經典,程序員必修祕笈,全球上百所大學列爲標準教材和首選參考書)         
 
【原書名】 Programming Language Pragmatics  
【原出版社】 Morgan Kaufmann  
【作者】 Michael L.Scott  
【譯者】 裘宗燕  
【出版社】 電子工業出版社 

http://www.china-pub.com/computers/common/info.asp?id=22979

【參考資料】
作者主頁:
http://www.cs.rochester.edu/u/scott/
http://www.cs.rochester.edu/u/scott/pragmatics/adopters.html
  
On-line Resources:
http://www.cs.rochester.edu/u/scott/pragmatics/
  
原書圖片資源下載:
http://www.cs.rochester.edu/u/scott/pragmatics/figures/

勘誤表:
http://www.is.pku.edu.cn/~qzy/books/pragmatics/errata.htm

【評論】

創新性地將程序設計語言的設計與實現和編譯器設計有機結合的實用教本。國外大受好評的程序設計語言教本,被全球上百所大學、學院列爲標準教材和首席參考

書目 !這是一本很有特色的計算機程序設計方面的教材,它的核心是討論程序設計語言如何工作的問題,它是程序設計語言和編譯的傳統教科書的混合,再加上一

些有關彙編層體系結構的材料,或以滿足那些沒有學過計算機組織的學生和需要。它不是綜述性語言的教科書,沒有列舉不同語言的細節,而集中通過各種語言的

例子闡釋其基礎概念。本書也沒有解釋如何構造一個編譯器,只是解釋編譯器如何工作,它對源程序做了什麼,以及爲什麼要那樣做。 本書在美國使用已有十餘年

,用於講授一門名爲“軟件系統”的課程,適合高年級的本科生和一年級的研究生使用,書的內容對專業程序員也很有價值。

------------------------
王詠剛《接受程序設計語言的再教育》
http://www.china-pub.com/computers/ebook20001-25000/22979/wz1.doc
再教育?沒錯。依個人愚見,大多數中國程序員都需要接受一次有關程序設計語言的再教育,而Michael L.Scott所著的《程序設計語言??實踐之路》則可以成

爲這次再教育中的最好讀本之一。 
  對於那些沒時間重溫大學課程的上班族來說,這種補習最好從《程序設計語言??實踐之路》開始。即便不能把這本八九百頁的“大部頭”全部讀完,你也至少能

在閱讀過程中明白三個看似淺顯、實則微妙的“大道理”: 
  其一,語言必須與環境相結合,才能發揮出最大的功用。這裏所說的“環境”通常包括編譯環境、運行環境和應用環境三個方面。舉例來說,如果你打算仿照着

某些開源框架的做法,使用控制反轉和依賴注入技術消除代碼中某些讓人生厭的依賴關係,你一定會認真研習實現類似技術的語法特徵,但你未必會主動思考以下

幾個問題:在編譯層面,使用了這些語法特徵的代碼是否會影響到最終生成的目標代碼質量?在運行層面,該如何組織這些語法特徵,才能讓使用了相關技術的可

執行程序在支持廢料收集的併發環境下有不俗的表現?在應用層面,這些旨在消除依賴關係的技術會不會破壞新、舊模塊間的平衡關係,以至於我們必須花上大量

時間改寫原有的代碼或接口才能保證系統的平滑升級?全面思考這些與環境相關的問題並不一定會改變你的抉擇,但它卻可以幫助你找到效率、可靠性和可用性之

間的最佳平衡點。在此方面,《程序設計語言??實踐之路》一書所使用的,將程序設計語言與編譯原理、面向對象等知識綜合起來、融會貫通的做法不但可以節省

我們分類學習的大量時間,還可以訓練我們從整體出發、多角度思維的方式與方法,其價值不言而喻。 
  其二,程序設計語言本身所具有的多樣性可以成爲我們提高軟件開發水平的最佳指南。說到這裏,我又想起了那些充斥在各大技術網站的,題爲“某某語言比某

某語言更強大”或“某某語言已死,某某語言必勝”的帖子。發表這些帖子的帖主也許並不懂得,程序設計語言的世界本來就是一個多樣化的、五彩繽紛的世界,每

一種成功進入應用、教學或科研領域的程序設計語言都有它值得學習和借鑑的地方。如果僅僅根據個人的喜好或是響應時尚的號召,就盲目地吹捧某一種語言並貶

低其他所有語言,這樣的帖子和那些頻繁出現在Fans網站上的“愛死某某某,恨死某某某”的帖子有什麼本質的不同?更爲重要的是,如果我們能夠在《程序設計語

言??實踐之路》的指下,真正懂得了函數式語言、數據流語言、邏輯式語言、馮?諾伊曼語言、面嚮對象語言等不同的語言類型在語法設計、編譯器設計和運行環

境設計方面的異同,我們就會驚訝地發現:Scheme語言的lambda表達式可以在C 語言中優雅、高效地解決諸如面向契約設計之類的複雜問題;Ada95語言中提供

的同步和保護機制可以爲那些使用Java編寫的多線程應用提供重要的參考;Smalltalk語言與編譯和運行環境的緊密結合則可以爲我們設計可擴展的JavaScript

宿主提供最好的借鑑……從這個意義上說,學習一種語言的意義絕不在於爲自己增添一種求職和謀生的手段??真正善於學習的人總能從每種語言的設計和實現中找到

許多可用於提高編程水平的關鍵特徵。 
  其三,使用特定語言編寫出來的代碼是否優雅、可靠,這主要取決於程序員對各種基本理念和基本原則的認知程度,而不取決於程序員記住了多少複雜的語法

特徵或學會了多少流行類庫的用法。正如《程序設計語言??實踐之路》所說的那樣,“典型的C 程序員都極少使用聯合、多重繼承、變動個數的參數,或者. 運算

符”,但是,如果你瞭解了隱藏在這些複雜語法特徵背後的東西??如內存空間的分配和尋址方式,複本式繼承和共享式繼承之間的關係,參數傳遞和求值順序,動

態方法約束和成員查找,等等??你就可以在需要使用這些語法特徵的時候滿懷信心地告訴自己:“嘿,這不過是某某原則或某某技術在C 語言中的表現形式罷了,

我能搞定它!”反之,如果你不曉得與數據結構和算法相關的代碼在編譯、運行時必然存在的各種均衡與折中問題,即便你把C 語言的標準文檔背得滾瓜爛熟,即

便你可以默寫出System.Collections命名空間中的所有屬性和方法,你也會在體驗過自己開發的軟件與成熟軟件之間的差別後大發感慨:“同樣是使用C 語言,

爲什麼我寫的程序總會從頭到腳散發着‘業餘’的氣味兒呢?” 
  關於程序設計語言的本質,Michael L.Scott是這樣說的:“就像自然語言限制着人們解釋和論述的方式一樣,程序設計語言也限定了什麼可以表達,什麼不

能表達,並對程序員能夠怎樣思考問題有着深刻而微妙的影響。”既然如此,我們還猶豫什麼呢?與其後悔在學校中虛度了光陰,還不如馬上捧起《程序設計語言?

?實踐之路》這本書,接受一次有關程序設計語言的再教育呢!

Yupo:
這本書的作用有限,並不是所有編程的人都必須看的書。對於非計算機專業的人而言,完全可以不看此書。對於一般的計算機應用程序(指比較高層的應用)的開

發者而言,只需要知道如何使用程序設計語言編程就足夠了。此書評的作者用不作爲了擡高此書而這樣來貶低他們。這樣貶低他們只能說明自己的無知。程序設計

語言只不過是一種工具,就像自然語言是用來交流的工具一樣。應用程序的編寫者有自己的專業,他需要的只是如何使用編程語言來實現自己的設計,而不需要去

深究語言的實現機制。比如說,用Fortran語言編寫科學計算程序的人,並不需要知道語法分析、代碼生成等編譯過程,一樣能很好地實現自己的設計。這些東西

對他們而言是額外的知識,而不是必須的知識。
本書評作者通過貶低不懂編譯實現機制或底層實現機制的人來擡高此書實在沒有必要。如果真有誰曾“試用了28種開源框架和69種eclipse插件”,我想他一定不是

等閒之輩,也一定不會“仍不清楚自己眼前的垃圾代碼該如何“重構””。在工作中或研究中能做到這樣的人,一定是一個認真的人,他肯定不會需要進行這麼多嘗試

便早以解決好了自己的問題。反過來,我也沒有看到“28種開源框架和69種eclipse插件”與學習本書之間有什麼必然的聯繫。也不懂“自己眼前的垃圾代碼該如何“

重構””這句話的含義。既然是“垃圾代碼”還要“重構”幹什麼,這裏的“重構”又是什麼?莫名其妙。
編寫應用程序的人在寫程序時是無法自己決定如何使“語言與環境相結合”的,這不是程序設計者的任務,而是編譯器的實現者的任務。書評者對着假想的一羣應用

程序設計者,給他們規定毫不相干的任務,然後極力推薦他們看此書,搞錯了對象。真有點好笑。
要寫書評也要寫在點子上。不要在自己還未懂得書中的內容時(我相信他根本就沒有好好看過此書),就盲目地炒作。

《程序設計語言??實踐之路》一書講述的核心內容是程序設計語言的“語用學”,它的重點既不是語言,也不是編譯。這裏所謂的“語用”是指編程語言變成可以在計

算機上真正運行的程序所需要的環境、它的實現機制以及原理。與自然語言中的語用學討論的問題是類似的,只不過涉及的“世界”不同。但是,由於將源程序變成

可執行程序需要由編譯器來實現,因此其中的很多問題都與編譯器有關。但是,它關心的不是特定的編譯算法和編譯器的實現方法,而是程序設計語言與底層計算

機體系結構的對應關係。例如,程序設計語言中的作用域和存儲綁定、數據類型、過程調用、控制流等概念在計算機中是用什麼方法來表示的?如用棧表示局部作

用域,用堆來實現動態申請的空間。爲此,編譯器要適當組織符號表正確地實現這種從概念到實例之間的映射。又如與函數調用相關的概念是如果實現的?例如,

形式參數如何與實在參數相結合?如何實現從一個函數的內部訪問在該函數之外聲明的變量?如何實現導入、導出的訪問?等等。爲了在計算機上正確實現這些概

念,編譯器必須遵循特定機器的有關調用約定,如寄存器使用約定、參數傳遞約定,棧幀的佈局約定,等等。這些問題都可以拋開編譯器而單純從實現機制上來討

論。事實上,它們都是編譯器的設計者在實現一個編譯器之前,必須在頭腦中事先便明白的知識。學習這本書,對於深刻理解程序設計語言的行爲實質是很有幫助

的。不論你專注於計算機的哪個方面,網絡、應用還是底層的系統軟件,這本書都會對你有好處。對於有興趣研究編譯器的人而言,則更是必備的知識。
  本書並不深奧,講的都是基本的東西,學起來應當不難。
  另外要補充一點的是,我認爲書名譯得不是太好,這個名字沒有突出“語用學”,而事實上“語用學”是本書的重點。其實就翻譯成《程序設計語言語用學》就可以

,不要搞華而不實的標題,而且還沒有點中要點。更爲不當的是封面設計,將“程序設計語言”用了那麼大的字體,搞不清楚的還以爲是專門講程序設計語言的書。


-----------------------

其實本書很大程度上就是 編譯原理 的教材;而我學過編譯原理,用的是 龍書 ,並且實現了一個小型的編譯器;書不錯,但對編譯原理學的很好的讀者並不適合,重

復了,深度上不如 龍書.

書的價值之所在:創新性地將語言設計與編譯原理兩門課程的內容融合在一起,將兩門在傳統上分割開來的學科融會貫通,徹底打破我們在學習中產生的不連貫性

國外教改,國內現狀:美國ACM和IEEE/CS最新制定的《Computing Curricula 2001》課程體系,反映當代計算機科學與技術學科發展水平和計算機科學技術的

新進展、新技術。編譯器的編寫曾是計算機學科中的核心課程, 但現在越來越多的人認爲並非每一個計算機專業的學生都需要具備設計編譯器的能力, 這項工作應

屬於編譯器的設計專家. 去除了這項課程後, 可以在課程表中填充如下內容, 如軟件工程、 數據庫工程或其他一些關於計算機科學技術實際應用的課程。但,

cc2001中也明確指出,學校有必要開設一門關於程序設計語言原理的課,主要講授各種常見語言的設計。本書就是這樣一本講編譯原理嵌入到程序設計語言的各種

設計方案的佳作。她的每一章講授一種設計方案,同時結合一種典型語言。另外她加入了計算機底層的東東,確實不錯。國內很多院校都取消了編譯原理課,取而

代之的是程序設計語言概論。

經常看書買書的,都知道裘老師的翻譯質量是沒的挑,博文的出版編輯也是十分負責。本書保留了索引,這對於書迷的重要性我就不多說了。

真心希望以本書爲契機,多多引進國外的優秀教材,把先進的設計理念帶入國內。同時也希望我們能有自己的精品圖書品牌,多出版優秀國內原創,提高國內教學

和技術水平。

這本書中的內容可以說覆蓋面很廣,但是卻很浮淺,有些甚至是聊聊數語帶過。對於語言機制、哲學、分類、數學基礎的介紹也不深刻。充其量也就是一本語言分

類學的概觀和淺顯介紹。所謂館藏精品以及接受再教育實在是言過其實了。
這本書就是一本典型的程序設計語言概論性的書,其中雖然涉及了一些編譯方面的知識,但只是從程序設計語言的角度來較爲深入地探討其實現,與編譯原理不是

一個概念。

這是一本知識濃縮度相當高的教材,它所覆蓋的知識面相當的廣泛,它可以作爲自動機原理、彙編語言、編譯原理、數據結構、計算機組成原理等計算機專業課程

程的參考書,也可以爲電子信息工程、通信工程和信息技術等專業的學生提供幫助。本書並沒有具體的講解某種程序設計語言,但其講述的一般原理,是任何一種

程序設計語言都必不可少的。本書從計算機的硬件、設計、原理和實現上都做了詳細的闡述,是一本難得的綜合教材。由於本書綜合的內容比較多,在具體的某些

方面講得不是很細,但是對於作爲教材來講,確實是一本經典之作。特別適合研一的學生來閱讀。

程序涉及語言的書,這幾年各出版社出了一批:
Ravi Sethi 的《程序設計語言:概念和結構》;
Robert W. Sebesta的《程序設計語言原理》;
Kenneth C. Louden的《程序設計語言??原理與實踐》;
Terrence W.Pratt和Marvin V.Zelkowitz的《程序設計語言:設計與實現》。
這些書的作者從各個角度介紹程序設計語言,相信大家看了後定會大有收穫。這些書中的有些已有二、三十年的歷史,出了五、六版,及時反映程序設計語言。這

些書沒有哪本標榜“圖書館必藏經典,程序員必修祕笈,全球上百所大學列爲標準教材和首選參考書”。特別是提到“程序員必修祕笈”,好像讓人得到武功祕籍一樣

,使人反感。這世界沒有萬靈藥,沒有哪本書標榜自己怎樣怎樣的,只不過是一本書而已。不同的作者有不同的觀點,不同的書有不同的寫法,各取所需。
遺憾的是,大家查不到高教去年出的John C.Mitchell的《程序設計語言概念(影印版)》,大家如果看了該書後自會有另外一種感受。作者的網站爲

http://theory.stanford.edu/people/jcm/

這本書創新性地將語言設計與編譯器原理融合在一起,讓學習者可以更清楚地明白兩者之間的關聯,是難得的優秀教本。推薦有興趣深入學習程序設計語言的人士

研究一下。

本書號稱創新性的將程序語言設計與編譯器的設計有機結合.
但是,我覺得此書中關於[編譯器的設計]僅僅是些編譯原理的基礎知識,而且還不夠詳細,[程序語言的設計]更是泛泛而談.諸如[深入理解計算機系統]對這種大而

空洞的主題都有所闡述;[C++的設計與演化]纔是探討某專門語言設計的典範.
譯者和著者都不錯,書的內容也很規矩;但說是經典就有些勉強

其中牛校少了點,像MIT、Stanford、UCBerkeley、CMU、UIUC等一等一的都沒有。不過這個作者的確是本領域的大拿。

這本書結合編譯系統,很好的探討了設計程序設計語言中需要考慮到的很多問題。是一本不錯的書。

這本主要還是集中在語言方面。你說的《深入計算機系統》其實與博文視點要出版的另外一本 Write Great Code Vol.1(The Art Of Assembly Language

作者最新系列傑作) 有一定的相似性。:-)

每章最後都有一些複習題和一些更具挑戰性的練習。這些練習的特別價值在於引導學生理解各種語言或者技術,其中許多都是他們不大會在其他地方遇到的,或者

不會很快遇到的。我建議程序設計作業用C++或者Java;Scheme、ML或者Haskell;以及Prolog。佈置一個有關異常處理的題目也是非常好的想法,它可以用

Ada、C++、Java、ML或者Modula-3寫。如果課程裏包含了並行性,作業應該在SR、Java、Ada或者Modula-3裏給,可以根據本地的條件選擇。在附錄A裏給出

了各種語言實現的資源信息。 
  除了這種小型課題之外(或者在那些希望的地方),教師還可能希望學生做一些語言實現方面的工作。由於從空白開始做一個小編譯器也是一個學期的工作,

Rochester採用的方式是給學生提供能工作的編譯器的代碼,要求他們做些修改。對於其中的許多人,這是他們第一次閱讀、理解和修改一個大的實在的程序??就

其本身而言也是非常有價值的練習。Rochester的PL/0編譯器把一個歸功於Wirth[Wir76,307-347頁] 的小語言翻譯到MIPS I彙編語言,這一彙編語言被廣泛

認爲是商品的RISC指令集中“最友好的”。威斯康星大學計算機系提供了一個非常好的MIPS解釋器(“SPIM”,www.cs.wisc.edu/~larus.spim.html)。編譯器

本身可以從Rochester得到(ftp://ftp.cs.rochester.edu/pub/packages/plzero/)。它是用C++寫的,仔細劃分了各個編譯階段,並有很詳盡的文檔。
--------------------------------------------

計算機體系結構

--------------------------------------------

深入理解計算機系統(修訂版)        

【原書名】 Computer Systems A Programmer's Perspective 
【原出版社】 Pearson  
【作者】 (美)Randal E.Bryant; David O'Hallaron  
【譯者】 龔奕利 雷迎春  
【叢書名】 國外經典計算機科學教材系列  
【出版社】 中國電力出版社  
http://www.china-pub.com/computers/common/info.asp?id=18133
http://www.china-pub.com/computers/common/info.asp?id=18384 [英文版]

【參考資料】
Web網站:實驗和作業,授課筆記和代碼示例
csapp.cs.cmu.edu

Manuscript 
http://csapp.cs.cmu.edu/public/manuscript.html

本書2003年版的勘誤
http://csapp.cs.cmu.edu/public/errata.html

中文版勘誤:
http://vega.ict.ac.cn/personal/lyc/CSAPP_errata.htm
[email protected]

本書相關資料
http://csapp.cs.cmu.edu/
有一些內容需要是經過認證的教師纔可以
http://csapp.cs.cmu.edu/public/loginrequest.html

http://mprc.pku.edu.cn/~quning/ComputerSystems.pdf

第4章的SEQ,SEQ+,PIPE模擬器下載
在學生站點:http://csapp.cs.cmu.edu/public/students.html
具體的壓縮包的鏈接爲:
源代碼:http://csapp.cs.cmu.edu/public/sim.tar
二進制文件:http://csapp.cs.cmu.edu/public/y86binaries/y86-linux.tar
使用說明:http://csapp.cs.cmu.edu/public/simguide.pdf

本書10個實驗的資料和源代碼下載(2003年後課程不提供實驗源代碼下載了)
15-213: Introduction to Computer Systems
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f02/
15-349: Introduction to Processor Design
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15349-s02/


【評論】

“我堅信從程序員的角度來看計算機系統對教會學生們計算機的內部結構非常有幫助。” ——Kostas Daniilidis,賓夕法尼亞大學 
“這本書講述事物的方法與衆不同,但是和我想要的課程進行方式類似。” ——John Greiner,Rice大學 
“這是一項出色的工作,是這一領域教學方法的一次革命。” ——Michael Scott,羅切斯特大學

程序員的視角
本書適合那些想要寫出更快、更可靠程序的程序員閱讀。通過掌握程序是如何映射到系統上,以及程序是如何執行的,讀者能夠更好地理解程序的行爲爲什麼是這

樣的,以及效率低下是如何造成的。粗略來看,計算機系統包括處理器和存儲器硬件、編譯器、操作系統及網絡互聯環境。而通過程序員的視角,讀者可以深深地

體會到學習計算機系統的內部工作原理會對他們今後作爲計算機科學研究者和工程師的工作有進一步的幫助。它還有助於爲進一步學習計算機體系結構、操作系統

、編譯器和網絡互聯打下基礎。
本書的主要論題包括:數據表示、C程序的機器級表示、處理器結構、程序優化、存儲器層次結構、鏈接、異常控制流、虛擬存儲器和存儲器管理、系統級I/O、

網絡編程和併發編程。書中所覆蓋的內容主要講述這些方面是如何影響應用和系統程序員的。例如,在講述數據表示時,本書提出了用來表示數字的表示方法是有

限的,它能夠近似地表示整數和實數,但是這種表示方法是有限制的,程序員必須瞭解。在講述高速緩存時,本書討論了矩陣代碼中的循環變量的順序是如何影響

程序的性能的。在討論網絡互聯時,本書描述了併發服務器如何有效地處理來自多個客戶端的請求。
?本書被讚譽爲價值超過等重量共金的無價資源寶庫
?第一本將軟件和硬件理論結合講述的教程
?覆蓋計算機導論、體系結構和處理器設計等多門課程

這本書的最大的特色在於它將體系結構,編譯,OS結合起來講,使人產生對系統的俯瞰的感覺,對於那些想深入理解計算機內部工作機理的人,這幾乎是最佳的一

本書。

深入理解計算機》是一個橋樑,它幫我們找到一種途徑使上層應用和底層的硬件實現保持一種聯繫。當你真的很理解《深入理解計算機系統》中的內容的時候,自

然也就想看更深的內容(也就是說,你該買pattern的書了)。

Randal E. Bryant,是計算機屆的一位老前輩,他主寫的《深入理解計算機系統》是他深厚的計算機技術沉澱後的精華,概念淺顯易懂。希望在40歲以前還能碰

到這樣一本能讓我心動的書。呵呵,40歲以後,自己就要開始學習沉澱了。我個人覺得,書的作用可以幫你迅速熟悉一個領域,幫你去了解這個領域的概念。如果

你能通過一本書,去區分混淆的概念,就非常好。要想深入下去,Paper和Maillist是必不可少的。我是很喜歡讀Maillist,那些作者都是一線工作的戰士,他

們討論的問題是書和Paper上沒有涉及到的,有時候是會顛覆我們的固有看法。98年、99年和00年,我就是通過讀maillist熟悉Linux kernel的。呵呵,現在

市面上有大量的關於Linux kernel的書,但書上大都告訴你的是“它就是這樣設計的”,而不會去討論“它爲什麼這樣設計”。你發現這個現象了嗎?所以,即使我

們看完一本Linux Kernel的書,也只是知道一些東西,而很少獲得它存在的理由,和別的一些實現選擇。
我想說的是在mailinglist中可以找到許多書本中沒有的threads,這些threads可能不是很嚴謹,但確實能告訴我們他們爲什麼這樣設計,他們做了那些考慮,

我覺得這很重要。

尤其是第4章和5章的知識,不可能讓初學者弄懂  這本書難度係數很高,並不是向書上說的只要會點C就可以了的
”深入理解“  應該還是恰如其分的。  比如 降到程序鏈接那塊, 很多書裏面都講的不深或乾脆不講。 強烈推薦。

------------------------
(個人觀點,僅供參考)
一、總體:
  1.1 本書特色在於很多內容從硬件角度說明,但不適合初學者;
  1.2 硬件方面的內容並不詳細,最好結合微機原理一起理解;
  1.3 偏軟的內容深度顯然不足,抄的內容更多,如第3章、第8章、第11-13章,可能這方面比較固定,作者心得也不多,有用內容很少,建議不用看,非看的話

就去看專門介紹的書;
  1.4 整書想把硬件原理、編譯原理、操作系統、流行軟件編程都揉到一起,大而不太精,而且基礎性章節講得不清,如第3章的Linux彙編語言和第7章的鏈接;
  1.5 感覺受益的章節,第5章 優化程序性能、第6章 存儲器層次結構、第9章 測量程序執行時間;

二、分章
 第3章 程序的機器級表示
   基礎章節,講Linux的彙編語言,講得不清楚,不如看專門的介紹書籍;
 
 第4章 處理器體系結構
  (沒看)

 第5章 優化程序性能
   從硬件角度上闡述優化的原理,有例子,很不錯,建議細看;

 第6章 存儲器層次結構
   存儲原理和利用其特性的優化方法, 優化方法說到底就是局部性問題,用了不少內容簡述,建議看;

 第7章 鏈接
   當然沒有編譯原理書介紹得清楚,不如結合起來看;

 第8章 異常控制流
   介紹UNIX的異常機制,全軟,算是轉述的內容,也即抄的內容;

 第9章 測量程序執行時間
   介紹本書推薦的方法,基於得到的測量數據進行的k次統計擬合得到的時間測量方程式,最後找到穩定的方程式參數值,然後再使用這些值來測量執行時間(個

人的總結和理解)

 第10章 虛擬存儲器
   操作系統原理,不如看Windows操作系統原理的書,算是搬過來的內容;

 第11~~13章 系統級I/O,網絡編程,併發編程
   純軟件的內容,建議不用看,基本全抄,要看去看專門的書。


三、結束
  因此,本書沒有那麼神,儘管角度新穎但不能保證它的所有內容都是作者的全部心得。如果你有微機原理、操作系統、編譯原理、軟件編程等基礎,這本書真正

值得看的不過小几章。而如果你沒有上述的理論基礎,可以看這本書,但最好不要看,因爲不繫統,還是去看系統介紹的書好。
------------------------


我仍然認爲它對於想學好計算機(不管是偏軟還是偏硬,當然更偏軟一些)的人來說是一個非常大的幫助。它對信息在計算機中的表示,C語言的實現等都有深刻而

明瞭的講述。可以說,它會給你學習計算機方面知識有一種茅塞頓開的感覺。國內同比浙江大學出版社出的一本計算機組成和設計(潘雪增)也是不錯的(缺陷是

裏面的錯誤較多,我認爲可能是出版印刷問題),不過它是用的MIPS指令,而這本書用的是INTEL芯片兼容的IA32。

硬件講的不太透,比較適合軟件程序員

這本書正好補充了某些盲區,每個致力於計算機科學的人都應該好好的閱讀一下本書。

因爲我近來正在研究IA32的彙編優化,隨便瀏覽了一下,發現這本書的視點相當的特別,他不是一般的理論書籍那樣泛泛而談,書站在實用的角度介紹了很多有用的東

西,講得比較的細節和深入,涉及的一些內容對於提升對系統認知的深入把握絕對好,算是少見的對於高級讀者也適用的實踐型理論讀物.名字"深入理解"的英文

Programmer's Perspective才真的體現出他的價值.

簡直就是把普通人引向稀有物種的一本書啊!
本書英文版久負盛名,被衆多專業人士稱爲“最偉大的計算機教材”之一,著名的美國卡內基梅隆大學計算機科學系一直將本書作爲教材使用,程序員眼中的透徹講

述計算機系統的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大學的計算機科學系主任,ACM和IEEE雙院士(Fellow),其研究成果多次獲得ACM和IEEE頒發

的大獎。本書共分十三章,分別介紹了信息的表示和處理、程序的機器級表示、處理器體系結構、存儲器層次結構、靜態和動態鏈接、虛擬存儲器、系統級I/O、

網絡編程和併發編程等精彩內容。其目的是解釋計算機系統的所有本質概念,並向讀者展示這些概念是如何實際地影響應用程序的正確性、性能和實用性。與其他

主要針對系統構造人員的系統類書籍不同,這本書是寫給程序員的,是從程序員的角度來描述的。本書爲軟件和硬件之間搭起了一個橋樑,它給出了一種幫助讀者

分別從硬件和軟件的角度去理解一個程序及其行爲的途徑,這也填補了國內計算機系統教學中的一個空白。本書的最大優點是幫助讀者理解概念,讓讀者很清楚地

在腦海中構造一個層次型的計算機系統,從最低層數據在內存中的表示(如我們一直陌生的浮點數表示),到流水線指令的構成,到虛擬存儲器,到編譯系統,到

動態加載庫,到最後的用戶應用。---http://blog.csdn.net/chinaboson/

對於已經學過微機原理(或其他類似課程)和一門高級語言的朋友,本書是徹底理解硬件與高級語言之間關係的一個橋樑。該書深入淺出地涉及到了從硬件到軟件

的所有層面,讓你從一個俯瞰的角度全面觀察計算機的具體“思維”和操作過程。
該書不僅僅詮釋了硬件與高級語言的一般直觀關係,它幾乎涉及到計算機領域的所有方面。包括計算機體系結構、數據的表示、操作系統的運作過程、編譯的原理

和基本過程等方面。它在數據在內存中的存儲方式和表示方式對於程序的低層調試(debugging)具有突出的貢獻。
在看過這本書後,你就好比把計算機縱橫剖開來在看他的運行過程,而其中的二進制就好像是看得見的流動的實體一般,無比生動,讓人印象深刻!若你想憑着自

己的聰明才智慢慢摸索,那麼你可能需要多年時間的知識積累才能獲得書中所描述的知識!
總的來說,這本計算機基礎著作是一本上乘之作!

如果沒學過微機原理,這本書也包括了計算機基本硬件的描述,其中包括CPU的結構、中斷機制等。應該也是可以看懂的

絕對是一本好書!從軟件編程的角度來分析計算機的硬件結構和特點,對於編寫程序的是不可多得的一本好書。避免了枯燥的理論分析和電路細節,也提出了許多

有趣的算法,如不用第三變量來對兩個變量交換。又如 int 變量的unsigned int 變量之間的比較(運算),自動轉換帶來的 負數 大於 正數問題,非常有趣

(LeiYingChun)
建議多做動手做試驗,不要拘泥於書本上的知識點。計算機是一門工程學科,Do it是它的精髓。對基本概念的理解,再多、再詳細的文字描述都沒有一次親手的

試驗來得深刻。站在計算機系統的角度來看,這本書是一個Portal,也是一個橋樑。
計算機一門工程,動手和實驗是非常重要的。僅僅去看書,並不能使你充分理解概念。以《編譯原理》這門課爲例,一般而言,教材會偏重理論一些,沒有太多的

實驗內容。所以,建議初學者還應該準備一本動手實驗的書,如《編譯實現》。作爲學生,不可能有太多的時間去編寫程序,所以,我覺得能快速地讀程序和修改

程序會更實際一些。現在,開源世界的源碼,有非常多,一定會有合適的源碼對應各位的需求。
在某個時候,讀懂別人的程序要比自己埋頭寫程序,可能能學習到更多的(在一定的時間之內)。不過,什麼樣的情況才叫讀懂呢?我以爲你能構造出數據結構在

內存的layout(數據結構在內存中的分佈)和各個數據變量被改變的條件和改變後的值,才叫初步讀懂了。讀完以後,能寫一篇心得,客觀地說明程序的優劣點,

以及用自己的理解去猜測代碼的作者爲什麼要那樣設計,出於何種的目的?我覺得就是完全讀懂了。
可以把讀程序看作讀書,各種程序讀多了,自然自己的能力也就上去了。不過,讀到一定的程度,就要開始用心設計和寫程序了。不過,那個時候,應該是很輕鬆

的。
本質上,計算機是一門工程,充滿了折中(trade-off),是一門選擇折中的藝術。任何一個選擇都是在一個嚴格的範圍之內的相對最優的,我們千萬不要忽視前

提和目標,這兩個因素嚴格地限制了選擇的餘地。
我本人是《JCST》的審稿人,主要是審一些計算機系統領域的研究論文。《JCST》是我國計算機領域的頂級刊物,唯一被SCI檢索。打算投到《JCST》的論文,我

想都是一些不錯的論文。但是,迄今爲止,我手上通過的文章,勉強只有一篇。我感覺,那些被我被拒絕的論文作者都沒好好做過實現,一些看起來很漂亮的理論

,它是無法在特定的環境下實現的,而且,論文的相關試驗也做地很不徹底,無法從各個方面去支持作者的論點(我所知道的信息是,一篇好的論文,試驗工作都

是以月爲單位的。美國人就是這樣乾的,一篇IEEE的文章要改100多個version,持續三年多)。就我過去的經驗而言,想做系統方面的研究,得首先知道系統爲

什麼是那樣的,我們做的任何改進都必須非常禮貌、謙遜地融入到大的系統。我經常對我身邊的人說,系統設計要平和,不要激進,太過激進,會影響到其他部分

的正常運行。如果想知道如何禮貌,你就必須瞭解系統的style,也就是系統爲什麼是那樣的。
我的導師,李國傑曾經對我說過,中國人論文中的公式很漂亮,但是缺乏必要的前提。經常是作者自己爲了公式推導的需要,自己去假定前提條件,而沒有嚴格的

試驗或理論依據去做必要的保證。這樣的文章是沒有用的。
回到本書,我覺得我閱讀本書的讀者,應該多做試驗。通過試驗來加深一些概念的理解,和確定它的邊界條件。比如,第8章的“異常控制流”裏的信號處理器

(signal handler)的設計。這個概念看起來很簡單,任何一本講Unix編程的人都會說到。可是有多少人會真正去想Signal Handler的存在是因爲什麼呢?寫一

個Signal Handler有什麼限制呢?爲什麼有不同的Signal響應機制呢?這些都是很有趣的話題。
當我第一眼看到目錄和樣章的時候,我就知道這是一本可以幫助國內的計算機研究者和愛好者認識計算機系統的一個窗口。相比於美國人,國人對計算機系統的研

究是很少的。計算機系統需要很長時間的積累和深厚的底蘊,它不象你研究某個算法或解決某個具體問題(我在這裏舉的例子可能不合適),幾個月就能有一個結

果。計算機系統的研究需要花費大量的時間來寫代碼,可能需要一羣人花費數年的時間來搭一個平臺。有了這個平臺,纔可能在其上做相應的研究,或者說研究目

的的傾向性很強。
其實,每一個搞計算機的人都想知道下層的事。要不然,自己就感覺很虛,也無法保證自己寫的代碼的穩定性。所以,瞭解計算機系統對於程序員是有必要的。也

許,這種潛移默化的影響會改變程序員看待計算機系統的態度,也許他就加入到轟轟烈烈、又枯燥耗時的系統研究中。研究計算機系統的人多了,中國的計算機系

統的研究水平就會上去,也就會有中國自己的操作系統,等等。

國內的書很多都只講“是這樣設計的”而不講“爲什麼這樣設計”,所以容易給人輸灌填鴨的感覺,學起來也枯燥無味。我想這一方面是因爲現代科技起源於西方,很

多歷史國內學者或出書的人不熟悉,另一方面可能是因爲作者本身也沒有思考過“爲什麼這樣設計”的問題。
在書中講一些典故既能增強書本身的可讀性和趣味性,還能加深印象,使人對各種理論的出現原因和背景更加清楚,知道人們之所以提出這種理論是爲了解決哪種

問題。典型的象莎茨的《Operating System Concepts》、北大物理系所用的高數教材等。

如果我的研究方向是計算機體系結構,那我肯定會抱本英文的《計算機體系結構:量化研究方法》來慢慢啃。但是,假設我是一名程序員(儘管實際上我不是),

我的工作是編寫好的代碼;那麼我對計算機的理解並不需要深入到可以設計CPU,那麼大可以弄本《計算機組織與設計:軟件/硬件接口》或者這本《深入理解計算

機系統》(甚至《結構化計算機組成》)來讀。這兩本書足以有助於我寫出更好的程序,而且花不了多少時間。

個人認爲這本書適合做一本穿針引線的入門讀物。我是把它當成一本連接學過的各自單獨的課程的書來讀的,所以只要翻譯的過得去,我覺得就足夠了,呵呵。精

讀的話就去讀操作系統概念,計算機組成和設計,K&R,apue等等的原版。

本書內容非常的深入和詳細,信息量很大,表達清楚明瞭。作者有很好的寫作技巧,很多概念的講述方法都值得稱道。書中的插圖感覺也是經過精心設計的,對幫

助理解非常有好處。這本書每章的內容都非常好,如果要進一步劃分的話,我個人認爲,寫得最精彩的是第四章,作者帶着我們一步一步地設計了一個簡單的流水

線化的處理器,我實在想不出有比這更好的講授方法了。第六章和第十章的內容也非常精彩。卡內基梅隆大學是計算機名校,從他們的這本教材就可見一斑了。最

後一點體會是,美國的大學用的是這麼好的教材,而且這只是人家二年級本科生14周課程的教材呀。我們的高校呢?......

我讀大學那會兒,我所看過的將計算機系統的教科書和參考書,都是從System implement的角度來講,或者說,上來,就試圖讓你知道一個計算機系統是如何實

現的,實話,學得挺累的,而事實上,我們當中的,絕大多數,可能更需要從一個程序員的角度來看計算機系統,或者說,這本書的主線基本上是定在“知其所以然

”上的。封面上的那副圖就是書中的一個例子,比較性能,從而講cache體系:
void copyij(int src[2048][2048], int dst[2048][2048])
{
  int i,j;
  for (i = 0; i 〈 2048; i++)
    for (j = 0; j 〈 2048; j++)
      dst[i][j] = src[i][j];
}

void copyji(int src[2048][2048], int dst[2048][2048])
{
  int i,j;
  for (j = 0; j 〈 2048; j++)
    for (i = 0; i 〈 2048; i++)
      dst[i][j] = src[i][j];
}
計算機系統是很複雜的,牽涉到許多領域,就是一個小的生態環境,我們在外面看到的現象只是冰山一角。過去,我們學習到的知識是孤立的,形成一個一個的孤

島,而且我們還是霧裏看花,並不能完全理解所學的知識點。
這本書的作用在於幫我們串聯了各個領域的知識,把無序的變成有序的。

本書的作者都是各個領域的牛人,看他們發表的文章就看的出來。
Randy Bryant
http://www-2.cs.cmu.edu/~bryant/
在eda設計,符號模擬以及形式驗證都作出突出貢獻。
就這本書而言,啓的是承上啓下的作用,應該是在學習編譯,操作系統
(當然這幾門課程不是想國內一樣糊弄大家的課程!)
體系結構等課程之前學習。
其實如果對intel的手冊比較熟的話,可以發現很多東東都很眼熟。
但是沒有幾個人能完完整整的熟悉intel-architecture optimize manual.
另外例如編譯,鏈接都來自linux,gcc,elf等。
處理器體系來自patterson的量化,但是淺多了。
綜合來說這是這個領域不可多得的好書之一。
語言組織也是讓人很容易讀懂。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章