现在很多人都觉得C++学起来相当的费劲,特别是对刚入门的,看到最后直接就没法看下去了,抽象的逻辑太多了,越看越迷糊,最后也就选择了放弃。笔者看到很多大学开设的第一门编程语言就是C++,如果单纯从学习的角度考虑学习下面向对象整体概念,先让自己有个大致的了解。然后慢慢的切入到最后的泛型编程,再到设计模式。
前些日子有个学习C++编程的小伙伴,跟我聊到说已经换编程语言了,换成java了,说到C++看到后面直接就没法进行下去了,越看越迷糊。为什么大家都觉得C++难学? C++到底难在哪?
一. 基础语法细节繁杂,特别是在编译时候,折腾半天才能编过去
很多老程序员谈起C++都会觉得这门语言博大精深,越学越觉得有味道,但是对于初学者学习的初期需要建立一个自信心,初期需要有点小小的成就感,才会有继续进行下去的信心。这也是为什么不建议初学者开始选择比较难语言学习的原因。一个浪涛把那点信心拍在沙滩上,来回折腾几次估计距离放弃不远了。小编推荐一个学C/C++的学习裙【六二七,零一二,四六四】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有很多干货和技术分享!
C++在面向对象语言里面的语法复杂度算是最高的了,常见的java语言相比C++已经简单了许多,主要指的是语法细节方面。C++在编译时候做了很多的限制,设计思想上在编译上多下功夫,尽量不要把问题带到运行过程中。玩过C语言的都会觉得C++编译起来讲究太多,C语言编译起来只要不是致命性的错误基本上都能编译过。
有多少初学者倒在运算符的重载上,再加上覆盖概念这么一折腾,更加不知道东西南北了。C++在语法设计上尽量模板化,集成性。又有多少人对模板类,类模板,模板函数,函数模板,这些概念性的东西晕晕乎乎的。总之一句话C++语法细节太多,太繁杂不适合作为入门语言来使用。
二 面向对象编程概念讲起来容易,但是真正理解还需要实际项目来彻底明白
很多人都觉得面向对象语言,概念理解起来很容易,但是在实际场景中真要把这些理论化的东西,落地化很难。面向对象语言在设计之初想的就是改进面向过程语言的逻辑条理性不强的问题。因为面向过程代码随意性比较大,如果不是对框架有所了解的人,代码很难实现基本的模块化。
面向对象的一个特性就是封装性,就是把一些细节封装成一个对象,外边想直接调用直接先实例化,排除一些障碍。
继承性就是针对面向过程中重复实现代码这一缺陷而专门设计的,已经写好多代码,或者实现的特性,再次使用的时候,直接继承过来能用的直接用上,有些方法不需要专门再去实现一遍。
多态是在继承基类的基础上完成的,因为类内容不可能完全一样,除了用共用的一部分还需要实现自己的特性就是多态的实际体现了,多样化 ,本身这几个概念在没有任何实际场景映射的情况下很难直接理解到位。
三. C++直接可以操作的项目,一般来讲比较难,不适合初学者使用
学了C++主要在游戏开发,系同级别框架开发,或者嵌入式方面开发,相对来说入手比较难。初学者做个项目练手可能会需要一个适应期。很多架构师对C++倒是推崇备至,有些人甚至喊出了C++够学一辈子的。博大精深,非常有意思。初学者可能感受最多的就是他繁杂的语法细节,以及晕乎乎的编程思想,而且相比别的编程语言,貌似工作机会还不是很多。
笔者根据多年从业经验总结出来的C++的一些点,可能不一定很准确,从业时间越长越觉得这门语言相当有意思,如同一壶老酒放的时间越长越有味道。
当然在这并不是打击初学者,C++就是老虎了,碰不得,摸不得,更多是提醒初学者这门语言有多少特性。在学的过程中应当有哪些注意事项。还是那句话选择那种语言并不重要,重要的是自己觉得合适。