C++ 好书

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

[2]《C++编程思想》(第二版),Bruce Eckel,机械工业出版社:Bruce Eckel的《Thinking in C++》和StanleyB. 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),ScottMeyers,候捷译,华中科技大学出版社:对于这本书,我认为任何想把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++:ADacade of Programming Insight and Experience,十年程序设计的真知灼见。Andrew Koenig夫妇是世界上著名的C++大师级人物,并且他们也堪称C++领域的“第一神仙眷属”,看看他们在AT&T曾经做过的事情,你就没有办法不去承认这样的书名实在是实至名归,用起来也当之无愧。而Barbara Moo则更是C++领域的女中豪杰。读这本书实在是和无意中的机缘巧合读了Andrew的《C Traps and Pitfalls》,感叹崇拜之余,则买了这本《C++ 沉思录》,该书的特点一是适合学习(教学型的讲解方式),而是适合练习(书中给出了很多的实际的例子进行分析和讲授,甚至包括一个简单的string的库),怪不得C++之父Bjarne Stroustrup如是推荐:对于C++是什么样的以及能够作些什么,他们的先见之明在这本书中随处可见。他们另外一本书《Accelerate C++》也是C++学习中的经典。

[6]《C++程序设计语言》(特别版),Bjarne Stroustrup,机械工业出版社:如果您在学习或使用C++语言,但是没有上过Bjarne Stroustrup的网站,建议您登录:http://www.research.att.com/~bs/homepage.html。让我记忆最为深刻的不是Bjarne Stroustrup有型的照片(工作),而是照片下的第4行话:I designed and implemented the C++ programminglanguage.因为这句话世界上就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++简单很多的一种学习语言的编译器(一些介绍:http://www.mscenter.edu.cn/blog/k_eckel/category/384.html)。在《深度》中,Lippman就自己当年在AT&T实现CFront编译器的实际经验总结、分析了C++的对象组织模型、函数模型,C++中多态的实现机制(virtual table的组织)等。这是一本研究的书籍,如果你对C++的使用已经比较自信,但是对底层实现很感兴趣,这本书则正是你梦寐以求的经典。Stanley B.Lippman的个人主页:http://staff.develop.com/slip 。我也发现一般大师的主页都很简约、简洁,无论是Knuth,还是诸如Bruce Eckel、Bjarne Stroustrup还是这里的Lippman都一样。大家对Lippman的最近的印象应该比较的熟悉,Lippman现在是Microsoft C++/CLI的总架构师,专门负责将传统C++移植到.Net平台上,前一段时间因为需要曾经花了一段时间研习过C++/CLI,个人觉得虽然比起丑陋的Managed C++,C++/CLI要elegant不少,但是给Managed C++善后却不是那么的容易,给Lippman +U,也期望C++/CLI走好!

[8]《C++程序设计教程》,钱能,清华大学出版社:之所以这里列出钱能老师《C++程序设计教程》主要是因为个人认为在国内写C++方面的书中就钱老师的书最有份量,我姑且不敢将钱老师的书和上面提到的大师们的经典比较,但是在国内这样一个浮躁的环境中,钱老师的书也确实给了我不少的希望和期望。大家可能也注意到了,国外大师们的书上都是著名×××,而国内大部分则是×××编著,不读研不知道编与著的区别,现在才知道编和著真的可以说是差之毫厘、谬以千里。《C++程序设计教程》实在可以作为C到C++学习的一个预科读物,推荐大家想学C++但是基础不是很好的研读之。

【Windows程序设计/VC/MFC】
[1]《WINDOWS程序设计》(上、下),Charles Petzold,清华大学出版社:这本书是Windows编程领域的“圣经”,无法描述其在Windows程序设计领域的影响和功效。而Charles Petzold则是作为仅有的七个人之一(并且是唯一的作家)被《WindowMagazine》和Microsoft公司授予Windows Pioneer奖,以表彰他对 Microsoft Windows的成功做出的贡献。之于这本书遗憾有二,一是价格不菲(上下两册一共160RMB,就算打个八折也还是......),二也是最重要的,现在业界实在是比较浮躁,于是我们也跟着要浮躁,很少有人能够真正静下心来去研习诸如windows程序设计的基本知识,去在没有VC生成的一大堆的MFC垃圾代码的情况下就写写windows程序了。企业和公司要求的就是一堆的会拖拉点击的熟练的操作人员,他们需要的是能够立即能够带来商业利益的代码工人,尽管他们也要求技术功底的深厚。绝大多数的VC程序员都是在完全没有过windows程序设计经验就去被教着使用MFC进行桌面系统的开发。Java、.Net需要我们学习和熟悉的地方太多了,以至于我们无法安静下来好好去把内功练到本该具备的级别就要上战场冲锋陷阵了。实际上我也是这般,虽然我看了这本书的绝大部分的内容,也用记事本写了一些简单的windows程序,从WINMAIN写起,注册窗口、创建、显示、消息循环,然后WinProc的实现,但是我也没有胆量说我对windows程序设计已可以和像使用C++/Java那样熟练。实际上可能是否要在学习使用VC等之前一定要把windows程序设计非常深入的观点也值得商榷,个人看法是:熟悉windows编程,机制、过程,做一些简单的练习,然后在基于MFC开发过程中对出现的问题在去参考这方面的资料,再去解决相关的问题(可能要用到windows程序设计中的本质东西)。我便是这般。因此建议大家能够阅读

[2]《深入浅出MFC》,候捷著,华中科技大学出版社:这本书也不是一本浮躁人看的书,个人认为也不太适合于初学者看。个人有一个看法,如果把VC/MFC程序设计的学习像学习一门语言(例如C++/Java)那样学习,就在某种程序上理错了方向。像这种和开发应用联系最为紧密的开发平台的学习应该是一个解决问题的学习过程,这个意思就是当你遇到一个实际开发中的问题的时候,你可以去查阅相关的API、search相关的解决方案,然后解决问题就是了。因此这本书不是作为VC /MFC入门的书籍,VC/MFC的入门我觉得直接到书店找一本这方面的书(大部分都是内容差不多,因为基本是大家互相copy的:)),然后去把书中的例子实现一下,积累对VC开发的感性认识,也满足一下自己的虚荣心。然后可以参看这本《深入浅出MFC》去理解为什么你的程序要那样编写,为什么可以那样实现,怎样才可以在MFC的大网中自由发挥。书中讲消息传递、运作机理最为深入浅出,而对于Doc/View结构却并不是最好的讲述(尽管已经很好了,因为我曾在网上看到过一篇专门讲Doc/View的Document,个人认为最为深入浅出)。强烈推荐大家阅读。顺便一提的是,候捷老师是我个人极为推崇的国内的技术专家和作家,无论是他写的这本书,还是他翻译那些大师的作品,都极为精致,实在是精品和经典。候捷老师本人我和他也算是有一面之缘:2004年10月24日,候捷老师到大陆讲学,其中一站就是同城的华中科技大学,华中科技大学微软俱乐部组织了候捷老师与您工话IT人生活动,也邀请了我们这边俱乐部参与(就算没有邀请,我也一定会去的,呵呵),活动完毕和候捷老师有过一个简单的交谈并留影纪念(遗憾的是照片由于某些原因一直没有找到,深以为憾。)。【转】
原创粉丝点击