C/C++培训
达内IT学院
400-996-5531
C++ 是一门编程语言,也是相对较难学的一门语言,但学好C++之后,那么再学其它语言就不难了。我们把C++、C#等在下文统称为C语言。
在编程领域里,每个人都会有他/她的入门语言,各持己见。我个人认为 C 语言是一个很不错的选择,语法简单,深度可深可浅,高级语言的鼻祖。很重要的一点是现今的各种编程语言,或多或少都是 C 语言的衍生品,或者是衍生品的衍生品。语言相通,只要 C 语言学好了,上手其他语言问题不大。C 语言的灵魂在于指针,指针可以帮助你更好的理解内存,理解操作系统的工作机理。
C++新手
选择一本好书
如果你发现以“数字”命名的书籍,请扔掉!(21天学通C++?)
如果你发现以“通”字样命名的书籍,请扔掉!(零起点学通C++?C++从入门到精通?)
如果你发现把“Visual” 和 “C++” 联系起来的 C++ 教程,请扔掉!(太多了,不举例了)
如果你发现“void main”作为实例的书籍,请扔掉!
如果你发现“”作为实例的书籍,请扔掉!
……
有几本书可以供你选择:《C++ Primer Plus》,《C++ Primer》,《C++程序设计语言》
我入门用的是《C++入门经典》,继而读的是《C++ Primer》。其实好书和差书很容易区分,厚度和价位是一个很关键的点,通常薄薄的,又便宜,书名却非常霸气的告诉你如何精通,那你果断扔了,想都不要想。
选择一个好的IDE
请注意我强调的是IDE(集成开发环境),而不是套餐(GCC+VIM/EMACS+GDB+[linux]),对于一个初学者来说,一定要抓住重点。
那个套餐酷么?太酷了!学么?可以学,但不是现在。现在你需要的输入几行代码,然后运行处结果,如果有小问题,可以方便调试的工具。gcc,vim/emacs,gdb,linux 必须承认,它们很优秀,但是学好很需要时间。不夸张的说,入手vim/emacs or linux 比入手 C++ 的时间只多不少。初学者一定要相信这一点,网上太多人吹嘘学 C++ 不应该用 IDE ,就应该直接 文本编辑器+GCC 用 GDB 调试,进而言语鄙视 IDE 。我不知道你抱着什么心态,我只想说你入门是那样入门的吗?当时有没有 IDE ?你了解 IDE 吗?你公司用什么开发?
IDE 调试底层调用的也是调试工具,对调试工具进行封装,使之更为人性化了些。技术永远不是用来炫酷和装B,是用来解决实际问题的。因此,不管你用什么语言,什么工具,什么平台,只要能把事情做好就行了。
对于一个入门新手,一个人性化的调试环境是必须的。当然,作为一个 C++ 程序员的话,GCC/GDB 是必须要去了解的,linux 也是必须要会的。
保持一颗平静的心
给大家看一篇文章:“21天教你学会C++”。“想要 21 天学会C++,首选需要花8年时间学会 C++,然后去学量子物理,生物化学,分子生物学,以及遗传学,制造“返老还童”药剂,把自己传送回学编程的21天”——这是迄今为止我所知道的最容易的《Teach Yourself C++ in 21 Days》,推荐大家去看看原文。
大家再去看一篇文章:“C++ 程序员自信心曲线图”,“对于大多数的自称自己熟悉C++的程序员来说,基本上来说他们都是用C++的语法来写C。”
保持一颗平静的心是很重要的,切记不要急于求成,切记不要浮躁。学习 C++ 不是三天两天的事情,文中也说了,用 10 年时间来学习编程。你准备好了吗?
有人天真的以为学几天 C++ 就可以写软件了,后来发现学了之后还是什么也干不了,软件需要界面,于是去学 MFC,学了 MFC 后才发现 MFC 没什么,反而是 C++ 基础太差,反过头来继续学习 C++。那个天真的人就是我,我就是这么过来的。高端的背后也无非都是一行行基础的代码,只要把基础打好了,高端也就没什么了(这里的高端并不是特指 MFC 高端,基础也不是特指 C++,任何事物我想都是一样的)。我想告诫大家,打好基础比学高端的技术要有用的多,所以不要急。
还需要什么?
我觉得足够了,一本好书,一个好IDE,一颗平静的心态(当然你要有一台PC机了)。有三点我需要说明一下,第一,平台的选择,这个无所谓的,C++ 是跨平台的,学 C++ 标准就好了;第二,去培训机构培训会不会学的快一点?我对培训只用两个字总结“扯淡”,真是扯淡。第三,视频学习?我不推荐。就好像很多人学MFC,看老师的视频一样。我们又不是小孩子了,学东西需要手把手吗?再者说了,手把手教的东西都是死的。当你手里握着一把锤子的时候,你会发现这个世界全都是钉子。解决问题的方法有很多种,视频能教给你的只是那么固定的一种或者几种,思维定势是很可怕的事情。
我个人是非常不赞同去花钱培训,或者呆呆的在电脑前面看视频。
学习是一种经历,进而这种经历就变成了你宝贵的经验。遇到问题,勤于思考分析,查阅资料,逐渐的培养出了自己快速、独立解决问题的一套方法,这才是你的财富,这才能以不变应万变。对于程序员来说,就是对 BUG 敏锐的嗅觉。
C++入门(停留在表面)
参考标准:熟练掌握 C++ 语法结构,了解 C++ 主要模块,技术难点。大部分书上可以找到的知识点。
学习 C++ 要不要学习 C ?
作为这样的一篇文章,这个探讨几乎是必须要做的。我的观点很明确,要学!因为我先学 C 语言,后学的 C++ 的,而且学习使用过程中无数次穿插的相互学习。我的程序中从来没有刻意的区分这是 C 还是 C++,我把握的标准是怎么样方便怎么来。就好像文件读写我从来都不用 C++ 的文件流,因为我习惯了 C 语言的 fread、fwrite、 fopen、 fseek、 ftell 等等。我是站在语言的语法和库的角度来说“要学”的。如果你要学面向对象的话,那就没必要学 C 了,好像也没有学 C++ 的必要了,你可以选择一个纯面向对象的语言去学面向对象岂不更好。总结,以我的个人经历来说,学 C++ 可以先学习 C 语言(观点已明确,探讨结束!)。
要了解哪些东西呢?总结是两点:语法和库。所有的语言几乎都是一样的。
语法[基本类型、标准库类型、数组和指针、表达式、语句、函数等]
STL[容器,算法]
模板与泛型编程
类与面向对象
语法熟练的是必须的;熟练使用 STL 编程,面向对象思想不是一天两天就可以有的,需要不断的历练和实战才能培养出来的;面向对象在C++中的实现方式一定要熟(继承,派生,虚函数等);模板的实参演绎要搞清楚。
如何实现入门?
看书。《C++ primer》,《C++标准程序库》,《C++ template》
多思考,多写小程序。
C++进阶(技术研究)
参考标准:内部机理,奇淫技巧
深入C++内部,探究实现的机理[为什么模板不支持分离编译?虚函数/多重继承是怎么实现的?类型转换做了那些事情?异常处理?等]
STL源码学习[学习别人的设计方法?为什么STL效率高(为达效率,无所不用其极)?学习数据结构和算法?内存池?RTTI?等]
内存[理解指针运算?内存对齐?类的内存布局?new/delete 和 malloc/delete的区别?函数变参的实现?存储方式?智能指针?等]
编译器在编译,链接的过程中偷偷的做了那些事情。[如何分析编译器的提示?链接错误代表可能出现哪些问题?等]
跟上C++库的潮流,研究新标准。
如何实现进阶?
看书。Effective 系列书籍,《STL源码剖析》,《C++标准程序库》,《C++沉思录》,《高质量C/C++编程》,《C++编程思想》,《深度探索C++对象模型》等。
写软件,遇到问题之后自己折腾,自己探索。
逛社区,回答别人的问题。
多看看别人的博客。
结交自己的技术圈子。
C++高手(走出C++)
参考标准:面向对象编程,泛型编程
面相对象和泛型编程是 C++ 的精粹,学好这些方面光靠书本上的知识是不够的,只有大量的实战才能切身体会它们的优势。
很多人自以为自己C++学的很不错了,其实他只是在用C的方式写C++代码而已,这句话不无道理。
如何成为高手?
看书 《面向对象分析与设计》,《设计模式——可复用面向对象软件的基础》,《泛型编程与STL》《C++模板元编程》等。
“实战->感悟->总结->实战->感悟->总结……”如此循环
大一的时候一定要学好编程,再就是学习绝对不能只学老师讲的那点东西,一定要有较强的自学能力,买些辅导书练习。
学习编程最重要的就是实战,多写,每天都要坚持写,写有用的软件有用的程序,从小程序到大系统,逐步培养自己的自信心。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved