文章来源:连嘉玮
很多学编程的人认为,特别是初学者会认为:“我又不找C++的工作,为什么要学C++?”,就像“我又不找C语言的工作,为什么要学C语言”一样;其实答案不在于你做不做C++的工作,而在于你做不做编程行业的工作。道理很简单,打个比方如果你听到这样的话,估计你也晓得为什么了。“我是数学老师,不是语文老师,所以我不要学语文”这话看似正确,其实当你语文不好,你的数学表达能力也就欠佳,你的数学也难以成就多大,至少你表达不清,沟通不行,很多灵感的产生来源也就被抹杀了。《少年包青天》有一句话:一些漫不经心的说话,将我疑惑解开。包拯破案,并不是所有技巧都是自己从头思考的,而是很多得以于别人的提醒,这是正常的思维逻辑。这是一个综合的范畴。你需要的是提升综合编程能力,而不是局限于某门编程语言,否则该门编程语言带出来的瓶颈,你无法超越。
很多时候,并不是我们做什么就只学什么,特别是在编程这种科技行业。因为科技行业是客观的,涉及到一个现实功能的开发,它不会给你区分你必须要用PHP,还是必须要JAVA的......
所以:社会上,复合型人才才是珍贵的,物以稀为贵。
![](https://upload-images.jianshu.io/upload_images/24563956-0b2b1b44f12b8343.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
为什么是C++?
C语言接近底层,它细节繁琐,难度大,阐述的是面向过程编程思想,难以用在现实中用户体验度良好的项目开发。它的角色就像在背后默默为你付出的其貌不扬的人,有她不觉得多,但是少了又不行。
而C++的特点:是处在中层语言,下接C语言,上接PHP,JAVA等高级语言。它是最好探索编程世界的入口。
那么,学C++的意义具体表现在哪里?
当然好的C++编程开发者,找个高薪工作是做的到的。这算意义之一。这也是很多人为什么选择编程的理由。其实我很想问,如果编程不是高薪行业,还会有多少人去学?所以利益熏心太重,不是一件好事,它会阻碍你长得高看得远。所以,不要再找那些借口“我没时间啊”,“大家都那样”,“我得结婚”,“我得养小孩”,因为这些大多数人都经历过,选择平庸是大多数人的做法,你借口太多,接下来的结果就是“大家都在挣扎,我也应该挣扎”...但是你喜欢这样的结局吗?
回报是需要付出的,在“想要”和“得到”之间,还需要“做到”。
“把薄书读厚,把厚书读薄”,相信大家都听过这种学习方法,后者是很难做到,因为是需要博览群书之后的融会贯通的总结,是涉及到境界的提升,但也只有做到了后者,你才能得到解脱。所以编程人生的最好发展模式就是:进入编程,走出编程,超越编程。
其实很难做到的是境界!
所以我认为学C++的更大意义在于:有助于让你探索到编程的本质、智能的本质,让你从现实中去理解为什么需要面向过程编程思想,为什么需要面向对象编程思想。数据结构是什么,算法是什么,编译原理是什么,操作系统是什么等等更深层的东西......
当一切都来的顺其自然的时候,你就会发现计算机前辈们的智慧了,你也就学通了编程,而不是只学通C++这门编程语言!
![](https://upload-images.jianshu.io/upload_images/24563956-cca98e491e1d1891.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
那么,对于C++范畴,怎么样才算学好C++?
其实这个问题应该问你。
你可以这样的来扪心自问:不看任何C++的书,对一个不懂计算机的人讲述C++是什么?你能回忆起多少C++的东西?你能顺理成章的给他解释为什么要有面向对象这种编程思想?其实这也是督促你要学的灵活、学的融会贯通的一种学习方法。
学好C++可以从这几个方面去检测:
1:兼容C语言的部分;
所以学好C++,必须以学好C语言为前提。同理:学好上层语言如PHP,JS,java,又必须要以C/C++为前提。违背这个原则,你会遇到无法超越的技术瓶颈。你的编程职业生涯就会打折。比如学PHP的时候,难度不在于PHP的if...else...这些语法,而在于比如PHP的面向对象,PHP的接口,数据库的优化,服务器的负载均衡,集群技术,网络编程等等。
2:面向对象编程思想:类,继承,多态这些的产生渊源。
3:泛型机制。
4:模板机制:函数模板,类模板
5:它的标准库STL里面的数据结构和算法,这些内容你主要是要知道它们有什么实现方案,虽然不要你去写,但是你要懂得来源,这样用起来才放心。如:怎么实现容器vector,list,map的?
6:非标准库,如:Boost。
当然也是它里面的数据结构和算法。这些内容它帮你写好了,你很多时候其实只是在使用接口而已。所以,熟悉它,是一件简单的事。关键是要探索它的实现方案。
7:做几个项目,包括控制台的,图形化的,以及进一步延伸的QT编程。
8:游戏编程,如:Cocos2d
9:Linux操作系统
虽然不需要你在Linux上开发,但是你要懂Linux,而它里面涉及到的东西就多了。比如进程、线程、管道、队列、消息、通信等等。
学好C++,不是你开发了几个控制台程序,也不是开发了几个项目就可以宣告结束的,它是一个长期的战争,需要有打硬仗的心理准备。你要把它总结成一棵活着的知识树。这棵树的意义在于:当你几年过后,语法基本上忘记光了的时候,来看这颗知识树能瞬间找到感觉。
这是一种境界,这种境界不是靠看过几本书、背了几个语法就能达到的,而是要思考,要领悟,要联想学习、时刻要想到怎么去融会贯通...
![](https://upload-images.jianshu.io/upload_images/24563956-a95882ac5511a60b.gif?imageMogr2/auto-orient/strip)
所以学习C++,很多的时候都是在自我修炼,修身养性,就像练成葵花宝典都需要闭关修炼一样。
记住:你学习东西不是为了别人学,也不是为了显摆而学,而是让你自己的生存竞争力提高,让你成为强者。否则在“弱肉强食、适者生存”的环境下,你会觉得很苦逼,苦逼到家,苦逼到无底洞......
反过来,学通编程的世界,会让你越活越轻松、越老越吃香。谁都不想在30岁左右转型去做和编程无关的事情,只是被逼无奈,主要是学习速度跟不上知识更新速度,因为没学通......学通编程,你就可以像国外那些高手那样,专业而自由,不会因为年纪大而被迫改行,国外的高手都是头发花白了的,而国内就像吃青春饭一样,存下来的技术实力可想而知,是难以和国外的高手媲美的。但随着改革开放越来越深入,这种趋势只是暂时的,以后会是像国外那种情景:头发花白的一个老头,去某公司解决问题,什么也不带,两手空空,坐在电脑前,以迅雷不及掩耳之势玩转着黑不溜秋的屏幕(linux,unix),几下子,问题解决,报酬上万...
人生都是几十年,别人工作一下抵得上你工作一年,他过的才是上等生活...
所以:要活出质量!
所以:现在无论你多大年纪,只要还不死,都可以有梦想去学编程。
当你学通的时候,你可以在未来任何时候爆发,比如:因为你学通了编程,所以未来什么语言火了,你可以立马转过去,总是走在前列,而且走的是那么的轻松自在......
![](https://upload-images.jianshu.io/upload_images/24563956-9bd052ad0b8f7df3.gif?imageMogr2/auto-orient/strip)
最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子!
里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”
编程学习书籍:
![](https://upload-images.jianshu.io/upload_images/24563956-178bd2e18b5d99bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
编程学习视频:
![](https://upload-images.jianshu.io/upload_images/24563956-884a3bf8b90c7e6b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)