小弟在这里先谢谢大家了。
26 个解决方案
#1
《C++ promgramming language》
#2
《C++ primer》适合初学者
#3
PRIMMER。好难懂
#4
我初学的时候,看C++primer有很多知识点很不好理解,后来改看钱能的<C++程序设计教程>觉得还好,虽然内容少,但容易理解,很适合初学. :)
学了半个月之后就可以看C++ primer了.
学了半个月之后就可以看C++ primer了.
#5
我也听说primer那容好像有些深了,所以有人说《Essential C++》比较适合。
#6
清华大学出版 《C++程序设计》(具体的名字我忘了)红皮!
#7
当然《C++ promgramming language》啊!
《C++ primer》还是等第四版好了!
〈C++编程思想〉这本书个人感觉不错,你等看过上面2本中的任何一本再看吧!
《C++ primer》还是等第四版好了!
〈C++编程思想〉这本书个人感觉不错,你等看过上面2本中的任何一本再看吧!
#8
有过一些基础就看Primer吧,全面而且细致,又有一点深度,极力推荐
Essential C++可以说就是Primer的精简版了
C++ promgramming language或许有一点难
C++编程思想要看就要看英文的了,中文译本。。。。全世界人民都笑了。。。。
之后可以看看effective c++和more effective c++,更为深入的
Essential C++可以说就是Primer的精简版了
C++ promgramming language或许有一点难
C++编程思想要看就要看英文的了,中文译本。。。。全世界人民都笑了。。。。
之后可以看看effective c++和more effective c++,更为深入的
#9
补充一下
钱能的书更为简单,适合从未接触C++的人学
有过面向对象基础的人不用看了
钱能的书更为简单,适合从未接触C++的人学
有过面向对象基础的人不用看了
#10
钱能的《C++程序设计》。比较适合初学者。
#11
强烈推荐钱能的《C++程序设计》
已经有第二版了
已经有第二版了
#12
钱能的《C++程序设计》比较合适
#13
《C++ primer》适合初学者
————————————————————————————————
ARE YOU SURE?
如果是有面向过程编程经验的人转来学C++,还是可以先从c++ primer开始看起。
如果是完全的初学者,恐怕要痛苦一段时间了。
————————————————————————————————
ARE YOU SURE?
如果是有面向过程编程经验的人转来学C++,还是可以先从c++ primer开始看起。
如果是完全的初学者,恐怕要痛苦一段时间了。
#14
不知道有没有人看过谭浩强编的C++,听说他的C编的非常好,C++呢?
#15
有一定经验可以从C++ Primer开始看起,但首先你要确定你真的有一定经验(会写个class那不叫懂面向对象)。这本书对初学者来说是有一定难度的——当然,对有一定基础的人来说就比较轻松了。
Bjarne的《C++程序设计语言》并不是一本语言教科书,而是一个C++的大百科全书。如果要学好C++,这本书你一定要有。
《C++编程思想》比较难啃,觉得可以在看完C++ Primer以后再看。
C++初学者,又有一定面向对象基础,莫非是学过Java?如果是这样的话,那么学C++就不是很困难的事情了。
Bjarne的《C++程序设计语言》并不是一本语言教科书,而是一个C++的大百科全书。如果要学好C++,这本书你一定要有。
《C++编程思想》比较难啃,觉得可以在看完C++ Primer以后再看。
C++初学者,又有一定面向对象基础,莫非是学过Java?如果是这样的话,那么学C++就不是很困难的事情了。
#16
《C++ primer》
#17
一本好书固然重要,但是要想学好 C++ !!
我在网上看到了一些忠告,觉得很是实在,现在发出来望能与大家共勉!!!(其中也推荐了教材)
我也是在网站上找的啊!
呵呵......
if (你看了下面的&&做好了下面的)
{
a = 坚持的时间天数;
for(;a>=1;a--)
printf("越来越,");
printf("接近成功^_^")
}
else printf("呕,我的上帝 .................");
^-^ 现在就行动吧~! ^-^
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
我在网上看到了一些忠告,觉得很是实在,现在发出来望能与大家共勉!!!(其中也推荐了教材)
我也是在网站上找的啊!
呵呵......
if (你看了下面的&&做好了下面的)
{
a = 坚持的时间天数;
for(;a>=1;a--)
printf("越来越,");
printf("接近成功^_^")
}
else printf("呕,我的上帝 .................");
^-^ 现在就行动吧~! ^-^
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
#18
楼上的说的好!!干什么事都贵在坚持!!
#19
推举钱能的《C++程序设计教程》
#20
谭浩强的C++比较不错,我看过!
#21
小弟我正困惑呢
#22
C++图书热点观察[转]
文 CSDN 孟岩 转载自2005年第11期《程序员》杂志
不知不觉,C++迎来了自己20岁的生日。20年来,C++从一个实验室语言成长为软件产业一流主导语言,在实际应用中取得了巨大的成功,同时也催生了大量为技术人员耳熟能详的经典技术著作,比如Bjarne Stroustrup的《TC++PL》和《D&E》,Stan Lippman的《C++ Primer》,Scott Meyers的《Effective C++》,GoF的《Design Patterns》,Andy Koenig的《Ruminations on C++》,Herb Sutter的《Exceptional C++》,Andrei Alexandrescu的《Modern C++ Design》,Addison Wesley的“C++ in Depth”系列等。C++领域的一些经典图书不但对于C++语言的发展起到了巨大的推动作用,而且对于其他相关技术领域也起到了指导和促进作用。例如Scott Meyers的“Effective系列”,开辟了技术图书写作的新风格,而“Design Patterns”的影响,更是远远超出C++的范畴。这些经典的好书,已经成为C++辉煌历史的一部分而被人们铭记。
20年后的今天,软件产业的规模和环境已经发生了深刻的变化。如今企业级应用整合与开发的任务主要由Java、C#、Visual Basic以及各种新型动态语言来承担,而C++的应用场合也有所收缩,不再是像1990年代中期那样从上到下包打天下,而是呈现出鲜明的应用领域特色。相应的,近期的C++技术图书也更加注重在特色领域的发挥。下面我们分别从几个角度来了解近期C++图书的热点,并且展望未来一年中C++技术图书中值得注意的选题。
经典著作全面翻新
这一两年,一大批经典技术图书都经历了一次更新换代,C++经典图书自然也不例外。第一个要说的就是Scott Meyers的《Effective C++》。这本书在1991年推出第一版,1998年推出第二版,在C++技术的传播与教育方面居功至伟。包括我在内的很多C++开发者都是通过阅读这本书而寻得升堂入室的门径。今年,《Effective C++》推出了第三版。这一版决不是第二版的简单修订,而是根据八年来C++所发生的巨大变化而进行的一次全面改写,几乎是一本全新的书。其内容涵盖了旧版的精髓,也体现了诸如Boost库、TR1标准等C++领域最新成果。如果说这本书的内容发生了重大的变化,那么可以说不变的是这本书的地位——它仍然是每个严肃的C++开发者都应当反复阅读领悟的重要作品。
另一本翻新的著作是Stan Lippman的《C++ Primer》第四版。这本书的历史地位无需赘言,迄今为止仍然是对C++介绍最全面的一本著作。第四版进行了大幅度的删修,篇幅减少近300页,而内容也大幅修改,以反映C++近年来的变化。对于希望系统学习C++的新手,或者希望拥有一本手册以备查的老手来说,这本书的地位是不可取代的。
有传言说GoF打算翻新“Design Patterns”。该书第一版于1995年初版,此后十年,设计模式领域的理论探讨和实践基本上仍然围绕这本书中的观点和内容进行,少有突破。已经有不少开发者对于这种情况表示了不满,认为初版中的一些观点已经过时,甚至对现在的一些技术应用构成思想上的羁绊。但是此书实在声名太盛,真正的突破恐怕只能由GoF自己完成,因此本书新版如果推出,必将是技术界内的一桩大事。不过传言亦称,GoF对于新版“Design Patterns”是否继续使用C++作为示范语言存在分歧。不管怎样,相信广大读者会对这本书抱有高度的关注。
新锐佳作剑走偏锋
近年来,一批C++技术新锐崛起,给我们带来了一批令人耳目一新的C++好书。在技术上,这批图书偏重于C++模板风格的巧妙运用,富于智趣而对实践的关注略显不足。这类图书以2001年Andrei Alexandrescu的《Modern C++ Design》为开端,之后又有《Boost Graphic Library》,《C++ Template Metap- rogramming》等。这些书一度以其新颖的思想和奇妙的技巧吸引了大家的目光,但由于缺乏实践的支撑,逐渐褪去光环。这两年,这类题材逐渐缩减。即使像Andrei Alexandrescu那样的模板技术奇才,最近与Herb Sutter合作的《C++ Coding Standard》也并没有过多地炫耀模板技巧,而是中规中矩地对C++编码的经验做了贴近实践的总结。这本书与Steve McConnell的经典著作《Code Complete II》相配合,应成为每一位C++开发者必读的基本著作,将帮助读者奠定坚实的编码和微观设计技术基础。
Boost是C++社群尽人皆知的“准标准库”,其中大量的组件已经基本成熟并可供应用。最近Bjorn Karlsson撰写的《Beyond C++ Standard Library: An Introduction to Boost》是市面上第一本全面介绍Boost的著作。对于那些勇于吃螃蟹的C++先锋开发者来说,这本书无疑是值得一读的。不过在C++社群,对Boost库还存在争议。大部分C++实践者比较保守,这本书对他们的吸引力恐怕将打折扣。
Stephen Dewhurst是近年来比较活跃的新锐作家,他的两本书《C++ Gotchas》和《C++ Common Knowledge》,单独来看都是值得一读的好书,可惜现在不是1995年,而是2005年,Scott Meyers、Herb Sutter煌煌巨著已然危急九五,Dewhurst只好自叹施手略慢。不过我们希望他能够再接再厉,找到创新点,突破前人。
文 CSDN 孟岩 转载自2005年第11期《程序员》杂志
不知不觉,C++迎来了自己20岁的生日。20年来,C++从一个实验室语言成长为软件产业一流主导语言,在实际应用中取得了巨大的成功,同时也催生了大量为技术人员耳熟能详的经典技术著作,比如Bjarne Stroustrup的《TC++PL》和《D&E》,Stan Lippman的《C++ Primer》,Scott Meyers的《Effective C++》,GoF的《Design Patterns》,Andy Koenig的《Ruminations on C++》,Herb Sutter的《Exceptional C++》,Andrei Alexandrescu的《Modern C++ Design》,Addison Wesley的“C++ in Depth”系列等。C++领域的一些经典图书不但对于C++语言的发展起到了巨大的推动作用,而且对于其他相关技术领域也起到了指导和促进作用。例如Scott Meyers的“Effective系列”,开辟了技术图书写作的新风格,而“Design Patterns”的影响,更是远远超出C++的范畴。这些经典的好书,已经成为C++辉煌历史的一部分而被人们铭记。
20年后的今天,软件产业的规模和环境已经发生了深刻的变化。如今企业级应用整合与开发的任务主要由Java、C#、Visual Basic以及各种新型动态语言来承担,而C++的应用场合也有所收缩,不再是像1990年代中期那样从上到下包打天下,而是呈现出鲜明的应用领域特色。相应的,近期的C++技术图书也更加注重在特色领域的发挥。下面我们分别从几个角度来了解近期C++图书的热点,并且展望未来一年中C++技术图书中值得注意的选题。
经典著作全面翻新
这一两年,一大批经典技术图书都经历了一次更新换代,C++经典图书自然也不例外。第一个要说的就是Scott Meyers的《Effective C++》。这本书在1991年推出第一版,1998年推出第二版,在C++技术的传播与教育方面居功至伟。包括我在内的很多C++开发者都是通过阅读这本书而寻得升堂入室的门径。今年,《Effective C++》推出了第三版。这一版决不是第二版的简单修订,而是根据八年来C++所发生的巨大变化而进行的一次全面改写,几乎是一本全新的书。其内容涵盖了旧版的精髓,也体现了诸如Boost库、TR1标准等C++领域最新成果。如果说这本书的内容发生了重大的变化,那么可以说不变的是这本书的地位——它仍然是每个严肃的C++开发者都应当反复阅读领悟的重要作品。
另一本翻新的著作是Stan Lippman的《C++ Primer》第四版。这本书的历史地位无需赘言,迄今为止仍然是对C++介绍最全面的一本著作。第四版进行了大幅度的删修,篇幅减少近300页,而内容也大幅修改,以反映C++近年来的变化。对于希望系统学习C++的新手,或者希望拥有一本手册以备查的老手来说,这本书的地位是不可取代的。
有传言说GoF打算翻新“Design Patterns”。该书第一版于1995年初版,此后十年,设计模式领域的理论探讨和实践基本上仍然围绕这本书中的观点和内容进行,少有突破。已经有不少开发者对于这种情况表示了不满,认为初版中的一些观点已经过时,甚至对现在的一些技术应用构成思想上的羁绊。但是此书实在声名太盛,真正的突破恐怕只能由GoF自己完成,因此本书新版如果推出,必将是技术界内的一桩大事。不过传言亦称,GoF对于新版“Design Patterns”是否继续使用C++作为示范语言存在分歧。不管怎样,相信广大读者会对这本书抱有高度的关注。
新锐佳作剑走偏锋
近年来,一批C++技术新锐崛起,给我们带来了一批令人耳目一新的C++好书。在技术上,这批图书偏重于C++模板风格的巧妙运用,富于智趣而对实践的关注略显不足。这类图书以2001年Andrei Alexandrescu的《Modern C++ Design》为开端,之后又有《Boost Graphic Library》,《C++ Template Metap- rogramming》等。这些书一度以其新颖的思想和奇妙的技巧吸引了大家的目光,但由于缺乏实践的支撑,逐渐褪去光环。这两年,这类题材逐渐缩减。即使像Andrei Alexandrescu那样的模板技术奇才,最近与Herb Sutter合作的《C++ Coding Standard》也并没有过多地炫耀模板技巧,而是中规中矩地对C++编码的经验做了贴近实践的总结。这本书与Steve McConnell的经典著作《Code Complete II》相配合,应成为每一位C++开发者必读的基本著作,将帮助读者奠定坚实的编码和微观设计技术基础。
Boost是C++社群尽人皆知的“准标准库”,其中大量的组件已经基本成熟并可供应用。最近Bjorn Karlsson撰写的《Beyond C++ Standard Library: An Introduction to Boost》是市面上第一本全面介绍Boost的著作。对于那些勇于吃螃蟹的C++先锋开发者来说,这本书无疑是值得一读的。不过在C++社群,对Boost库还存在争议。大部分C++实践者比较保守,这本书对他们的吸引力恐怕将打折扣。
Stephen Dewhurst是近年来比较活跃的新锐作家,他的两本书《C++ Gotchas》和《C++ Common Knowledge》,单独来看都是值得一读的好书,可惜现在不是1995年,而是2005年,Scott Meyers、Herb Sutter煌煌巨著已然危急九五,Dewhurst只好自叹施手略慢。不过我们希望他能够再接再厉,找到创新点,突破前人。
#23
相比之下,中文版即将问世的《Imperfect C++》就比较有新意,很值得一读,以至于Bjarne Stroustrup都相当赞赏。这位C++之父表示,如果不是因为该书太厚,他一定会将其纳入著名的“C++ in Depth”系列。这在事实上肯定了本书的高质量。我个人认为,这本书是一年来出版的最值得精读的C++著作,其中对于不少实践中经常遇到的难题进行了深入的分析,给出了实实在在的解决方案。作者Matt Wilson凭借此书以及其系列模板程序库崛起为C++社群中引人注目的新星,实在可喜可贺。
关键领域期待佳作
未来C++将主要在系统级复杂应用程序、高性能、实时中间件及嵌入式领域施展,同时,随着多核CPU的的普及和网络安全重要性的空前提升,在并发程序设计和安全程序设计方面,C++也将获得新的应用空间。因此,在这些具体领域的C++著作更值得关注。
1996年,John Lakos出版了《Large Scale C++》一书,该书与 “C++ In Depth”系列中的《Applied C++》一样,是C++著作中极少数实战派佳作,其中字字句句都来自于作者丰富的实际项目经验,对于一线的C++开发者来说是特别值得咀嚼体味的好书。可惜这本书在国内一直没有得到应有的重视,这可能跟本书中译本出版时间过晚,且翻译质量不佳有关。好消息是,John Lakos即将在2006年推出其新作《Scalable C++》。我本人将此书视为未来一年中C++领域最令人期待的作品。这一方面是出于我对于作者的高度信任,另一方面是由于该书题材的极端重要性。该书副标题为“基于组件的软件开发”,而“组件化”这一主题,是C++十几年来的一块心病。在未来,无论C++应用在何种场合,“组件化”是必不可少的基本要求。而COM技术虽然在组件化方面比较成熟,但是不具有可移植性,而且对于无须跨语言的C++开发项目来说过于复杂。因此,C++社群需要自己探讨经济适用的组件化实用方案。John Lakos本人从事大型复杂应用软件开发多年,在这方面的经验无人能敌,由他来对这个主题进行深入剖析,并且给出实际解决方案,毫无疑问是再合适不过的了。虽然这本书还在写作过程中,但是我们有理由对其抱有充分信心。在此我也呼吁本书中文版未来的出版者认真对待此书的翻译制作,不要重蹈《Large Scale C++》的覆辙。
说到COM,自从.NET推出,COM的书几乎一夜之间绝了种,几乎无人再勇于炒这碗冷饭。但这次出版界的茶实在凉得快了些,事实上直到今天,COM开发仍然是Windows平台上应用开发的一个重要方向。特别是在前两年微软Windows核心向.NET全面转型的左倾冒险主义的尝试以失败告终后,在可见的未来,Windows操作系统将继续构建在C/C++和COM的基础之上——这就确保了COM在Windows平台上的重要地位将至少延续到2011年之后。因此,COM、ATL和WTL开发技术在未来几年都还是颇具意义的出版题材。特别是近年来ATL/WTL的发展之快,相比之下,技术出版在这方面出现了一个空白点。此外,开源的Mozilla项目提供了一个可移植到所有主流平台的COM实现,这对于C++开发者来说是很具有吸引力的,却一直没有出版资源的关注,令人遗憾。
C++近年来的一个应用热点是复杂网络应用的开发,ACE在这方面已经成为越来越流行的选择,而ICE作为目前可用的最先进的高性能中间件产品,崛起的势头很猛。这两方面目前都有一些好书,特别是最近出版的《ACE Programmer’s Guide》,对于ACE编程入门很有好处。而ICE 1.3版的手册早已由马维达先生译成中文,可在网上*获得。不过坦率地说,这方面的图书还远远不够,ACE原作者Doug Schmidt所著的两卷本《C++ Network Programming》可读性和实用性不足,而ICE手册深度和广度都显不够,我们期望这方面能有更好的著作出现。
随着多核CPU的普及,并发程序设计将成为C++技术上的一个新热点。这方面目前的好书几乎没有,不知道这个巨大的空白将由何方神圣来填补。
同样,网络安全重要性的空前提升对C++开发提出了很多新的具体要求,很多C++老手面临一个“再教育”的问题。这方面Microsoft Press的《Writing Safe Code》,O’Reilly的《Secure Programming Cookbook for C and C++》,以及最近Pearson出版的《Secure Coding in C and C++》都是不错的参考。不过我发现目前C++开发者并未普遍重视这个问题。也许管理层还需要更加“血淋淋的教训”来刺激一下,才会有革新的动力。
在嵌入式方面,由于应用复杂度的逐渐提升和Symbian OS/Windows CE等面向消费的高级嵌入式操作系统的广泛应用,给C++提供了一个广阔的发挥空间。可惜在这方面,真正堪称经典的好书还是凤毛麟角,看来还需要时间和经验的积淀。不过有一本书特别值得一提,北航出版社去年引进的《嵌入式系统的微模块化设计》被国际嵌入式开发领域公推为数年来年度最重要的嵌入式软件开发技术著作,其中含有一些意义深远的创新思想,非嵌入式开发者也有必要了解此书的大致思想。
总结
程序设计语言数以千计,能够广为流传的不过几十种,而能够风光20年的更是屈指可数。Fortran已经问世50年,仍然是科学计算首选,C语言辉煌30年,至今老当益壮。C++顺利地度过了自己的20岁生日,相信属于它的日子还很长很长。作为C++开发者,我们也希望看到优秀的C++技术图书不断涌现。历史证明,C++领域内的技术创新,不但对于C++开发具有重大意义,而且对于整个软件开发技术都具有重大意义。我们有理由相信,在下一个十年里,以高水平C++技术专家和作家为代表的C++技术社群能够继续为软件技术做出突出的贡献。
关键领域期待佳作
未来C++将主要在系统级复杂应用程序、高性能、实时中间件及嵌入式领域施展,同时,随着多核CPU的的普及和网络安全重要性的空前提升,在并发程序设计和安全程序设计方面,C++也将获得新的应用空间。因此,在这些具体领域的C++著作更值得关注。
1996年,John Lakos出版了《Large Scale C++》一书,该书与 “C++ In Depth”系列中的《Applied C++》一样,是C++著作中极少数实战派佳作,其中字字句句都来自于作者丰富的实际项目经验,对于一线的C++开发者来说是特别值得咀嚼体味的好书。可惜这本书在国内一直没有得到应有的重视,这可能跟本书中译本出版时间过晚,且翻译质量不佳有关。好消息是,John Lakos即将在2006年推出其新作《Scalable C++》。我本人将此书视为未来一年中C++领域最令人期待的作品。这一方面是出于我对于作者的高度信任,另一方面是由于该书题材的极端重要性。该书副标题为“基于组件的软件开发”,而“组件化”这一主题,是C++十几年来的一块心病。在未来,无论C++应用在何种场合,“组件化”是必不可少的基本要求。而COM技术虽然在组件化方面比较成熟,但是不具有可移植性,而且对于无须跨语言的C++开发项目来说过于复杂。因此,C++社群需要自己探讨经济适用的组件化实用方案。John Lakos本人从事大型复杂应用软件开发多年,在这方面的经验无人能敌,由他来对这个主题进行深入剖析,并且给出实际解决方案,毫无疑问是再合适不过的了。虽然这本书还在写作过程中,但是我们有理由对其抱有充分信心。在此我也呼吁本书中文版未来的出版者认真对待此书的翻译制作,不要重蹈《Large Scale C++》的覆辙。
说到COM,自从.NET推出,COM的书几乎一夜之间绝了种,几乎无人再勇于炒这碗冷饭。但这次出版界的茶实在凉得快了些,事实上直到今天,COM开发仍然是Windows平台上应用开发的一个重要方向。特别是在前两年微软Windows核心向.NET全面转型的左倾冒险主义的尝试以失败告终后,在可见的未来,Windows操作系统将继续构建在C/C++和COM的基础之上——这就确保了COM在Windows平台上的重要地位将至少延续到2011年之后。因此,COM、ATL和WTL开发技术在未来几年都还是颇具意义的出版题材。特别是近年来ATL/WTL的发展之快,相比之下,技术出版在这方面出现了一个空白点。此外,开源的Mozilla项目提供了一个可移植到所有主流平台的COM实现,这对于C++开发者来说是很具有吸引力的,却一直没有出版资源的关注,令人遗憾。
C++近年来的一个应用热点是复杂网络应用的开发,ACE在这方面已经成为越来越流行的选择,而ICE作为目前可用的最先进的高性能中间件产品,崛起的势头很猛。这两方面目前都有一些好书,特别是最近出版的《ACE Programmer’s Guide》,对于ACE编程入门很有好处。而ICE 1.3版的手册早已由马维达先生译成中文,可在网上*获得。不过坦率地说,这方面的图书还远远不够,ACE原作者Doug Schmidt所著的两卷本《C++ Network Programming》可读性和实用性不足,而ICE手册深度和广度都显不够,我们期望这方面能有更好的著作出现。
随着多核CPU的普及,并发程序设计将成为C++技术上的一个新热点。这方面目前的好书几乎没有,不知道这个巨大的空白将由何方神圣来填补。
同样,网络安全重要性的空前提升对C++开发提出了很多新的具体要求,很多C++老手面临一个“再教育”的问题。这方面Microsoft Press的《Writing Safe Code》,O’Reilly的《Secure Programming Cookbook for C and C++》,以及最近Pearson出版的《Secure Coding in C and C++》都是不错的参考。不过我发现目前C++开发者并未普遍重视这个问题。也许管理层还需要更加“血淋淋的教训”来刺激一下,才会有革新的动力。
在嵌入式方面,由于应用复杂度的逐渐提升和Symbian OS/Windows CE等面向消费的高级嵌入式操作系统的广泛应用,给C++提供了一个广阔的发挥空间。可惜在这方面,真正堪称经典的好书还是凤毛麟角,看来还需要时间和经验的积淀。不过有一本书特别值得一提,北航出版社去年引进的《嵌入式系统的微模块化设计》被国际嵌入式开发领域公推为数年来年度最重要的嵌入式软件开发技术著作,其中含有一些意义深远的创新思想,非嵌入式开发者也有必要了解此书的大致思想。
总结
程序设计语言数以千计,能够广为流传的不过几十种,而能够风光20年的更是屈指可数。Fortran已经问世50年,仍然是科学计算首选,C语言辉煌30年,至今老当益壮。C++顺利地度过了自己的20岁生日,相信属于它的日子还很长很长。作为C++开发者,我们也希望看到优秀的C++技术图书不断涌现。历史证明,C++领域内的技术创新,不但对于C++开发具有重大意义,而且对于整个软件开发技术都具有重大意义。我们有理由相信,在下一个十年里,以高水平C++技术专家和作家为代表的C++技术社群能够继续为软件技术做出突出的贡献。
#24
现在小弟也向买本c++方面的书,想把c++系统的学习一下,明年12月份就毕业了,C++ primer 4e中文版06年才能出来,到时就来不及看了。
大家说说第三版作为系统学习c++的书或参考书过不过时?
大家说说第三版作为系统学习c++的书或参考书过不过时?
#25
《C++ Primer Plus》吧,正在看,很不错,比《C++ Primer》更适合初学。最新的是第五版,人民邮电出版社的。
#26
什么书不要紧 只看学习环境
比如这里 今天才感觉真的快了
比如这里 今天才感觉真的快了
#1
《C++ promgramming language》
#2
《C++ primer》适合初学者
#3
PRIMMER。好难懂
#4
我初学的时候,看C++primer有很多知识点很不好理解,后来改看钱能的<C++程序设计教程>觉得还好,虽然内容少,但容易理解,很适合初学. :)
学了半个月之后就可以看C++ primer了.
学了半个月之后就可以看C++ primer了.
#5
我也听说primer那容好像有些深了,所以有人说《Essential C++》比较适合。
#6
清华大学出版 《C++程序设计》(具体的名字我忘了)红皮!
#7
当然《C++ promgramming language》啊!
《C++ primer》还是等第四版好了!
〈C++编程思想〉这本书个人感觉不错,你等看过上面2本中的任何一本再看吧!
《C++ primer》还是等第四版好了!
〈C++编程思想〉这本书个人感觉不错,你等看过上面2本中的任何一本再看吧!
#8
有过一些基础就看Primer吧,全面而且细致,又有一点深度,极力推荐
Essential C++可以说就是Primer的精简版了
C++ promgramming language或许有一点难
C++编程思想要看就要看英文的了,中文译本。。。。全世界人民都笑了。。。。
之后可以看看effective c++和more effective c++,更为深入的
Essential C++可以说就是Primer的精简版了
C++ promgramming language或许有一点难
C++编程思想要看就要看英文的了,中文译本。。。。全世界人民都笑了。。。。
之后可以看看effective c++和more effective c++,更为深入的
#9
补充一下
钱能的书更为简单,适合从未接触C++的人学
有过面向对象基础的人不用看了
钱能的书更为简单,适合从未接触C++的人学
有过面向对象基础的人不用看了
#10
钱能的《C++程序设计》。比较适合初学者。
#11
强烈推荐钱能的《C++程序设计》
已经有第二版了
已经有第二版了
#12
钱能的《C++程序设计》比较合适
#13
《C++ primer》适合初学者
————————————————————————————————
ARE YOU SURE?
如果是有面向过程编程经验的人转来学C++,还是可以先从c++ primer开始看起。
如果是完全的初学者,恐怕要痛苦一段时间了。
————————————————————————————————
ARE YOU SURE?
如果是有面向过程编程经验的人转来学C++,还是可以先从c++ primer开始看起。
如果是完全的初学者,恐怕要痛苦一段时间了。
#14
不知道有没有人看过谭浩强编的C++,听说他的C编的非常好,C++呢?
#15
有一定经验可以从C++ Primer开始看起,但首先你要确定你真的有一定经验(会写个class那不叫懂面向对象)。这本书对初学者来说是有一定难度的——当然,对有一定基础的人来说就比较轻松了。
Bjarne的《C++程序设计语言》并不是一本语言教科书,而是一个C++的大百科全书。如果要学好C++,这本书你一定要有。
《C++编程思想》比较难啃,觉得可以在看完C++ Primer以后再看。
C++初学者,又有一定面向对象基础,莫非是学过Java?如果是这样的话,那么学C++就不是很困难的事情了。
Bjarne的《C++程序设计语言》并不是一本语言教科书,而是一个C++的大百科全书。如果要学好C++,这本书你一定要有。
《C++编程思想》比较难啃,觉得可以在看完C++ Primer以后再看。
C++初学者,又有一定面向对象基础,莫非是学过Java?如果是这样的话,那么学C++就不是很困难的事情了。
#16
《C++ primer》
#17
一本好书固然重要,但是要想学好 C++ !!
我在网上看到了一些忠告,觉得很是实在,现在发出来望能与大家共勉!!!(其中也推荐了教材)
我也是在网站上找的啊!
呵呵......
if (你看了下面的&&做好了下面的)
{
a = 坚持的时间天数;
for(;a>=1;a--)
printf("越来越,");
printf("接近成功^_^")
}
else printf("呕,我的上帝 .................");
^-^ 现在就行动吧~! ^-^
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
我在网上看到了一些忠告,觉得很是实在,现在发出来望能与大家共勉!!!(其中也推荐了教材)
我也是在网站上找的啊!
呵呵......
if (你看了下面的&&做好了下面的)
{
a = 坚持的时间天数;
for(;a>=1;a--)
printf("越来越,");
printf("接近成功^_^")
}
else printf("呕,我的上帝 .................");
^-^ 现在就行动吧~! ^-^
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
#18
楼上的说的好!!干什么事都贵在坚持!!
#19
推举钱能的《C++程序设计教程》
#20
谭浩强的C++比较不错,我看过!
#21
小弟我正困惑呢
#22
C++图书热点观察[转]
文 CSDN 孟岩 转载自2005年第11期《程序员》杂志
不知不觉,C++迎来了自己20岁的生日。20年来,C++从一个实验室语言成长为软件产业一流主导语言,在实际应用中取得了巨大的成功,同时也催生了大量为技术人员耳熟能详的经典技术著作,比如Bjarne Stroustrup的《TC++PL》和《D&E》,Stan Lippman的《C++ Primer》,Scott Meyers的《Effective C++》,GoF的《Design Patterns》,Andy Koenig的《Ruminations on C++》,Herb Sutter的《Exceptional C++》,Andrei Alexandrescu的《Modern C++ Design》,Addison Wesley的“C++ in Depth”系列等。C++领域的一些经典图书不但对于C++语言的发展起到了巨大的推动作用,而且对于其他相关技术领域也起到了指导和促进作用。例如Scott Meyers的“Effective系列”,开辟了技术图书写作的新风格,而“Design Patterns”的影响,更是远远超出C++的范畴。这些经典的好书,已经成为C++辉煌历史的一部分而被人们铭记。
20年后的今天,软件产业的规模和环境已经发生了深刻的变化。如今企业级应用整合与开发的任务主要由Java、C#、Visual Basic以及各种新型动态语言来承担,而C++的应用场合也有所收缩,不再是像1990年代中期那样从上到下包打天下,而是呈现出鲜明的应用领域特色。相应的,近期的C++技术图书也更加注重在特色领域的发挥。下面我们分别从几个角度来了解近期C++图书的热点,并且展望未来一年中C++技术图书中值得注意的选题。
经典著作全面翻新
这一两年,一大批经典技术图书都经历了一次更新换代,C++经典图书自然也不例外。第一个要说的就是Scott Meyers的《Effective C++》。这本书在1991年推出第一版,1998年推出第二版,在C++技术的传播与教育方面居功至伟。包括我在内的很多C++开发者都是通过阅读这本书而寻得升堂入室的门径。今年,《Effective C++》推出了第三版。这一版决不是第二版的简单修订,而是根据八年来C++所发生的巨大变化而进行的一次全面改写,几乎是一本全新的书。其内容涵盖了旧版的精髓,也体现了诸如Boost库、TR1标准等C++领域最新成果。如果说这本书的内容发生了重大的变化,那么可以说不变的是这本书的地位——它仍然是每个严肃的C++开发者都应当反复阅读领悟的重要作品。
另一本翻新的著作是Stan Lippman的《C++ Primer》第四版。这本书的历史地位无需赘言,迄今为止仍然是对C++介绍最全面的一本著作。第四版进行了大幅度的删修,篇幅减少近300页,而内容也大幅修改,以反映C++近年来的变化。对于希望系统学习C++的新手,或者希望拥有一本手册以备查的老手来说,这本书的地位是不可取代的。
有传言说GoF打算翻新“Design Patterns”。该书第一版于1995年初版,此后十年,设计模式领域的理论探讨和实践基本上仍然围绕这本书中的观点和内容进行,少有突破。已经有不少开发者对于这种情况表示了不满,认为初版中的一些观点已经过时,甚至对现在的一些技术应用构成思想上的羁绊。但是此书实在声名太盛,真正的突破恐怕只能由GoF自己完成,因此本书新版如果推出,必将是技术界内的一桩大事。不过传言亦称,GoF对于新版“Design Patterns”是否继续使用C++作为示范语言存在分歧。不管怎样,相信广大读者会对这本书抱有高度的关注。
新锐佳作剑走偏锋
近年来,一批C++技术新锐崛起,给我们带来了一批令人耳目一新的C++好书。在技术上,这批图书偏重于C++模板风格的巧妙运用,富于智趣而对实践的关注略显不足。这类图书以2001年Andrei Alexandrescu的《Modern C++ Design》为开端,之后又有《Boost Graphic Library》,《C++ Template Metap- rogramming》等。这些书一度以其新颖的思想和奇妙的技巧吸引了大家的目光,但由于缺乏实践的支撑,逐渐褪去光环。这两年,这类题材逐渐缩减。即使像Andrei Alexandrescu那样的模板技术奇才,最近与Herb Sutter合作的《C++ Coding Standard》也并没有过多地炫耀模板技巧,而是中规中矩地对C++编码的经验做了贴近实践的总结。这本书与Steve McConnell的经典著作《Code Complete II》相配合,应成为每一位C++开发者必读的基本著作,将帮助读者奠定坚实的编码和微观设计技术基础。
Boost是C++社群尽人皆知的“准标准库”,其中大量的组件已经基本成熟并可供应用。最近Bjorn Karlsson撰写的《Beyond C++ Standard Library: An Introduction to Boost》是市面上第一本全面介绍Boost的著作。对于那些勇于吃螃蟹的C++先锋开发者来说,这本书无疑是值得一读的。不过在C++社群,对Boost库还存在争议。大部分C++实践者比较保守,这本书对他们的吸引力恐怕将打折扣。
Stephen Dewhurst是近年来比较活跃的新锐作家,他的两本书《C++ Gotchas》和《C++ Common Knowledge》,单独来看都是值得一读的好书,可惜现在不是1995年,而是2005年,Scott Meyers、Herb Sutter煌煌巨著已然危急九五,Dewhurst只好自叹施手略慢。不过我们希望他能够再接再厉,找到创新点,突破前人。
文 CSDN 孟岩 转载自2005年第11期《程序员》杂志
不知不觉,C++迎来了自己20岁的生日。20年来,C++从一个实验室语言成长为软件产业一流主导语言,在实际应用中取得了巨大的成功,同时也催生了大量为技术人员耳熟能详的经典技术著作,比如Bjarne Stroustrup的《TC++PL》和《D&E》,Stan Lippman的《C++ Primer》,Scott Meyers的《Effective C++》,GoF的《Design Patterns》,Andy Koenig的《Ruminations on C++》,Herb Sutter的《Exceptional C++》,Andrei Alexandrescu的《Modern C++ Design》,Addison Wesley的“C++ in Depth”系列等。C++领域的一些经典图书不但对于C++语言的发展起到了巨大的推动作用,而且对于其他相关技术领域也起到了指导和促进作用。例如Scott Meyers的“Effective系列”,开辟了技术图书写作的新风格,而“Design Patterns”的影响,更是远远超出C++的范畴。这些经典的好书,已经成为C++辉煌历史的一部分而被人们铭记。
20年后的今天,软件产业的规模和环境已经发生了深刻的变化。如今企业级应用整合与开发的任务主要由Java、C#、Visual Basic以及各种新型动态语言来承担,而C++的应用场合也有所收缩,不再是像1990年代中期那样从上到下包打天下,而是呈现出鲜明的应用领域特色。相应的,近期的C++技术图书也更加注重在特色领域的发挥。下面我们分别从几个角度来了解近期C++图书的热点,并且展望未来一年中C++技术图书中值得注意的选题。
经典著作全面翻新
这一两年,一大批经典技术图书都经历了一次更新换代,C++经典图书自然也不例外。第一个要说的就是Scott Meyers的《Effective C++》。这本书在1991年推出第一版,1998年推出第二版,在C++技术的传播与教育方面居功至伟。包括我在内的很多C++开发者都是通过阅读这本书而寻得升堂入室的门径。今年,《Effective C++》推出了第三版。这一版决不是第二版的简单修订,而是根据八年来C++所发生的巨大变化而进行的一次全面改写,几乎是一本全新的书。其内容涵盖了旧版的精髓,也体现了诸如Boost库、TR1标准等C++领域最新成果。如果说这本书的内容发生了重大的变化,那么可以说不变的是这本书的地位——它仍然是每个严肃的C++开发者都应当反复阅读领悟的重要作品。
另一本翻新的著作是Stan Lippman的《C++ Primer》第四版。这本书的历史地位无需赘言,迄今为止仍然是对C++介绍最全面的一本著作。第四版进行了大幅度的删修,篇幅减少近300页,而内容也大幅修改,以反映C++近年来的变化。对于希望系统学习C++的新手,或者希望拥有一本手册以备查的老手来说,这本书的地位是不可取代的。
有传言说GoF打算翻新“Design Patterns”。该书第一版于1995年初版,此后十年,设计模式领域的理论探讨和实践基本上仍然围绕这本书中的观点和内容进行,少有突破。已经有不少开发者对于这种情况表示了不满,认为初版中的一些观点已经过时,甚至对现在的一些技术应用构成思想上的羁绊。但是此书实在声名太盛,真正的突破恐怕只能由GoF自己完成,因此本书新版如果推出,必将是技术界内的一桩大事。不过传言亦称,GoF对于新版“Design Patterns”是否继续使用C++作为示范语言存在分歧。不管怎样,相信广大读者会对这本书抱有高度的关注。
新锐佳作剑走偏锋
近年来,一批C++技术新锐崛起,给我们带来了一批令人耳目一新的C++好书。在技术上,这批图书偏重于C++模板风格的巧妙运用,富于智趣而对实践的关注略显不足。这类图书以2001年Andrei Alexandrescu的《Modern C++ Design》为开端,之后又有《Boost Graphic Library》,《C++ Template Metap- rogramming》等。这些书一度以其新颖的思想和奇妙的技巧吸引了大家的目光,但由于缺乏实践的支撑,逐渐褪去光环。这两年,这类题材逐渐缩减。即使像Andrei Alexandrescu那样的模板技术奇才,最近与Herb Sutter合作的《C++ Coding Standard》也并没有过多地炫耀模板技巧,而是中规中矩地对C++编码的经验做了贴近实践的总结。这本书与Steve McConnell的经典著作《Code Complete II》相配合,应成为每一位C++开发者必读的基本著作,将帮助读者奠定坚实的编码和微观设计技术基础。
Boost是C++社群尽人皆知的“准标准库”,其中大量的组件已经基本成熟并可供应用。最近Bjorn Karlsson撰写的《Beyond C++ Standard Library: An Introduction to Boost》是市面上第一本全面介绍Boost的著作。对于那些勇于吃螃蟹的C++先锋开发者来说,这本书无疑是值得一读的。不过在C++社群,对Boost库还存在争议。大部分C++实践者比较保守,这本书对他们的吸引力恐怕将打折扣。
Stephen Dewhurst是近年来比较活跃的新锐作家,他的两本书《C++ Gotchas》和《C++ Common Knowledge》,单独来看都是值得一读的好书,可惜现在不是1995年,而是2005年,Scott Meyers、Herb Sutter煌煌巨著已然危急九五,Dewhurst只好自叹施手略慢。不过我们希望他能够再接再厉,找到创新点,突破前人。
#23
相比之下,中文版即将问世的《Imperfect C++》就比较有新意,很值得一读,以至于Bjarne Stroustrup都相当赞赏。这位C++之父表示,如果不是因为该书太厚,他一定会将其纳入著名的“C++ in Depth”系列。这在事实上肯定了本书的高质量。我个人认为,这本书是一年来出版的最值得精读的C++著作,其中对于不少实践中经常遇到的难题进行了深入的分析,给出了实实在在的解决方案。作者Matt Wilson凭借此书以及其系列模板程序库崛起为C++社群中引人注目的新星,实在可喜可贺。
关键领域期待佳作
未来C++将主要在系统级复杂应用程序、高性能、实时中间件及嵌入式领域施展,同时,随着多核CPU的的普及和网络安全重要性的空前提升,在并发程序设计和安全程序设计方面,C++也将获得新的应用空间。因此,在这些具体领域的C++著作更值得关注。
1996年,John Lakos出版了《Large Scale C++》一书,该书与 “C++ In Depth”系列中的《Applied C++》一样,是C++著作中极少数实战派佳作,其中字字句句都来自于作者丰富的实际项目经验,对于一线的C++开发者来说是特别值得咀嚼体味的好书。可惜这本书在国内一直没有得到应有的重视,这可能跟本书中译本出版时间过晚,且翻译质量不佳有关。好消息是,John Lakos即将在2006年推出其新作《Scalable C++》。我本人将此书视为未来一年中C++领域最令人期待的作品。这一方面是出于我对于作者的高度信任,另一方面是由于该书题材的极端重要性。该书副标题为“基于组件的软件开发”,而“组件化”这一主题,是C++十几年来的一块心病。在未来,无论C++应用在何种场合,“组件化”是必不可少的基本要求。而COM技术虽然在组件化方面比较成熟,但是不具有可移植性,而且对于无须跨语言的C++开发项目来说过于复杂。因此,C++社群需要自己探讨经济适用的组件化实用方案。John Lakos本人从事大型复杂应用软件开发多年,在这方面的经验无人能敌,由他来对这个主题进行深入剖析,并且给出实际解决方案,毫无疑问是再合适不过的了。虽然这本书还在写作过程中,但是我们有理由对其抱有充分信心。在此我也呼吁本书中文版未来的出版者认真对待此书的翻译制作,不要重蹈《Large Scale C++》的覆辙。
说到COM,自从.NET推出,COM的书几乎一夜之间绝了种,几乎无人再勇于炒这碗冷饭。但这次出版界的茶实在凉得快了些,事实上直到今天,COM开发仍然是Windows平台上应用开发的一个重要方向。特别是在前两年微软Windows核心向.NET全面转型的左倾冒险主义的尝试以失败告终后,在可见的未来,Windows操作系统将继续构建在C/C++和COM的基础之上——这就确保了COM在Windows平台上的重要地位将至少延续到2011年之后。因此,COM、ATL和WTL开发技术在未来几年都还是颇具意义的出版题材。特别是近年来ATL/WTL的发展之快,相比之下,技术出版在这方面出现了一个空白点。此外,开源的Mozilla项目提供了一个可移植到所有主流平台的COM实现,这对于C++开发者来说是很具有吸引力的,却一直没有出版资源的关注,令人遗憾。
C++近年来的一个应用热点是复杂网络应用的开发,ACE在这方面已经成为越来越流行的选择,而ICE作为目前可用的最先进的高性能中间件产品,崛起的势头很猛。这两方面目前都有一些好书,特别是最近出版的《ACE Programmer’s Guide》,对于ACE编程入门很有好处。而ICE 1.3版的手册早已由马维达先生译成中文,可在网上*获得。不过坦率地说,这方面的图书还远远不够,ACE原作者Doug Schmidt所著的两卷本《C++ Network Programming》可读性和实用性不足,而ICE手册深度和广度都显不够,我们期望这方面能有更好的著作出现。
随着多核CPU的普及,并发程序设计将成为C++技术上的一个新热点。这方面目前的好书几乎没有,不知道这个巨大的空白将由何方神圣来填补。
同样,网络安全重要性的空前提升对C++开发提出了很多新的具体要求,很多C++老手面临一个“再教育”的问题。这方面Microsoft Press的《Writing Safe Code》,O’Reilly的《Secure Programming Cookbook for C and C++》,以及最近Pearson出版的《Secure Coding in C and C++》都是不错的参考。不过我发现目前C++开发者并未普遍重视这个问题。也许管理层还需要更加“血淋淋的教训”来刺激一下,才会有革新的动力。
在嵌入式方面,由于应用复杂度的逐渐提升和Symbian OS/Windows CE等面向消费的高级嵌入式操作系统的广泛应用,给C++提供了一个广阔的发挥空间。可惜在这方面,真正堪称经典的好书还是凤毛麟角,看来还需要时间和经验的积淀。不过有一本书特别值得一提,北航出版社去年引进的《嵌入式系统的微模块化设计》被国际嵌入式开发领域公推为数年来年度最重要的嵌入式软件开发技术著作,其中含有一些意义深远的创新思想,非嵌入式开发者也有必要了解此书的大致思想。
总结
程序设计语言数以千计,能够广为流传的不过几十种,而能够风光20年的更是屈指可数。Fortran已经问世50年,仍然是科学计算首选,C语言辉煌30年,至今老当益壮。C++顺利地度过了自己的20岁生日,相信属于它的日子还很长很长。作为C++开发者,我们也希望看到优秀的C++技术图书不断涌现。历史证明,C++领域内的技术创新,不但对于C++开发具有重大意义,而且对于整个软件开发技术都具有重大意义。我们有理由相信,在下一个十年里,以高水平C++技术专家和作家为代表的C++技术社群能够继续为软件技术做出突出的贡献。
关键领域期待佳作
未来C++将主要在系统级复杂应用程序、高性能、实时中间件及嵌入式领域施展,同时,随着多核CPU的的普及和网络安全重要性的空前提升,在并发程序设计和安全程序设计方面,C++也将获得新的应用空间。因此,在这些具体领域的C++著作更值得关注。
1996年,John Lakos出版了《Large Scale C++》一书,该书与 “C++ In Depth”系列中的《Applied C++》一样,是C++著作中极少数实战派佳作,其中字字句句都来自于作者丰富的实际项目经验,对于一线的C++开发者来说是特别值得咀嚼体味的好书。可惜这本书在国内一直没有得到应有的重视,这可能跟本书中译本出版时间过晚,且翻译质量不佳有关。好消息是,John Lakos即将在2006年推出其新作《Scalable C++》。我本人将此书视为未来一年中C++领域最令人期待的作品。这一方面是出于我对于作者的高度信任,另一方面是由于该书题材的极端重要性。该书副标题为“基于组件的软件开发”,而“组件化”这一主题,是C++十几年来的一块心病。在未来,无论C++应用在何种场合,“组件化”是必不可少的基本要求。而COM技术虽然在组件化方面比较成熟,但是不具有可移植性,而且对于无须跨语言的C++开发项目来说过于复杂。因此,C++社群需要自己探讨经济适用的组件化实用方案。John Lakos本人从事大型复杂应用软件开发多年,在这方面的经验无人能敌,由他来对这个主题进行深入剖析,并且给出实际解决方案,毫无疑问是再合适不过的了。虽然这本书还在写作过程中,但是我们有理由对其抱有充分信心。在此我也呼吁本书中文版未来的出版者认真对待此书的翻译制作,不要重蹈《Large Scale C++》的覆辙。
说到COM,自从.NET推出,COM的书几乎一夜之间绝了种,几乎无人再勇于炒这碗冷饭。但这次出版界的茶实在凉得快了些,事实上直到今天,COM开发仍然是Windows平台上应用开发的一个重要方向。特别是在前两年微软Windows核心向.NET全面转型的左倾冒险主义的尝试以失败告终后,在可见的未来,Windows操作系统将继续构建在C/C++和COM的基础之上——这就确保了COM在Windows平台上的重要地位将至少延续到2011年之后。因此,COM、ATL和WTL开发技术在未来几年都还是颇具意义的出版题材。特别是近年来ATL/WTL的发展之快,相比之下,技术出版在这方面出现了一个空白点。此外,开源的Mozilla项目提供了一个可移植到所有主流平台的COM实现,这对于C++开发者来说是很具有吸引力的,却一直没有出版资源的关注,令人遗憾。
C++近年来的一个应用热点是复杂网络应用的开发,ACE在这方面已经成为越来越流行的选择,而ICE作为目前可用的最先进的高性能中间件产品,崛起的势头很猛。这两方面目前都有一些好书,特别是最近出版的《ACE Programmer’s Guide》,对于ACE编程入门很有好处。而ICE 1.3版的手册早已由马维达先生译成中文,可在网上*获得。不过坦率地说,这方面的图书还远远不够,ACE原作者Doug Schmidt所著的两卷本《C++ Network Programming》可读性和实用性不足,而ICE手册深度和广度都显不够,我们期望这方面能有更好的著作出现。
随着多核CPU的普及,并发程序设计将成为C++技术上的一个新热点。这方面目前的好书几乎没有,不知道这个巨大的空白将由何方神圣来填补。
同样,网络安全重要性的空前提升对C++开发提出了很多新的具体要求,很多C++老手面临一个“再教育”的问题。这方面Microsoft Press的《Writing Safe Code》,O’Reilly的《Secure Programming Cookbook for C and C++》,以及最近Pearson出版的《Secure Coding in C and C++》都是不错的参考。不过我发现目前C++开发者并未普遍重视这个问题。也许管理层还需要更加“血淋淋的教训”来刺激一下,才会有革新的动力。
在嵌入式方面,由于应用复杂度的逐渐提升和Symbian OS/Windows CE等面向消费的高级嵌入式操作系统的广泛应用,给C++提供了一个广阔的发挥空间。可惜在这方面,真正堪称经典的好书还是凤毛麟角,看来还需要时间和经验的积淀。不过有一本书特别值得一提,北航出版社去年引进的《嵌入式系统的微模块化设计》被国际嵌入式开发领域公推为数年来年度最重要的嵌入式软件开发技术著作,其中含有一些意义深远的创新思想,非嵌入式开发者也有必要了解此书的大致思想。
总结
程序设计语言数以千计,能够广为流传的不过几十种,而能够风光20年的更是屈指可数。Fortran已经问世50年,仍然是科学计算首选,C语言辉煌30年,至今老当益壮。C++顺利地度过了自己的20岁生日,相信属于它的日子还很长很长。作为C++开发者,我们也希望看到优秀的C++技术图书不断涌现。历史证明,C++领域内的技术创新,不但对于C++开发具有重大意义,而且对于整个软件开发技术都具有重大意义。我们有理由相信,在下一个十年里,以高水平C++技术专家和作家为代表的C++技术社群能够继续为软件技术做出突出的贡献。
#24
现在小弟也向买本c++方面的书,想把c++系统的学习一下,明年12月份就毕业了,C++ primer 4e中文版06年才能出来,到时就来不及看了。
大家说说第三版作为系统学习c++的书或参考书过不过时?
大家说说第三版作为系统学习c++的书或参考书过不过时?
#25
《C++ Primer Plus》吧,正在看,很不错,比《C++ Primer》更适合初学。最新的是第五版,人民邮电出版社的。
#26
什么书不要紧 只看学习环境
比如这里 今天才感觉真的快了
比如这里 今天才感觉真的快了