敬业的IT人 >> 操作系统 >> Unix >> K_eckel‘s book lists(Tech)

K_eckel‘s book lists(Tech)

敬业的IT人 互联网 佚名 2008-4-23 11:58:51

     最近一年,多读技术书籍。每有经典著作,买之、藏之、读之、研究之,受益颇深。况置身于一日千变的IT行业,不读书,便有落后之感,而终日读书于诚惶诚恐之间。从开发语言平台(C/C++、Java系列)、OO思想、设计模式、UML、软件过程(敏捷开发等),到算法、数据结构、软件体系架构,不同层次、不同层面的书都有涉及,初略统计,购书竟达¥1000以上。
     经常被人问及该读何书、从何入门、如何深究,因此给出这个Book Lists。list中的书基本都是我所读过,并以为经典,当作我的一个读书总结,也可作为大家学习之参考。
     我的学习历程还在行进,我的读书之路也在继续,因此这个book lists也在持续更新中.....................                                                            
                                                                                                  —— 题记

                                            k_eckel's book lists

【语言和平台】
【C/C++】

 [1]《C陷阱与缺陷》,Andrew Koenig,高巍译,人民邮电出版社:如果让我推荐一本关于C深入学习和研究的书,那一定会是《C陷阱与缺陷》。第一看这100多个Page的书,感觉不过如此(少年轻狂:)),第二次看是自己做了一个编译器后,带来就是震撼,再一次看的时候就是恐惧——Andrew Koenig的这本书出版14年来,在全世界内重印了18次,并且从第3次后就一个字都没有改变!如果你想知道编译过程对程序设计的影响,如果你想检验自己对底层的把握力度,强烈建议你读读这本书。

[2]《C++编程思想》(第二版),Bruce Eckel,机械工业出版社:Bruce Eckel的《Thinking in C++》和Stanley B. Lippman的《C++ Primer》是C++从新手到进阶的必备书籍,当然个人认为两本中取一本研读即可。我选择的是《Thinking in C++》,原因是觉得《C++ Primer》实在是太厚了(:)实际上绝对全面,我后来还是在不少地方要参考Lipman的书)。《Thinking In ×××》风格甚至是书名都成为了Bruce的“专利”,后来的《Java编程思想》(第二版,目前已经有了英文的第三版),以及《Thinking In C#》(目前还没有中文版,并且该书是和Larry O'Brien合作。),都是经典中的经典,强烈推荐阅读。

 [3]《Effective C++中文版》(2nd Edition),Scott Meyers,候捷译,华中科技大学出版社:对于这本书,我认为任何想把C++学好,想用C++做项目开发的都应该好好研读本书孟岩在该书的印介中如是说:“曾经在网络讨论组中间看到这样的说法,C++程序员可以分成两类,读过Effective C++的和没读过的。”个人认为,《Effective C++》将面向对象的思想和原则与软件设计、C++开发很好地结合在一起,达到了一种完美统一的境界:你在学习C++技术(以原则条款的方式给出)的同时,OO思想得到了升华和提高。纯粹的OO思想的学习会略显得枯燥和无味,但是以为使用、掌握了一门用于面向对象系统开发语言便以为懂得了OO的开发与设计(OO的精华)则会显得多么的无知和轻浮。如果大家想真正体验OO设计开发、享受C++的强大与精髓,请读《Effective C++》

 [4]《More Effective C++中文版》,Scott Meyers,候捷译,中国电力出版社:《Effective C++》的完美续集。

 [5]《C++沉思录》,Andrew Koenig  & Barbara Moo,黄晓春译,人民邮电出版社:这本书的英文名字叫:Ruminations on C++:A Dacade of Programming Insig。让我记忆最为深刻的不是Bjarne Stroustrup有型的照片(工作),而是照片下的第4行话:I designed and implemented the C++ programming language.因为这句话世界上就Bjarne Stroustrup有资格如是说。之于Bjarne Stroustrup本人不劳我多言,之于这本书,大家都知道Bjarne Stroustrup的风格就是有些教条化,别人也称之为“学院派”,可能读起来比较不是那么上口,我个人也就是有一本e文的影印版本,实话说也没有真正系统读完过,但是有时候还是在里面查阅了不少知识。不推荐作为入门的书籍,但是建议收藏,至少也是对Bjarne Stroustrup这位给我们带来C++语言的大师的敬畏和敬意。

 [7]《深度探索C++面向对象模型》,Stanley B.Lippman,候捷译,华中科技大学出版社:对于Stanley B.Lippman本应该好好介绍他的另外两本更加知名、流传也更加广泛的书《C++ Primer》和《Essential C++》,这两本书(特别是后者)都是C++入门的好书,当然前者也是C++进阶、研习的最好书籍之一。无奈前者我没有买过,只是在学习和开发中参考、查阅过(电子版本倒是有收藏),而后者则只是初略看过一遍,不好妄加评论。而这本《深度探索C++面向对象模型》 我则收藏了,原因有二:一是我对底层实现比较感兴趣,二是冲着Lipmman的大名,而我自己也在实现一个比C++简单很多的一种学习语言的编译器(一些介绍:)。在《深度》中,Lippman就自己当年在AT&T实现CFront编译器的实际经验总结、分析了C++的对象组织模型、函数模型,C++中多态的实现机制(virtual table的组织)等。这是一本研究的书籍,如果你对C++的使用已经比较自信,但是对底层实现很感兴趣,这本书则正是你梦寐以求的经典。Stanley B.Lippman的个人主页:中曾经记录了这件事情。

【JAVA】
 [1]《Effective Java中文版》,
Joshua Bloch,潘爱民译,机械工业出版社:Joshua Bloch是Java社区第一号精神领袖(但是已离开Sun供职Google,郁闷ing......),该书也是Java语言领域的《Effective C++》。书中介绍了57条Java语言开发和编程中极具实用价值的经验规则和建议。揭示了该怎样产生高效、清晰和健壮的Java代码。并且本书的译者潘爱民老师也是集著、译于一身的名家,《C++ Primer》、《VC++技术内幕》(第4、6版)、《COM本质论》等也都是由潘老师翻译的,另外《COM原理与应用》则是出自潘老师的技术力作(可能现在大家对COM的了解和关注力度已经大不必从前:))。强烈推荐阅读。

 [2]《Practical Java中文版》,Peter Haggar,候捷/刘永丹译,中国电力出版社:《Practical Java》是我学习Java后阅读第一本Java方面的书籍,当时也正在参与一个使用Java开发的项目,也可以说是一边学一边作项目,项目没有做完,书倒是很快就看完了:一是因为学习总是应该比需求快,而是因为这本书写的实在是很经典。《Practical Java》最大的特点就是简洁、贴近实际开发,书中提到的改善代码的68个主题都是在开发中很容易面临的问题,实在是很Practical。这本书的重点还是Java语言本身,之于面向对象的一些思想和开发理念提及的很少,而在Java的另外一本经典书籍[1]中《Effective Java》中则是集合了不少的OO的设计思想和原则。因此这本书可以作为在学习、研究Java语言本身的必备书籍,强类推荐阅读。

 [3]《JUnit In Action》,Vincent Massol,鲍志云译,电子工业出版社:这本书是介绍JUnit测试优先开发的参考书,TDD(Test-Driven Development)是敏捷软件开发中的最重要原则和技术之一,而JUnit则正是这个技术的实现。JUnit则是由两位世界级的大师Erich GammaKent Beck完成的Java的单元测试的框架,Erich Gamma 是《设计模式》巨著的作者GoF中的第一位,而Kent Beck则是XP的创始人。JUnit不单是给我们提供一中非常elegant的单元测试工具,更为重要的是JUnit塑造了一种新的软件文化:Keep the Bar Green!只要我们能够保证JUint中Bar Green,我们软件就没有问题了。《JUnit In Action》则介绍了JUnit用法,内容包括用mock objects进行隔离测试、用Cactus进行容器内测试、用Ant和Maven进行自动构建、在Eclipse内进行测试、对Java应用程序、Filter、Servlet、EJB、JSP、数据库应用程序、Taglib等进行单元测试等。这本书最大的特点就是示例驱动教学,适合初学者,很容易上手,推荐阅读

 [4]《Struts Kick Start》 ,James Turner & Kevin Bedell,孙勇译,电子工业出版社:

【.Net】
 [1]《.NET框架精髓》,Thuan Thai & Hoang Q.Lam,王敏之,中国电力出版社:这本书是我看的第一本关于.Net方面的书籍,尽管在网络上有人说这本书的翻译不是很达意,但是个人觉得还是很不错的讲解.Net平台的入门书籍。我学东西比较偏好于行而上和行而下结合,也就是在看一种语言实现的时候我都会结合看一本讲解框架和平台概述的书,这本书也正是和《C# Primer》一起看的。我有一位给我帮助很多的师兄告诉我说:在做项目的时候一定要抬头看看架构、设计的书,看架构设计的书籍时候一定要刻意去做做实际的编码。个人觉得这本书作为.Net框架介绍性入门书籍的定位还是比较准确的,并且里面有很多的示例,比如.Net平台上的语言的无关性中作者就通过一个分别由VB.Net /C#/Managed C++编写的示例程序(交通工具),感觉是非常好的体验。书中还对诸如.Net 中的数据访问、XML等内容进行了一个概述,总体说来还是达到了我的预期期望,因此这里推荐大家作为入门级别阅读

 [2]《C# Primer》,Stanley B.Lippman,候捷译,华中科技大学出版社:没有买Lippman的《C++ Primer》,终于在这里给予了补偿。但是遗憾的是总是觉得Lippman的这本书远远没有想象中的经典,或许一个人期望越高,失望就会越大。也可能是看的时候因为有不少的OO、C#本身的基础,而最后和自己的收益期望有所差别,鉴于以上原因,这里不妄加推荐,当然也不敢妄加评论

