`
java-mans
  • 浏览: 11444901 次
文章分类
社区版块
存档分类
最新评论

《纠结学习C++还是Java》之《如何学好C++》

 
阅读更多

一、心得体会:

如果你愿意利用五年时间来成为高手,那么你只要两三年就会成为高手,如果你想一年就成为高手,那么你五年都成为不了高手。其实学习任何东西都一样,切忌浮躁,欲速则不达。

看书注意:一切中国大陆作者的书,一概不要看。一切VC++或讲特定的编译器的书,一概不要看。

二、学好C++应该读那些书

推荐图书1:

第一本书因人而异,基础好一些的,可以看StanleyB. LippmanC++ Primer,这本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看StanleyB. LippmanEssential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而且讲得非常清楚。

第二本应该停止技术层面的东西,静下心来看看PikeKernighanThePractice of Programming,好好地整理一下,在程序设计中应该有哪些注意的事项。这本非常薄的booklet,可以说是程序员必读的指南。

第三本书,就应该是BruceEckel写的、候捷译的Thinking in C++,这本书每过半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是ScottMeyersEffective C++More Effective C++带给我们的无尽收益。我MoreEffective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来简直是如饴甘甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴趣,可以发E-mailsjtu@263.net或在饮水思源投条儿给gaobo索要,只要您提供光盘我就给免费烧。如果你已经深刻地理解了EffectiveC++More Effective C++,那你可以发现,你在众人中已经是鸡群之鹤。可以指导项目运作了,可以编写一切你想做的程序了,可以指出别人看起来不错的代码的大小问题了。

推荐图书2:

1.《C++Primer》
有“C++的百科全书”,C++程序员人手必备。对语法、语义的描述非常细致和严谨,适合有一定经验的C、C++程序员作为工具书和理论指导书使用,但由于其有一定深度,而没有进阶顺序的章节安排,所以不适合初学者做为教材使用,价格略高。
难度:★★☆
质量:★★★★★
广度:★★★★★
深度:★★★★
性价:★★★☆

2.
《C++Primer Plus》
初学C++不错的书,覆盖面较全,章节安排比较合理,由浅入深,也很容易,故因此失去了一些深度。价格比较便宜,但翻译质量略有不足。
难度:☆
质量:★★★☆
广度:★★★★
深度:★★★
性价:★★★☆

3.
《Essential C++》
lippman的一部面向初学者的作品。在他写了那么后一本primer之后,为何还要写这么薄这么浅的书呢?其实primer对于初学者来说太笨重了,而这本书却是从不同的方面——C++的本质和组织结构对语言进行阐释,可以帮助初学者对这门语言有一个大致的了解,但知识范围不很全面,不适合系统学习,读者需要一定的编程知识。
难度:★☆
质量:★★★★
广度:★★★☆
深度:★★★
性价:★★☆

4.
《Effective C++》、《More Effective C++》
C++真牛人大手笔,之以条款的形式回答了程序员在使用C++时经常提出的“因该注意些什么?”,“因该避免什么?”,“因该怎样去解决?”,“为什么?”等问题。C++程序员想要让自己的水平上更高的档次,此二书必看。价格稍贵,有一定难度,不适合初学者。
难度:★★★☆
质量:★★★★★
广度:★★★
深度:★★★★★
性价:★★

推荐图书3:

《C++演化和设计》,为什么要有复制构造函数?为什么要有初始化列表?

《C++沉思录》,这里教的不是编程,而是思考的方法。

《Advanced C++》《Modern C++》,可以让你知道C++各种神奇的用法。

《泛型编程与STL》,是把C++实践到极致东西,STL神一样的模板库。很强大。

《深入探索C++对象模型》,让你了解编译器下的C++是什么样子的,让你了解C++的性能并不差。

C++初学者50个忠告

1.C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《ThinkingIn C++》,不要看《C++变成死相》; 3.看《TheC++ Programming Language》和《Inside The C++Object Model,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VCBCBBCMCTC等词汇所迷惑――他们都是集成开发环境,而我们要学的是一门语言; 5.不要放过任何一个看上去很简单的小编程问题――他们往往并不那么简单,或者可以引伸出很多知识点; 6.会用VisualC++,并不说明你会C++ 7.class并不难,templateSTLgenericprogramming也不过如此――难的是长期坚持实践和不遗余力的博览群书; 8.如果不是天才的话,想学编程就不要想玩游戏――你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高――其实可以时刻记住:学C++是为了编游戏的;9.VisualC++的书,是学不了C++语言的;10.浮躁的人容易说:XX语言不行了,应该学YY;――是你自己不行了吧!?11.浮躁的人容易问:我到底该学什么;――别问,学就对了; 12.浮躁的人容易问:XX有钱途吗;――建议你去抢银行;13.浮躁的人容易说:我要中文版!我英文不行!――不行?学呀! 14.浮躁的人容易问:XXYY哪个好;――告诉你吧,都好――只要你学就行;15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; 17.C++不仅仅是支持面向对象的程序设计语言;18.学习编程最好的方法之一就是阅读源代码; 19.在任何时刻都不要认为自己手中的书已经足够了;20.请阅读《The Standard C++ Bible(中文版:标准C++宝典),掌握C++标准;21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 22.别指望看第一遍书就能记住和掌握什么――请看第二遍、第三遍;23.请看《Effective C++》和《More EffectiveC++》以及《Exceptional C++》; 24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YYZZ哪个好;26.请看《程序设计实践》,并严格的按照其要求去做; 27.不要因为CC++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;28.C++绝不是所谓的C的“扩充”――如果C++一开始就起名叫Z语言,你一定不会把CZ语言联系得那么紧密;29.请不要认为学过XX语言再改学C++会有什么问题――你只不过又在学一门全新的语言而已;30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++31.学习编程的秘诀是:编程,编程,再编程; 32.请留意下列书籍:《C++面向对象高效编程(C++Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-OrientedSoftware Construction)》《设计模式(DesignPatterns)》《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.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version100.XX 48.保存好你写过的所有的程序――那是你最好的积累之一;49.请不要做浮躁的人; 50.请热爱C++!(yetaiqiang123)

三、C++应用方向:

C++在国内,比较多用于三个地方
1、游戏
2、unix,linux后台开发
3、windows桌面程序
打算做游戏的话,学那些计算机图形学, OpenGL, DirectX等
打算做后台开发的话,要学linux/unix, 网络编程等
打算做windows桌面程序的话,要学好MFC,windows SDK等
(但现在做桌面程序越来越少,有点过时了。)

一般网络通信、图形图像处理、游戏引擎、CAD,多媒体方面多一些。
不一定是做产品的。

web开发是c/c++的弱项(因此java才有立足之地)

在网络通信、游戏开发上面C++有不可比拟的优势。

四、C++优劣势

1、 因为学习C++的人越来越少,所以很难招到合格的C++工程师,所以C++工程师的身价普遍比较高。

2、 C++优势是用来开发大型软件,从中可以学习到很多优秀的软件设计思想。Java没有指针,在遇到数据量较大的数据排序,搜索,动态内存分配时,就无法完成了。

3、 学习C++可以学习到计算机底层的理论,即使不是用于C++的开发,对计算机运行机制的理解,对建制稳定的系统,对运用其他语言,也是一种促进。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics