C++学习之路:C++之学习经验

来源:百度文库 编辑:神马文学网 时间:2024/03/29 15:40:21

C++学习之路:C++之学习经验

讲一下我的经验。  
首先,关于入门书方面,我觉得到现在我都没有看到一部适合初学者的  
C++ 入门书。经典的书都是高手们写的,但根本不适合初学者看。这大概  
是 C++ 族群增长的一大瓶颈。  
   
我个人觉得最适合入门的一本书是「从 C 到 C++ 物件导向革命」,当     
然光看书名大家就猜到这是台湾的书了。它是 1990 年的书,作者陈建维     
先生是当时 C++ 标准委员会的一员。这本书我觉得相当不错,用不是很     
大的篇幅,从软件工程, OO 的思想、观念,到 C++ 语言。甚至当时书     
的附录就已经提到 template 了。     

可惜,这本书,现在已经找不到了。我自己有一本,但被朋友借去,不     
知流落何方。这是我第一本看的 C++ 的书。当时在台湾,这本书和     
C++ Primer, The C++ Programming Language 并称三大经典。     

《C++ Primer》     
这本是我最喜爱的 C++ 经典之一。可以说是经典中的经典。现在出到     
四版了。我看的是第三版,由 jjhou 译的。当然,虽然它叫 Primer     
,但绝对不适合初学者。尤其许多细节之繁复(像什么名称决议过程)     
,保证让初学者吐血,我相信连许多老手都会觉得受不了。     

基本上我把这本书当作「字典」、「百科全书」类来看,每当一些细     
节不是很确定,就翻翻它。有时晚上无聊抱著它,不知不觉睡著了。     

这本书如果能够大致流览过,并且熟悉其中 60~70% 以上,我相信已     
经达到普通 C++ 高手的程度了。     

当然,C++ 高手不等于软件高手。精华区有一篇文章很好。成为编程     
高手不难,成为设计高手才难。C++ 其实可以只花很短(半年至一年)     
的时间就精通,但许多编程、软件设计经验的累积,那绝不是三、五     
年的事,通常都得十年八年以上。     

《The C++ Programming Language》     
C++ 之父,B.S. 的大作。这本书我读的是特别版,也是台湾译的。     
感觉上它比 C++ Primer 更不适合初学者。尤其是连程序设计都还     
搞不清楚的新手。这本书的思想、哲学意味很浓厚,很多篇幅内容     
不是在讲语言的技术,而是在讲设计的思维。如果看过 C++ Primer     
,再来看这本,应该会有比较多的体悟。     

内容方面,虽然不若 C++ Primer 钜细靡遗,但很精致、简洁扼要     
,它不断抛出各种「设计」层次(而不是语法)的议题,冲击读者     
的思考,迫使你去关注更多编程的本质。     

有些部份,我觉得 The C++ Programming Language 比 C++ Primer     
好,例如许多语言特征为何存在?其应用时机,它给的范例都很适     
当,C++ Primer 则比较注重语法和规则的完整诠译(毕竟大师是     
搞 Compiler 的专家)     

《Effective C++》     
这本书也是经典的经典,我推荐所有学过 C++,但自觉对 C++ 一知     
半解的人,从这本书开始「重新入门」。     

它把 C++ 程序员最常犯的一些错误,不好的用法,忽略的重要细节,     
用 50 个条款,分门别类地一一列出。虽然这些内容,在 C++ Primer     
或其他大部头的经典著作,都不是没有写到。但大概很难有人有耐心     
从头到尾看完。(我猜作者自己也看不下去…)     

这本书的好处就是,一次一个主题,把为什么要这样,来龙去脉,各     
种其他旧方法的缺点,不足之处,一一分析出来。让读者确确实实了     
解并掌握优良的 C++ 编程风格的技术关键。     

如果 C++ Primer 看不下去的话,可以先从这本开始,遇到语法细节     
搞不清楚的时候,再去翻查 C++ Primer 等教科书。     

《More Effective C++》    
同上,更深入的主题,某些议题已经可以算是 C++ 高手的程度了(     
也脱离教科书的范围),例如 Lazy Evaluation, Virtualizing      
Constructors, Reference Counting, Proxy Classes…等,有些     
是特殊技术,有些已经算是 Design Patterns 的东西。     

这本书当然完全不适合入门者,它适合对 C++ 各种基本特征已经     
很熟悉的读者看。     