【移动开发】

【算法与数据结构】
 [1]《算法I~IV(C++实现)——基础、数据结构、排序和搜索》(第三版),Robert Sedgewick,张铭泽译,中国电力出版社:这是我目前看过的将数据结构和算法中的最好的书籍。作者Robert Sedgewick是算法宗师、计算机大师Donald E.Knuth的高徒。Donald E.Knuth是我崇拜的计算机大师之一,不仅仅因为他的学术渊博,还有就是他做事情的风格(他为了写《The Art of Programming》辞掉了在Stanford的教授职位,只担任斯坦福大学计算机程序设计艺术的荣誉退休教授。这里有一个连接,感兴趣的可以继续:)),Bill Gates就曾经说如果有谁读完了《The The Art of Programming》可以直接给他发简历(确实,我曾经鼓起勇气从第三卷看起,最好还是放弃了,因为......)。Sedgewick的书的最大特色就是深入浅出,他把一个个算法(以及相关的经典问题)通过最易于理解的语言诠释的淋漓尽致,真正是大师出品、大师风范。当然这只是Sedgewick算法系列的上册,还有下册(图算法)。强烈推荐阅读。

 [2]《编程珠玑》, Jon Bentley,谢君英译,中国电力出版社:这本书的英文名字叫《Programming Pearls》,编程中积累下来的珍珠,当然宝贵。关于这本书的评论网上到处都可以找到,但是这本书薄薄的纸张竟是涵蕴着无尽的宝藏:从封底计算、经典的查找、排序算法(二分查找、堆排序等)、程序性能估算(Profile)、调试(Assert宏)等都是编程中的Pearls。强烈建议要换工作、或者要找工作的好好研读,因为笔试和面试中经常就是这里面的内容,当然开发者也必备,因为可能就是因为里面一些算法的启示给我们驱走了程序实现中的郁闷

【OOA/D(设计与思想)】
 [1]《设计模式:可复用面向对象软件的基础》,GoF,李英军等译,机械工业出版社:设计模式中的圣经,面向对象书籍中的经典。虽然GoF在前言就一再声明他们写的这本书不是介绍面向对象技术或设计的书,但是我一直认为(Utill Now),就像GoF在其第一章引言中说的:学习设计模式可以帮助学习面向对象,而我的观点更加深入:只有真正理解了设计模式,才知道什么叫面向对象分析与设计【1】。【1】是我在经历了理解设计模式前后做的系统的比较得出的,并非个人的一时冲动的论断,在看了GoF的这本圣经n遍,并实际编写一遍23中设计模式的实现,思考并在实际系统设计和开发中适当运用设计模式后,我只能说慢慢地对面向对象的分析和设计有一些感觉和体会了。GoF在这本书中给常见的设计模式分为创建型、结构型和行为模式共23种,这些也就构成了当前软件界通用的设计模式的代名词。这本书是设计模式中的圣经,但是个人觉得唯一的瑕疵就是(可能看过的都有感觉):行文比较生硬。可能是因为GoF都是Ph.D,并且主要基于Eric的博士论文,读起来对于初学者有些难度(我是鼓起n次勇气读了n次后,才慢慢体会到博士水平还是不同!)。作者也在前言中“坦白”:请记住,这不是一本读完就可以束之高阁的书。这里强烈推荐。BTW:我将个人学习和使用设计模式的经验和理解在本Blog中有一个连载(见设计模式部分),主要想就GoF的23种模式以一种更加易于理解和接受的方式展现出来,并给出了我在学习设计模式时编写的C++代码实现。

 [2]《敏捷软件开发:原则、模式与实践》,Robert C.Martin,邓辉译,清华大学出版社:该书曾获得第13届Jolt大奖,Robert C.Martin自己也是软件开发界的大牛。读过这本书的人都有体会:内容和书的名字有些出入。书中虽然花了一些篇幅在讲述敏捷软件开发(Agile Software Development)的原则和实践,但是书中绝大部分的内容在讲述面向对象分析和设计OOA/D),例如面向对象设计中的原则(单一职责SRP、开放-封闭OCP、Liskov替换LSP、依赖倒置DIP、接口隔离ISP)、设计模式(共23种,但是不是和GoF的23种设计模式全部相同)以及UML等内容。个人觉得该书可以和《设计模式》一书结合起来读,并且是面向对象设计和分析的必读书之一。这里推荐阅读。Robert在书中的一句话或许会记一辈子:Next to My Life,Software is My Passion

[3]《Design Patterns Explained-A New Perspective on Object-Oriented Design》(影印版),Alan Shalooway & James R.Trott,中国电力出版社:这本书我在买的时候还只有影印版,现在中文版本已有熊节翻译出版了。买这本书的时候我还对设计模式一知半解,只是看着这本书的名字比较OK就买了,实际上买回来后一开始也没有怎么看,但是在看完了GoF的《设计模式》后,我再把这本书认真看了一遍,感觉也是经典。这本书最大的特色就是实例教学,他首先对OO设计进行了简单扼要的讲述(个人认为是最好的OO教授之一,个人受益匪浅),然后选取了GoF23种设计模式中的10种进行了详细的分析:先引入问题,然后Derive相应的设计模式,这种方式最为容易理解。其中我觉得讲的最好的就是Bridge模式,分析到位、实例清晰,实在是给我理解Bridge模式给予了很大的帮助。强烈推荐大家阅读

【UML与建模】
 [1]《UML精粹——标准对象建模语言简明指南》(第2版),Martin Fowler&Kendall Scott, 徐家福,清华大学出版社:Martin Fowler在软件界的威名大家是有目共睹的,Martin Fowler是架构、企业构架、设计模式等方面的大师,他的《分析模式》是商业层面的《设计模式》经典,他的另外一本书《Refactoring》则树立了Martin在XP(极限编程》中宗师级的地位。《UML精粹》也正是吧UML的精粹部分展现了我们面前,我们知道UML是咱们做软件必须要熟练掌握的建模语言(不然怎么和别人交流?!),但是我个人觉得学习UML的是枯燥的,且不说别的,就是UML中的那9类图都够咱们郁闷的(尽管不是每种都很常见和常用)。我也正是通过这本书慢慢地去熟悉、适应、使用UML,本书也是面向对象思想(OO)学习的经典,你可以从这本书中学习到很多的OO的思想和原则。唯一美中不足的就是:个人对翻译的徐家福老先生翻译的笔风不是很称,很多的名次和现在的表达有一些出入,也让人有时候觉得很是费解。anyway强烈推荐大家阅读。

 [2]《使用UML—关于对象和组件软件工程》,Perdita Stevens & Rob Pooley,包晓露译,人民邮电出版社:这本书虽非出自大师级的高手,但是个人觉得这本书是非常好的面向对象思想和UML学习的教材。就像本书最开始就讲到:面向对象的3块基石(封装、继承、多态)中封装的本质就是高内聚(Cohesion),多态的本质就是低耦合(Coupling),这是我看过讲面向对象理论最为简洁、本质的论断,也带给了我莫大的思考。这本书还有一个特点就是适合个人学习,因为该书的组织是按照教学的进度安排,还设计由讨论和问答,非常适合OO思想入门和UML使用入门。推荐阅读

【软件过程管理】
 [1]《人月神话》,Frederick P. Brooks,JrUMLChina翻译组 汪颖译,清华大学出版社:排在这个位置的一定是这本《人月神话》,我个人觉得这本书本身就是一个神话,它的经典、它所诠释的软件开发的精神、软件过程的艺术,使得该书畅销了20年经久不衰,让人不得不认同这样的一种神话。Brooks获得1999年的图灵奖,他在1986年发表的论文《没有银弹:软件工程的根本和次要问题》,让“没有银弹”的软件领域的“定理”成立20年,可能还不知道要成立多久。《人月神话》是关于人和团队的书强烈推荐阅读

 [2]《敏捷迭代开发:管理者指南》,Craig Larman,张晓坤译,中国电力出版社:Craig Larman是面向对象、模式、迭代开发等领域广为人知的世界级专家,他的那本《UML和模式应用》被Martin Fowler推崇为:“人们常常问我,哪本书是引领他们迈入 OO 设计殿堂的最佳著作。自从幸获 Craig 的《UML和模式应用》,它就成为了我的倾力之荐。Craig Larman在这本书中讲述了四种著名的迭代方法(Scrum、XP、UP、Evo)的关键实践,并就敏捷和迭代开发中的实际问题给出了建议和实践经验。Craig Larman维护了一个中文网站:进入讨论组讨论。

粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com