|
这些文摘是我在2003年逛BBS上摘得的。感觉很好,一直没有机会传上来。这是工大计算机版的文章,不知哪些高校的BBS上还有这种专业水准得书评,指导人学习。
第一是OS部分:
“今天闲来无事,整理了一下我的书籍,发现买的书虽多,但真正完全读过一边的很少,不尽痛恨自己,暴殄天物,愧对这么多大师不说也对不起我可怜的money呀,:(。于是乎想起自己在本科时代的那段浑浑噩噩的时光,那时候倒是也想读书,读好书,但是不知道什么书好,什么书该读,什么不该读。我想现在的不少同学也可能有一样的感觉,于是我觉得把我这几年来读过的书推荐一下,还是很有必要的,希望学弟学妹们能够充分利用时间,把自己培养的棒棒的:-)
ok,闲话少说,let's begin………
1) 操作系统方面:
如果你对操作系统原理很好奇,想一探究竟,推荐你必读的几本书,记住不要在汤子赢的书上浪费精力,看过以下的书,就知道什么是水平上的差距了:)
“Abraham Silberschatz”的两本书:
1. 《实用操作系统概念(影印版)》高教出版社
2. 《操作系统概念(第六版影印版)》高教出版社
这个作者的level是顶尖级的,来自贝尔实验室,是目前世界上操作系统方面的领军人物,我个人认为比坦尼伯姆要强,虽然坦也很强:),这两本书第二本和第一本很多地方相似,区别在于第二本理论偏重一些,第一本实例讨论的更多一些。这两本书别看很厚,但是写的非常流畅,属于比较易读的一类。
3.《现代操作系统》---“坦尼伯姆”,这本书我没完整看过,只是大略的翻过,是第4本书的升级版,里面添加了一些新的操作系统方面的讨论,原理部分比第四本稍有增强。个人认为,是除了前面两本之外的最好的书。
4.《操作系统-设计与实现》---这个比较有名了,主要是分析minix源代码的书,顺带着讲了下原理,应该说是偏于实践的,可能当年的linus的教材就是这本,影响较大,可以帮助你了解一个文件系统或系统调用之类是如何实现的。当然,和目前的操作系统来讲,稍简单了一些。想做linux kernel hacker的同学此书可以一读。
5.《操作系统:现代观点(第二版试验更新版)》
Operating Systems: A design-Oriented Approach
这两本一般,但是还是比国内抄袭的教材强很多,可以作为补充阅读的书籍。
6.与特定操作系统相关的书:
《understanding linux kernel》:千万别买中文版,那叫一个烂
《linux internal》:这两本我都有电子版,是打印出来看的:(
《linux内核情景分析》:这三本是最nb的linux内核分析书籍,前两本讲2.2内核,第三本讲2.4,好是好,就是钱遭罪,赫赫,要100多块吧。
《4.4BSD操作系统设计与实现》:不说少了,原来berkeley那帮写bsd的其中几个人写的,经典就是它了,前几年我恨不得直接花$去amazon买了:(,不过这几年国内出版业发展真快,原来很多梦寐以求的书,现在都摆上书架了,haha,很有成就感呢~~~
《unix操作系统设计》:古老的unix设计方面的书籍,应该说这本书在unix世界里面的影响是十分巨大的,很多后来的unix分枝,思想都是缘于此书。里面主要讲解unix各个部分实现时所用的算法,其中一些目前还在使用中。想了解一下unix实现但又没什么时间扣minix或linux内核的朋友可以看看,在这本书上花费几十个小时,绝对超值:)
//体系结构部分
2) 计算机系统结构:
我是搞体系结构的,所以对这方面还是比较了解,不免又要批判一下国内的书籍了,李学干的书,我怎么看都像是上古作品,讨论的东西基本上是80年代以前的玩意儿,看了也是白看,它里面介绍的东西,基本上我们是没有可能遇到的。除非你去计算机历史博物馆。清华的郑伟民有两本书,一厚一薄,都叫计算机体系结构,薄的讲的太浅,反正我看完了还是不清楚体系结构是干啥的,做什么用处。厚的我没全看完,但是感觉和李学干的书一样,不少都是copy黄凯的那本高级计算机体系结构,至少我就看见过一张一莫一样的图。讲道这里,不免要推荐一下唐老师的计算机组成原理,(虽然不能是体系结构),这本书相当好,我想这和唐老师严谨认真的治学作风十分不开的,计算机组成原理的书,别的都不用读了,我还没见过比这本更好的。
国外体系方面的书:
1. “hennessy”和“patternson”的《 计算机硬软接口 》和《 计算机量化研究方法 》:作者一个是斯坦福的校长,一个是伯克里的资深教授,体系方面最牛会议的审稿人。这两本书可谓是千锤百炼,绝世好书,呵呵。我都推荐给进入体系实验室的师弟师妹们。硬软接口里面讲
的是简单的处理器体系结构,最难得地方也只讲到流水线,本科水平阅读应该没有问题。它与国内的书不同,并不是从理论方面泛泛而谈,而是针对某个问题,深入讨论,不弄个水落石出决不罢休,这点使得读起来非常过瘾。第二本量化研究方法比较难读,不仅仅是因为英文写的有点晦涩(相对于硬软接口),而且讨论的东西也是最先进的,新接触这一领域的读者比较难于理解,这本书基本上涵盖了2000年以前的微处理器体系结构方面的先进技术,如果你想了解2000年左右微处理器体系结构已经发展到什么程度,可以从这本书读起,它以前的书可以不用读。对了,忘了说明,这两本书都是主要讨论微处理器体系结构的,呵呵,这也是它们的新颖之处,我个人也觉得现在还大讲特将什么向量机有点不合时宜。强烈推荐,看完整两本书,你就会知道处理器到底是如何工作的。另外,千万别买这本书的翻译版,看着闹心,翻译的往往和原意差出好几百里地,浪费时间不说,也对身心健康不好哦
2. “William stalling”的《计算机体系结构-性能设计》:由于看了前两本书,所以这本就不太起眼了。想比较而言,这本书讨论的问题太过于表面化,缺乏对问题的深入剖析,看完之后没有那种刺破肉皮见骨头的快感。不过我觉得这也很正常,因为william stalling只是个科技作家(别看china-pub上好像对他的吹捧好像是个神,其实他也是人),他和前两位世界级的教授根本不在一个数量级上。不过老威倒是也真够狠,什么都写,os阿,网络阿,体系阿,看着比坦尼伯姆还nb。看过这本书之后,我发誓再也不看他的书了。这本书当作科普读物可以,了解一下体系结构。
3. “黄凯”的《高等计算机系统结构》:这本书影响非常大,国内的凡是体系结构的书,基本上很多都是copy这本的。但是,我不得不说,他太老了,老的已经不再适合做体系的教材了。计算机技术发展多么迅速阿,这个10几年前的东西现在怎么应用啊? 里面讲的机器估计以后没人能见到,呵呵,说到这里不得不向大牛cray致敬(虽然大师已经挂了),他的cray机真是太牛了,不让ibm专美与前啊。Sorry,扯远了,这本书如同鸡肋,弃之可惜(毕竟是好书),但食之无味。喜欢跳出微处理器的圈子,试图俯瞰一下计算机体系结构各个领域在1990年以前是什么情况的同志可以look through一下。
4. “坦尼伯母”的《结构化计算机组成》:这本书不是专讲体系结构的,它连从c程序,到编译,汇编,连接加上硬软接口ISA和处理器内部实现统统讲到。一气贯通,让你了解这个程序是咋在处理器上刺溜刺溜跑起来的,对大家对于计算机系统的宏观认识非常有帮助。
//编译原理部分
3)编译原理:
编译这块我了解不多,应该说不怎么了解,我甚至还打算从头学一边编译原理:(,不过这方面的好书我可是注意好久了:现在隆重推荐:
1) 《编译原理:技术与工具》:作者之一就是“lalala, ullman”,我记得是计算机界目前论文被应用最多的一个活人(fix me),他在编译和数据库方面地位很高,这方面我估计李建中老师的门下弟子比我知道的多多了,我就不说了。这本书据说是讲解经典编译原理的宝典,也被称为\"龙书\"。想学编译?ok,别的书先抛在一边,把这本先读了再说。但是要提醒一下,目前的编译器基本上和体系结合的很紧密了,有的编译器甚至连程序运行时功耗都考虑进去了,所以,要想一窥现在编译器内部构造,光看这本就不够了
2) 《Optimizing Compilers for Modern Architectures: A Dependence-based Approach》
这本书能弥补第一本的不足,讲的都是如何让编译器利用体系结构方面的技术。不过,国内没有出版,不过,别灰心,呵呵,我这里有电子版。如果实在感兴趣,看看编译器是如何根据体系结构进行优化的,可以打印出来读。Ok, 累死我了,先推到这里把,对了,希望在别的领域很有研究的同学也推荐些书,让我们知识共享,经验共享,共同进步,共同提高。
//数据库的
我可以补充一些数据库的:
外国的
首推“ Ullman”老大写的 《数据库系统实现 》 ,这本书看完了,才算知道了数据库是啥。写的比较前沿,关系数据库的实现很完整,可以照着自己写一个小数据库也有一些信息集成的东西,中文翻译的一般。
“date”的《数据库系统导论》写的也不错了,就是东西太多,哪种讲的都不是很深但是很好懂,可以做手册和普及读物。
“stonebreaker”的《reading in database system》是进行数据库研究必须要看的基本上包括了数据库领域的经典论文,范围也很广,包括OO,并行,分布式数据库,决策知识等等前沿,也有codd提出关系模型的经典论文,缺点是都是正规的学术论文,很难懂。
《data mining》,“韩家威”写的,由于他是学e文出身的中国人,因此英文写的很适合中国人看,从某种程度来说,比峰哥翻译的汉语还好懂,而且这本书也很前沿90年代末的数据挖掘最火热的年代的主流算法都有,但是有些算法写的不够详细理解理论很好,照着实现很难。
《数据仓库》,数据仓库的提出者“Inmon”写的,这本书更加适合研究信息系统的人看。对于设计写的很多,对于实现写的不够详细。
选书的时候,有的时候看作者就可以了,响当当的作者就好比一个著名的品牌,有很好的信誉度
Richard Stevens、Andrew Tanenbaum、Frederick Brooks,Jr、Bjarne Stroustrup、Matrin Fowler、Kent Beck、
Ullman好像写过一本非常不错的数据结构的书不过可惜国内还看不到
咱们系用的形式语言教材《An Introduction to Automata Theory, Language and Computation》也是Ullman的大作。也是一本好书,可以正式出版的第二版中删节了不少内容。
“aho&Ullman”《algorithm and data structure》这本书是不错,现在可以用《算法导论》取代了
//C++的
其实感觉《The C++ Programming Language》很不错,广泛而深入。
Lippman的 C++ Primer只翻了一翻,不过明显要比TCPL浅一个层次,但还一本不错的书关于标准库,The C++ Standard Library是一本不错的参考,有电子版和中文翻译。
底层实现的,Stroustrup94年写的Design and Evolution of C++不错,虽然内容并不是C++98的标准,但是里面却折射出Stroustrup在语言设计中的取舍的思想。
要想玩点智力游戏,看看Alex的Modern C++ Design,Loki写的太聪明了。
Stroustrup组织编写的C++ Indepth系列丛书,每本都很不错。
前几天我上传到241的C++ Network Programming V1 & V2的内容就是很不错。
作者名字太长,没记住,不过那本书的参考文献从System Architecture到OS,到Protocols,再到Patterns and Framework,看样子作者十分有功力
//OO的书
推荐一本OO的书吧《Object-Oriented Software Construction (Second Edition),》Meyer著
软件工程大热,被奉为经典的书不胜枚举,炒作异常。想必主流的东西大家也都知道是什么了。这本书很少能见到推荐他的,甚至连书评都很难见到。究其原因,一可能是作者每到泰山北斗的名气,二就怕是因为它的篇幅了--正文1188页。如此厚重的书,能读完的人都不多。影印版国内出版了好久,而且有两个版本。中文版没有,几乎不可能有。
我读此书的感觉是,作者懂得太多、读过太多,什么都想告诉读者。同样一个问题,在书的不同位置都会涉及到,于是作者都会讲上两句(絮叨),难得的是每次讲得语言还都不太一样。粗浅的说完之后,会语重心长地告诉你,哪些书讲这个讲得特别好,一定要去看。每章之后都列出来bibliographical notes,里面对相关书籍的简短评论都很精彩。总结出的Key Concepts简直可以当作名言警句背下来(书里确实有很多非常漂亮的句子,都快成我的口头禅了)。虽然可以作为读书、学习指导,但这本书当然不是一个书目,它自身仍然是出色的。作者也是OO的先驱者之一,又因为不吝啬笔墨,所以很多问题都讲解得极其透彻、易懂。此书配套光盘含有电子版的全书。这套电子版制作得非常精良,从中也可以看出作者对书的态度,真是精益求精。
虽然只读了1/5,但是已经感到获益匪浅。有机会,我一定要把它读完!我的印象中软件工程的书籍基本上都是大部头的,这个领域的确包
罗万象,很久以前曾经翻过一本软件工程e文的书,觉得实在是难,没办法读下去,可能当时的水平没到,无法领悟精髓啊,sigh,编译,
软件工程和人工智能都应该好好学习,可惜我都错过:(,
这本OOSC应该算得上是OO的Bible了。俺也推荐一本比较有代表性的《Design Patterns: Elements of Reusable Object-Oriented Software》Erich Gamma,et al这本书并不厚实,所以难得称之为Bible,但却被认为是90年代最重要的软件著作之一。本书的四位作者均为面向对象领域的专家。他们用自己在面向对象领域的经验,记录整理了在面向设计中的Models以供后来者参阅,交流。这本书可以带你到OO专家的肩膀上。
这本书目前国内有影印版和中译本,影印版制作比较袖珍,可以随时放在包里,没事儿的时候看上几眼。中译本的翻译也没有什么疏漏。另外,这本书的电子版CD也不错。HTML的版本,可以在不同模式之间Hyper-Link,参考起来要比纸版方便。
真的希望每一个学CS的,搞软件的都能读一读这本书。这本书强烈要求没学过OO,没写过程序的不要看
//网络部分
really good article.
I also would like to recommend some good books on networking.Besides the famous book 《computer Networks》By “Andrew Tanenbaum”, The Book 《comPuter Networks: A Systems Approach》By“ Bruce Davie, Larry Peterson, David ClarK” is also highly recommended.
The book by Tanenbaum illustrates the computer network from a \"classical\" view -- layering and focuses on the architecture consideration and protocol design in the computer network.
The book by Davie et al, on the other hand, shows not only how networks work but also why networks were design as they wer
e, such as end-to-end argument...It also covers many new results in the computing networks in recent years, such as RED, which can be regarded as the first step to active queue management.So I think this book is especially suitable for begining researchers in the network area.
Also, for advanced researchers in networking, they may wish to read the books by “Dimitri Bertsekas”, which provide the fundemental knowledge as well as pratical approaches for communication network design/control/optmization.btw, the book《Computer Architecture: A Quantitative Approach》, by “John Hennessy and David Patterson” is indeed an excellent book. Both authors have worked on the great idea in computer architecture--RISC.
//体系结构
系统结构方向不能不提的另两本书是:“D.Culler”等的一本书和徐志伟、黄凯的一本书。前者影印、翻译版都有,李晓明等译,翻译得比较流畅、准确。我已通读其中的10章,另2章以后有时间会再读。直接读该书影印版遇到的困难会相当大,因为其写作风格口语话,但选词绝对准确,只是国内对相应词汇的用法可能不熟悉。对照阅读对提高专业英语水平极有帮助!我就是主要读影印版,必要时查阅译版,因为译版处理得好,标有原书页码,非常方便查找。该书最大的特点是本着体系结构融合的角度品评各种经典结构和技术的。这符合并倡导了该领域的发展方向。想作体系结构方向研究的人不看该书的话将来在圈内会感到落后的。后一本徐志伟等的书《可扩展并行计算》属于比较简单的那种,之所以提到它的原因是它对相应技术的内容总结叙述得比较好。直接读影印版即可,基本不必要读译版。从该书内容来看,主要由徐志伟所写。因此不必有\"黄凯综合症\"。由于该书总体来书属于简单那种,因此读过以后就可以当工具书来查了。
至于其他领域的好书,我目前没有太多的空闲时间,以后再向大家推荐。 |
|