《Exceptional C++》    
我第一次看这本书时,几乎怀疑我是否学过 C++。但是现在,我只     
能说,这本也是经典中的经典。它已经深入到接触 C++ Object Model     
的层次。特别是 Exception-Safety 这一章一系列的步步深入,很大     
程度上改变了我对 C++ 的认识。此外,它有提到 Pimpl Idiom,这     
对改善 C++ 编译效率也有一定的帮助。其他的主题,例如泛型编程     
和对标准库的几个讨论议题、暂时物件、物件寿命、自动转换…等,也     
颇有深度。如果没看过这本,且对自己的 C++ 功力颇有信心的人,可     
以测试看看。     

《Inside The C++ Object Model》    
这本书和《Essential COM》,是我读不太下去的两本书。仅供高手     
们参考。适合有志深入 C++ 语言核心(例如想要发展 C++ Compiler      
的人)钻研。其实它并不是很难,但我认为实用性不高,有时间,     
不如看看 Effective/Exceptional C++ 系列。     

《The Standard C++ Library》     
经典中的经典,学 C++ 不学标准库,就像有脑子却没手脚,难以施展。     
C++ 标准库和大型的 J2EE, .NET 等框架相比,算是很阳春的(有个     
笑话是∶JAVA, .NET 里面有许多你一辈子永远不会用到的东西)。     
C++ 标准库只规范了标准 I/O ,流,异常,算法和数据结构,还有一些     
国际化议题。一些重要的功能,如∶ IPC, GUI 等等,都不在其内。     

这本书是德国人写的,内容务实中肯,获得世界一致好评。书中前面     
有一章特别介绍 C++ 泛型编程基础,讲得很清楚,是我看过最好的     
入门书(学习 STL)、兼工具书、参考书。虽然很大本,但绝对值得     
买一本。     

《C++ Templates》     
这本书好像是 2001 年出的,中译本在台湾直到去年才出来。内容完     
全针对 template 所有的技术细节及应用,丰富得叫人难以想像。     
有时候,我觉得 template 一直玩下去,会走火入魔,这本书的内容     
,某些时候给我这种想法。不过还是值得一看。     

《Modern C++ Design》     
这本书是近两年我最爱的一本 C++ 的书,我简直爱死它了!作者把     
C++ template 的编程技术,推向一个崭新的世界,让许多 C++ 大师     
级人物,都目瞪口呆的一本书!巧妙地结合 GP 和 OO,让动态多型     
和静态多型完美地合作无间,也让 Design Patterns 领域,有了全     
新的视野和思维。它的实作品,Loki 函式库也是我常常运用到的     
(虽然只有部份能通过编译,正常的工作)。     

一本有志成为 C++ 高手绝对不可错过的书。当然,在此之前,要     
先把 C++ Primer 等先学好再说。     

《The Design and Evolution of C++》(D&E)     
这本书台湾没有译,我起初看的是英文版,后来知道     
北京有译这本书,就托同事的朋友买回来。     

这本书不适合学习,适合对 C++ 发展历程有兴趣的人看     
C++ 之父现身说法,亲自讲述,C++ 是根据哪些原则原理产生的     
它的各种语言特征,取舍之间,又经过了什么特殊考量。     
此外,有些历史因素,影响 C++ 的发展,里面都有提到     

我当作小说在看的一本。     

此外, 《More Exceptional C++》《C++ Gotchas》这两本     
不知为何,我觉得不太喜欢,虽然它讨论的议题都很深入。     
或许实用性不高的关系,我老是觉得它似乎有点 C++ 学究的味道。     

不过,这两本也是公认的经典。     

还有很多其他的,例如 thinking in C++ C++ 沉思录,也都     
是经典,前者也不错,蛮适合当参考书用(后者比较像故事书)     
。但以学习 C++ 而言,我认为 C++ Primer, The C++ Programming     
Language 这两本比较适合(兼具教科书和参考书的价值),另外     
Effective C++ 也很棒。不过看个人喜好,因为也有许多人认为     
Thinking in C++ 比较好。     

《Essential C++》这本,评价不高,它既不如 C++ Primer 完整     
,也不适合初学者,只能说是聊备一格。应该不用买。     

另外,专讲 STL 的书也很多,有的也很深入,但从实用的角度,我     
认为只要一本 The Standard C++ Library 就大致足够了。     
Effective STL 可以当参考书看看,也是一本很不错的书。     

除了 C++ 以外, 《Design Patterns》《Refactoring》这些     
与语言无关的书也不错, 虽然有的范例不是用 C++ 写的。     

