正文

c++ 教程推荐2010-11-03 22:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/51973.html

分享到:

推荐C++教程

1. <<The C++ Programming Language>> , Bjarne Stroustrup 
这是一本每个人都应该买但不一定要看的书,强烈建议初学者不要看这本书,否则可能会一头雾水,失去信心,BS写书本来就不怎么样,他自己都说他的书有些晦涩难懂,但是买一本放在书柜里,有什么不清楚的地方查查高人如何解析还是有必要的。中文版是裘老师翻译的,以裘老师的深厚功力,技术上大家大可放心,但语言流畅上我就不敢认同了,况且这还是一本大书,如果要追求语言流畅的话,可能没有两3年是出不来的,而且国内的出版社又那么急功近利,稿酬不高,做得那么好有必要吗?

2. <<C++ Primer>> , lippman? 
lippman的地位自然不用猜疑,此书也被评为C++的最佳入门书籍,也是Lipman写得最认真的一本书,第3版在国内98年就有了。全书可谓是C++大全,深度适当,比较适合初学者,或者想对C++和程序设计有大概了解的读者, 但就是比较厚,这也只能怪C++的源远流长,总是在打园场,不断增加新特性,让我们这群读者都不得不捧着这本大书品读。中文版是潘老师翻译的,文字通顺,但缺乏味道,看着一本千来页的书,而且前面一部分讲的都是程序设计思想,容易令人产生困倦,也难怪很多人半道出家学java。 

3. <<effective C++ >> Scott meyer 同下

4. <<more effective C++>> , meyer 
这年本书乃是改善设计思维和设计思想的必读书籍,书中每个item莫不是经过千锤百炼之后得出。其中,effective比较浅显易懂,每个item都比较短,而more设计思想更进一层,有些item已经多多少少有设计模式的味道。我看过的是繁体版,这两本书候老师翻译得不错(我觉得是候老师翻译得最好的两本书,比较认真),读起来比较有味道。建议初学者在看完一本C++比较完整的书后直接拜读此2书。

5. <<The C++ standard library>> 
就是现在卖得比较热的书,梦魇和候节翻译的,翻译得很好,语言很通顺,技术上也很好,只是书中有些代码我是调试不过,或许只能怪STL里面有几个经典错误,不知看这本书的读者发现了没有?我严重建议C++的初学者看这本书,先知道应该怎么来用C++,怎么来充分利用标准库,而不是一头钻入C++的庞大晦涩语法里面,先用标准库才能养成良好的代码编写风格,更可以提高自己的实作能力,否则你如果花上一年半载在C++的语言细节上,可能自己都生气为什么还是写不出好的程序出来,公欲善其事,必先利其器就是这个道理。

6. <<modern C++ design >> Andrei Alexandrescu 
这是天才Andrei Alexandrescu的作品,很好的一本高阶书,此书我只是浏览一下大概,没有仔细看,有些地方看不懂,全书把C++和设计模式融为一体,向人展示了许多不平常的设计技巧与设计规范,令人折服。但有些难度,还望各位慎重。至于里面的技术实不实用,就要因人而异了。

7. <<C++ Template>> 据说书中展示了模板的精华之处

8. <<exceptional C++ 和more exceptional C++>> 
Herb Sutter的书读起来比较轻松,此2书可以作为effective与more effective的姐妹篇,写作风格有些如苏格拉底的提问式教学,但应用得还不够火候。书的内容确实不错,定位和effective差不多,但我个人而言还是更喜欢Meyer的书。More有中文版,有Lostmouse翻译,质量一般,翻译给人的感觉比较仓促,很多地方都过于直译,味道怪怪的。

9. <<essential C++>> lippman (笔者注:其实这本书没必要看,作者的这本书是定位于没有接触c++的其他的程序员速成c++的,初学者也不是很适合,而对于比较熟悉C++语法就没必要看了,因为比较简单。)很简单的一本书,初学者如果觉得自己确实很菜可以先看这本书,你肯定能看懂,也是lippman的书,但英文版有些地方值得商榷,还是看候节的中文版吧,翻译得还可以,就是台湾味道太浓了些,有点喧宾夺主之嫌。如了门的读者就没必要看这本书了,看它还不如看lippman的inside the C++ object model呢。

10 . <<designing and coding reusable C++>> 关于重用和程序库设计的一本书,是由AT&T的Ellis夫妇写的,书写得很好,充分考虑了设计可重用程序库的方方面面,对于每个想设计程序库和的读者都应该看这本书,中文版名是《设计和重用C++程序库》,即将出版。

11. <<thinking in C++>> 我是觉得此书一般,并没有外面吹的那么好,可以说是中等偏上吧,要看就要看英文版的,中文版的千万别看,那个译者太不负责了?

12. <<Runmination on C++>> 据说人邮既要出版了,是由konnig夫妇写的,如果你想知道cfront的历史,还想清楚cfront的领导者,就找他们夫妇吧,那时,konig和BS是独立的,而其它的人都是由konig夫人Barbara领导的,konig在C++中可算是number 2,属于学术派的那种,实际上C++也是分派别的。 英文版的质量肯定很好,有很多新的设计观念,中文版还要期待,看看结果如何。? (笔者注:这本书好像早就出版了,中文名《C++沉思录》,不过在第二书店和china-pub没没有了,好像说是绝版了,需要的话网上下电子版自己打印一下)

13. <<Accelerated C++>> 也是koenig和Barbara夫妇写的,据说很好,但我没机会看,实在不敢评价。 (笔者注:据说这本书是很经典的C++入门的书籍)

14 <<C语言接口与实现:创建可重用软件的技术>>

下面是另外一个推荐的,有些书已经有中文版了,大家可以去china-pub看看谁翻译的,翻译得怎么样,然后根据自己的英语水平选择看中文还是英文。

此处学习C++的分了两个系列:C++/OPP/OOD系列和Genericity/STL系列。
第一系列:C++/OPP/OOD系列:分四个层次。
层级一:语法/语意(C++)

笔者注:这个层次的推荐并不好,前面的基本其实不是很合适,而且推荐的其中一些书籍也不是最好的。

[Lippman2000] Essential C++
Essential C++,by Stanley B. Lippman Addison Wesley Longman 2000,276 pages
Essential C++ 中文版 ,侯俊杰 译,282页

[Gregory95] C++:The Core Language 
C++:The Core Language by Gregory Satir 1995 O'Reilly
C++语言核心,张铭泽 译 ,236页

[Deitel98] The Complete C++ Training Course 
The Complete C++ Training Course 2/e by Harvey M.Deitel 1998 Prentice Hall
C++大学教程(第二版),邱仲潘等 译,816页

[Stevens2000] Standard C++ Bible
Standard C++ Bible?? 2000 Al Stevens IDG 
标准C++宝典,林丽闽等 译,766页

[Eckel2000] Thinking in C++ 
Thinking in C++ 2/e Bruce Eckel? 2000 1470 pages Prentice Hall
C++ 编程思想,刘宗田等 译,420页

[Lippman98] C++Primer 
C++ Primer,3rd Editoin,by Stanley Lippman and Josee Lajoie 
Addison Wesley Longman,1998 1237 pages
C++ Primer 中文版,侯俊杰 译,1999,1237页

[Struostrup2000] The C++ Programming Language
The C++ Programming Language,Special Editoin,by Bjarne Stroustrup
Addison Wesley Longman,2000,1017 pages
C++程序语言经典本,叶秉哲 译,儒林 1999

[ANSI C++] C++规格书 1998.9.1 PDF格式
ANSI C++ 1996 Draft


层级二:专家经验(C++/OOP)
[Meyers96] More Effective C++
More Effective C++,by Scott Meyers,Addison Wesley,1996,318pages
More Effective C++中文版,侯俊杰,培生 2000. 318页

[Meyers98] Effective C++ 
Effective C++,Second Edition,by Scott Meyers,Addison Wesley Longman,1998.256pages
Effective C++ 2/e 中文版,侯俊杰,培生 2000.256页

[Sutter99] Exceptional C++
Exceptional C++,by Herb Sutter,Addison Wesley Longman,2000.208pages
Exceptional C++中文版,侯俊杰,培生 2000.248页

[Sutter2001]More Exceptional C++ 
More Exceptional C++ by Herb Sutter,Addison Wesley Longman,2001.

层级三:底层机制(C++ Object Model)
[Ellis90] The Annotated C++ Reference Manual
The Annotated C++ Reference Manual,by Margaret A.Ellis and Bjarne Stroustrup 
Addison Wesley Longman,1990,447 pages.

[Lippman96] Inside the C++ Object Model
Inside the C++ Object Model,by Stanley Lippman,Addison Wesley Longman,1996,280pages
深度探索C++物件模型,侯俊杰 译


层级四:设计观念的复用(C++/Patterns)
[Gamma95] Design Patterns:Elements of Reusable Object Oriented Software,
by Erich Gamma,Richard Helm,Ralph Johnson,and John Vlissides,Addison Wesley,1995.395pages
设计模式,李英军等译,机械工业出版社,2000.254页

[Alex2001]Modern C++ Design: Generic Programming and Design Patterns Applied
by Andrei Alexandrescu,Addison-Wesley,2001,352Paper

第二个系列:Genericity/STL系列:
第一个境界是使用STL:
[Josuttis99]:The C++ Standard Library -A Tutorial and Reference,by Nicolai M.Josuttis,
Addison Wesley 1999.799pages

第二个境界是了解泛型技术的内涵与STL的学理:
[Austern98]:Generic Programming and the STL -Using and Extending the C++ Standard 
Template library,by Matthew H.Austern,Addison Wesley 1998.548page


第三个境界是扩充STL:
[Stepanov2001]:C++ Standard Template Library by P.J.Plauger,Alexander A.Stepanov,
Meng Lee,David R.Musser,Prentice Hall 2001

这些就是你应该看的书,如果你想成为高手。


基础一点的:
C++程序设计    谭浩强
高质量C++编程  林锐
C++ Primer Plus第五版
C++ Primer     第三版
C++编程思想  标准C++引导 第一卷
提高篇:
The C++ Programing Language(特别版)
C++编程思想  使用编程技术 第二卷
Effective C++

如果你准备学,一定要学好,那么我开个书单首先肯定要读一读Bjarne Stroustrup的The Design and Evolution of C++,了解一下这个语言的历史。接下来就可以看别的书了,但要不停地回头看这本书,看到你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。第一本书因人而异,基础好一些的,可以看Stanley B. Lippman的C++ Primer,这本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看Stanley B.Lippman的Essential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而且讲得非常清楚。第二本应该停止技术层面的东西,静下心来看看Pike和Kernighan的The Practiceof Programming,好好地整理一下,在程序设计中应该有哪些注意的事项。这本非常薄的booklet,可以说是程序员必读的指南。第三本书,就应该是Bruce Eckel写的、候捷译的Thinking in C++,这本书每过半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。 要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是ScottMeyers的Effective C++和More Effective C++带给我们的无尽收益。我MoreEffective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来简直是如饴甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴趣,可以发E-mail到sjtu@263.net或在饮水思源投条儿给gaobo索要,只要您提供光盘我就给免费烧。如果你已经深刻地理解了Effective C++和More EffectiveC++,那你可以发现,你在众人中已经是鸡群之鹤。可以指导项目运作了,可以编写一切你想做的程序了,可以指出别人看起来不错的代码的大小问题了。如果你能一眼看出有人的代码是对应于"条款27"或"条款M6",那你可真是让本人刮目了。


1)要学会C++的基本概念,如构造函数,析构函数,静态成员,静态函数,重载,虚拟等概念(最好把代码反汇编分析,有助于理解这些概念);
2)熟悉Windows下的消息处理流程,最好熟悉SDK的相关接口函数,有助于理解MFC的函数封装;
3)有时间分析MFC源代码的实现;
4)多练习,调试程序,知道是一回事,能自己做出来是一回事,要熟悉Debug下程序的调试。(程序调试执行和分析,是学好C++,必不可少的基本技能);
5)多做一些题目,有机会最好找个熟悉这方面的导师、专家定期指导;

-----------------------------------------------------------------------------------------------------------------
笔者心得:如何学好VC++ 首先声明,VC++内容很多,没有什么技巧可言,不可能一蹴而就,但是根据笔者的经验,以及一些精通VC++程序开发人员的总结,最好沿着如下路径学习,可以少走弯路。 (1) 学习C/C++,尤其封装、继承、多态一定要精,不要让VC++的各种特性分散注意力。这一阶段,可以把重心放到研究算法上,这是VC++的根本,所有的高级技术,都是建立在此之上。 参考书籍: 《C程序设计》 谭浩强 清华大学出版社 《C++编程思想》 BRUCE ECKEL 机械工业出版社 (2) 熟悉Windows运作机理、API编程。在这一步,要了解Windows的编程原理和机制,了解Windows系统的消息机制(多任务,消息映射等),了解一些常用的API函数,了解如何创建窗口、对话框、控件、消息循环,了解句柄的含义等。这一步的关键是要理解WIN32程序是如何运作的,把握各种窗口间的关系。 参考书籍: 《Windows程序设计》 JEFF PROSISE 清华大学出版社 笔者编写的这本书 (3) 熟悉MFC类库,应用程序框架编程,这是VC++的核心,实际开发都是围绕MFC进行的。 参考书籍: 《深入浅出MFC(第2版)》 侯捷 华中理工大学出版社 《Visual C++技术内幕(第4版)》 潘爱民(译) 清华大学出版社 笔者编写的这本书 (4) 这是最深入的部分,学习ActiveX、ATL、COM等技术,对于普通的开发,可以不必考虑它们。 注意:很多人喜欢上来就用VC++的控件制作一个Button或一个菜单,感觉很有成就感。可以利用它提高编程兴趣,但是不要陷入其中,要从原理上分析每个控件的实现方法,认清MFC的本质,不然会始终在入门阶段徘徊。掌握基本控件的使用以后,最好按照上述步骤学习,才能成为VC++高手。

  文中谈到的几本书的电子档资源如下:
C++编程思想:http://download.csdn.net/source/2380212
Windows程序设计:http://download.csdn.net/down/2404701/zhzxlc_06
本书::http://download.csdn.net/source/2753365
  http://download.csdn.net/source/2753329
  http://download.csdn.net/source/2753400
深入浅出MFC(第2版):http://download.csdn.net/source/2701583

阅读(2943) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册