一、心得体会:
如果你愿意利用五年时间来成为高手,那么你只要两三年就会成为高手,如果你想一年就成为高手,那么你五年都成为不了高手。其实学习任何东西都一样,切忌浮躁,欲速则不达。
看书注意:一切中国大陆作者的书,一概不要看。一切VC++或讲特定的编译器的书,一概不要看。
二、学好C++应该读那些书
推荐图书1:
第一本书因人而异,基础好一些的,可以看StanleyB. Lippman的C++ Primer,这本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看StanleyB.
Lippman的Essential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而且讲得非常清楚。
第二本应该停止技术层面的东西,静下心来看看Pike和Kernighan的ThePractice
of Programming,好好地整理一下,在程序设计中应该有哪些注意的事项。这本非常薄的booklet,可以说是程序员必读的指南。
第三本书,就应该是BruceEckel写的、候捷译的Thinking in C++,这本书每过半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是ScottMeyers的Effective
C++和More Effective C++带给我们的无尽收益。我MoreEffective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来简直是如饴甘甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴趣,可以发E-mail到sjtu@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.不要被VC、BCB、BC、MC、TC等词汇所迷惑――他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题――他们往往并不那么简单,或者可以引伸出很多知识点; 6.会用VisualC++,并不说明你会C++;
7.学class并不难,template、STL、genericprogramming也不过如此――难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏――你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高――其实可以时刻记住:学C++是为了编游戏的;
9.看VisualC++的书,是学不了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 EffectiveC++》以及《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-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++的开发,对计算机运行机制的理解,对建制稳定的系统,对运用其他语言,也是一种促进。
分享到:
相关推荐
Artistic Style是一款开源的源代码格式化器,支持C, C++, C++/CLI, Objective-C, C# 和 Java等语言。它能够按照预设或自定义的编码规范自动格式化代码,使得代码更整洁,符合标准的缩进、空格和换行规则,从而增强...
大家不要问我Java好还是Python,真正工作以后就是用什么就要会什么。纠结的不如去听听两个基础班~ (3)找我要黑马程序员联系方式的 这个我只有当初教我的老师的联系方式了,也半年没怎么联系了。大家还是去别的...
### Java学习笔记精要 #### 学习策略与方法 - **阅读与实践结合**:在学习Java过程中,应遵循“阅读—实践—反思”的循环模式。初次接触新概念时,先阅读理解,随后动手编写代码,最后回顾并深入理解所学知识。 - ...
- **第三代:高级语言**:分为面向过程(如C语言)和面向对象(如Java、C++)。 - **Java的历史背景**: - Java由Sun Microsystems公司的James Gosling团队在1991年开始研发,并于1995年正式发布。 - 命名由来:...
这本书由周志明编写,被认为是学习Java虚拟机(JVM)最权威的参考资料之一。本书适合那些希望深入了解Java底层运行机制的程序员,尤其是那些对性能优化、问题定位或定制虚拟机有兴趣的人士。本书主要涵盖了以下几个...
C#作为.NET的主要语言,语法上比Java更接近C++,提供了更现代的语言特性,如lambda表达式、async/await等。而Java则强调简洁性和可移植性,其语法更加一致且易于学习。 在前景方面,Java由于其开源性、稳定性和广泛...
JNI(Java Native Interface)是Java平台的一个标准组件,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI通常用于实现性能敏感的代码,如底层数据处理、硬件访问或者利用C/C++库。本文件主要探讨...
JNA极大地简化了Java调用原生函数的过程,使得Java开发人员可以更加专注于应用程序的核心逻辑,而不是纠结于底层细节。通过本文的介绍,相信读者已经掌握了如何使用JNA进行跨平台的原生函数调用。在实际项目中,合理...
现在 很纠结到底是去考研还是找工作,我考研 复习的也很不错,但是目标很高,工作的话,我c语言c++,java底子也还行,但是我最喜欢的还是FPGA和STM32等硬件编程,FPGA我也学的还行,我特别喜欢FPGA那种简洁模块化的...
他们建议读者不要过于纠结于理论上的争论,而应动手去做,无论是成功还是失败,都能从中学习。 10. **持续学习与成长**: 文章展示了两位作者在软件开发领域不断学习和调整观念的过程,强调了持续学习的重要性。随着...
当学习C++的同学还在编写链表,学习Java的同学还在配置运行环境时,学习Python的你已经能够快速上手并取得进展。 此外,Python的简单性之外,还有一个重要原因促使我推荐它:我本人每天都在使用Python编程。尽管...
在IT领域,初学者往往面临一个经典的选择:我应该首先学习算法还是编程语言?这个问题的答案并不像“先有鸡还是先有蛋”那样绝对,而是需要根据个人的学习目标和背景来决定。 首先,编程语言是实现算法的工具。Java...
因此,初学者不必过分纠结于开始学习的具体语言,而是应该致力于深入理解和实践编程基础,构建坚实的技能基础。 综上所述,编程初学者应根据个人的兴趣、职业目标以及所希望从事的领域来选择入门编程语言。每种语言...
另一部分是后端代码,可能用C++或Java实现,用于将图形化的编程块转换为Arduino能理解的C++代码,并通过串口或USB接口发送到Arduino板上。 作为"毕业设计"和"期末大作业"的主题,这样的项目不仅锻炼了开发者对编程...
比如,学习了Java中的面向对象编程概念之后,再学习Python或C++等语言时,面向对象的基本概念和原理是相通的。 对于有经验的程序员和团队领导而言,语言的学习不应该成为宗教斗争的焦点。选择哪种语言应当基于项目...
百度java 贪吃蛇源码百度 C++代码规范 (百度+阿里+谷歌) 1 前言 这份编码规范基于之前老版的火花C++编码规范,参考百度、阿里、谷歌的代码规范进行修改、将业界达成一致的共识融入其中 个人一直认为好的...
【Android NDK 入门】教程旨在帮助开发者学习如何在Android平台上使用NDK进行原生代码开发。NDK(Native Development Kit)是一个让开发者在Android应用中使用C和C++代码的工具集,它允许开发者编写高性能、低级别的...
用户可以通过编写简单的英语描述,来表达他们想要实现的逻辑或结构,然后Protoscribe会自动将其转化为符合面向对象设计的C++或Java代码框架。这种方式使得学习编程的过程更加直观,降低了理解编程概念的门槛。 C++...
在选择编程语言学习时,许多初学者可能会纠结于哪一种语言更有前途,更容易赚钱,以及市场需求更大。编程语言的选择确实会影响个人的职业发展,但更重要的是掌握编程的核心概念和能力。以下是一些关于编程语言特点、...
### Python入门基础篇 #### Python概述 ...通过以上内容的学习,我们可以了解到Python不仅是一门功能强大的编程语言,而且由于其简洁优雅的设计理念,使得无论是初学者还是经验丰富的程序员都能从中受益匪浅。