其实对其他语言的使用者而言,很难接受学个 C++ 要看这么多书     
(我想也只有 C++ 的热爱者,才会真的去读这些书)。编程的     
世界是无远弗届的,任何技术都有存在价值,所以除了 C++ 之外     
JAVA, .NET 等都可以去碰碰,没什么损失。     

C++ 要实用,还要学习许多 GUI, Database, IPC 等等的 Framework     
,这些东西没有统一标准,可说凭个人的选择,通常是基于工作环境     
的需要。
UID
1852725 
帖子
103 
精华
积分
216 
经验值
775 点 
阅读权限
30 
在线时间
25 小时 
注册时间
2008-7-12 
最后登录
2008-9-6 

查看详细资料

引用 报告 评分 回复 TOP

win85

Tom

版主

Tom

帖子
590 
积分
2115 
经验值
5660 点 
威望
52 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
2楼 发表于 2008-8-7 09:36  只看该作者 好帖,赏 我喜欢面临人生中更多的悬崖绝壁,因为这样我可以成长的更快!
UID
1303011 
帖子
590 
精华
23 
积分
2115 
经验值
5660 点 
阅读权限
200 
来自
中国-苏州 
在线时间
584 小时 
注册时间
2007-9-21 
最后登录
2010-9-29 

查看详细资料

引用 报告 评分 回复 TOP

wangzepen

工程师

帖子
103 
积分
216 
经验值
775 点 
威望
1 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
3楼 发表于 2008-8-12 14:06  只看该作者 谢谢了
UID
1852725 
帖子
103 
精华
积分
216 
经验值
775 点 
阅读权限
30 
在线时间
25 小时 
注册时间
2008-7-12 
最后登录
2008-9-6 

查看详细资料

引用 报告 评分 回复 TOP

caoqf1979

新人试用

帖子
20 
积分
27 
经验值
15 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
4楼 发表于 2008-8-29 08:00  只看该作者 好帖!顶起来!!!
UID
1159025 
帖子
20 
精华
积分
27 
经验值
15 点 
阅读权限
10 
在线时间
5 小时 
注册时间
2007-7-2 
最后登录
2010-10-15 

查看详细资料

引用 报告 评分 回复 TOP

627129346

kyle

新人试用

帖子
17 
积分
24 
经验值
35 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
5楼 发表于 2008-10-12 17:44  只看该作者 这贴不顶对不起自己啊!
UID
1898188 
帖子
17 
精华
积分
24 
经验值
35 点 
阅读权限
10 
来自
江西 
在线时间
3 小时 
注册时间
2008-10-6 
最后登录
2008-10-12 

查看详细资料

引用 报告 评分 回复 TOP

liangzhen123456

新人试用

帖子
积分
经验值
55 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
6楼 发表于 2008-11-8 11:09  只看该作者

要努力啊 支持楼主
UID
1918078 
帖子
精华
积分
经验值
55 点 
阅读权限
10 
在线时间
0 小时 
注册时间
2008-11-8 
最后登录
2008-11-8 

查看详细资料

引用 报告 评分 回复 TOP

381930260

新人试用

帖子
10 
积分
15 
经验值
35 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
7楼 发表于 2008-12-15 19:32  只看该作者 这个不错!
UID
1177229 
帖子
10 
精华
积分
15 
经验值
35 点 
阅读权限
10 
在线时间
1 小时 
注册时间
2007-7-15 
最后登录
2008-12-15 

查看详细资料

引用 报告 评分 回复 TOP

tom3114

新人试用

帖子
积分
经验值
15 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
8楼 发表于 2009-1-7 10:31  只看该作者

回复 5楼 fd002136 的帖子

顶 顶 顶 顶 顶 顶
UID
1128382 
帖子
精华
积分
经验值
15 点 
阅读权限
10 
在线时间
1 小时 
注册时间
2007-6-11 
最后登录
2009-3-27 

查看详细资料

引用 报告 评分 回复 TOP

icesunair

新人试用

帖子
积分
经验值
5 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
9楼 发表于 2009-1-7 15:31  只看该作者

回复 9楼 tom3114 的帖子

先看看到底有多好
UID
1939997 
帖子
精华
积分
经验值
5 点 
阅读权限
10 
在线时间
1 小时 
注册时间
2008-12-17 
最后登录
2009-1-7 

查看详细资料

引用 报告 评分 回复 TOP

se7venhigh

新人试用

帖子
10 
积分
13 
经验值
15 点 
威望
0 级 
  • 个人空间
  • 发短消息
  • 加为好友
  • 当前离线
10楼 发表于 2009-3-1 21:38  只看该作者 好贴顶起~
PS:现在正在挣扎Primer 加油!