首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么大家都觉得学C/C加加编程难?

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

现在很多人都觉得C/C++学起来相当的费劲,特别是对刚入门的,看到最后直接就没法看下去了,抽象的逻辑太多了,越看越迷糊,最后也就选择了放弃。笔者看到很多大学开设的第一门编程语言就是C/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++够学一辈子的。博大精深,非常有意思。初学者可能感受最多的就是他繁杂的语法细节,以及晕乎乎的编程思想,而且相比别的编程语言,貌似工作机会还不是很多。

笔者根据多年从业经验总结出来的C++的一些点,可能不一定很准确,从业时间越长越觉得这门语言相当有意思,如同一壶老酒放的时间越长越有味道。

当然在这并不是打击初学者,C++就是老虎了,碰不得,摸不得,更多是提醒初学者这门语言有多少特性。在学的过程中应当有哪些注意事项。还是那句话选择那种语言并不重要,重要的是自己觉得合适。小编推荐一个学C语言/C++的学习裙【 二六三,六八八,二七六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

如果对编程感兴趣,想了解更多的编程知识,解决编程问题,以及入门指导,帮你解决编程中遇到的困惑,请关注,大家一起学习,一起进步,一起熬夜加班。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205A0EH6700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券