为什么要学习c++

  • 前言

        今天是2021/10/31日,前面历时8个月的时间终于把朱友鹏老师的嵌入式linux核心课程学习完了,今天也正式进入c++课程。此刻我心存犹豫,因为linux核心课程我虽然学完了,但是缺乏实际项目练习,所以整个课程掌握得并不牢靠,前面很多的课程内容甚至都已经忘了,犹豫的是该继续做几个项目来巩固前面的课程还是继续往前走,学习c++。综合考虑,我目前的首要目标是转型软件开发,对当前的硬件开发工作已经心不在焉,所以我觉得还是应该快刀斩乱麻,尽快转向自己想做的事情,以改变现在的工作状态,这是对公司的负责,也是对自己的职业前景负责,毕竟没有好的工作状态,是不可能做出成绩的,绝不允许自己浑浑噩噩混日子,所以我现在要做的就是快速转向软件部门,从事软件开发工作,我们公司目前的软件岗位需求是使用使用c++和qt进行应用设计,反而对嵌入式linux的要求没有那么高,所以我考虑的是先去把c++和qt学完,整个学习不一定要掌握的非常牢固,只要对全局知识有一个框架,遇到不清晰的知识,能通过查询快速明了,顺利进行工作即可,待转岗后在工作的过程中再深入研究,就像以前的c语言的学习过程一样,所以我决定继续往前走,开始c++之路。

  • c++的由来

        c++最早叫带类的c,初期只是在c的基础上扩展了class等少量特性,因为需求的复杂程度增加,随之对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++杀鸡焉用牛刀,如单片机开发,c足以。c更适合做小规模的控制型程序,例如单片机等,而c++更适合大规模结构逻辑复杂的程序。

  • c++到底是什么

        c++是一门面向对象的语言,面向对象在c++中的重量级就类似于指针在c中的重量级。与c最大的不同也是面向对象的问题。c++并非纯面向对象的语言,他也有很多东西不是面向对象的,如c++兼容c的全部特性,c的语法、特性等在c++全部都管用。

        c和c++都是编译性语言,最终得到的可执行文件都与编译的平台架构有关,跨平台不能工作。c与c++在编程风格上类似,但也不同,其中典型的如后缀名就不同,c的后缀也就.c.和.h,而c++的扩展名较多。

        有一句话说难度守恒定律,语言越难,用该语言去解决问题时反而简单,语言越简单,去解决相同问题时反而更难。因为c++难,所以c++比c更适合做复杂的项目,与其它同类语言相比,c和c++没有GC(内存自动回收)机制,自己申请的内存用完后自己释放。因此c++的学习难度比java更大,使用时也更容易出错。总的来说,c++适合高手使用在强调性能复杂项目中。

  • c++的应用场景

         类似于qt、opencv、directx、offce等重量级的软件都是使用的c++来开发的。实际上c++更适合用来做后台业务逻辑,而不是前台界面,如在qt中都是后台和前台界面都是分离的。主要就是想实现不同的语言来开发应用的后台和前台。而当下c++最有优势的领域有视觉和AI分析,游戏和图像引擎、网络服务引擎等。

c++该怎么学

        c++的关键字和复杂度远超过c语言,语法特性较多,其中面向对象编程相关特性是c++的基础核心,占比在60%-70%左右,会面向对象编程就可以对外声称自己会c++,模板泛型和抽象化编程是c++的重要特征,甚至可以说是c++的精髓,像我们拿着一两万工资的人基本上用不到,一般都是大神级的程序员,用来写架构、引擎等类似的东西才能用到,我们只要能简单的写出来,能看懂,就可以出去吹牛逼,说自己熟练掌握c++了,记住千万不要吹牛逼说自己精通c++,这话太大,多半说出去的下一秒就会被打脸。

        和java、python相比,c++的语法细节过多,这也是c++难学的主要原因之一。也许我们有一些java、python的基础,学习c++的时候最大的感觉可能是c++的语法细节太多,而当我们会了c++再去玩其他语言,可能觉得其他语言太随意,这都是先入为主的理念,我想说的是,既然决定学习c++,说明c++的某些优点吸引了你,我们应该调整好心态,拥抱c++,而不是一边学还一边骂,这样多半都学不出来个啥。

        学习c++的时候不要试图去记,当然我还是认为一些必要的东西还是要稍微记一下的,例如一些常用的关键字的拼写,这个还是要记住的,更重要的是以理解为主,配合代码实践去吸收,形成自己对c++的认知,当我们要实现什么功能的时候我们要能想到c++中的什么语法特性比较合适,哪怕你不记得这个语法的关键字,语法格式等,格式这类东西没那么重要,写代码重来不会说不允许查资料,只要你能通过查询,把问题搞定就可以了,

        另外一个就是经典版本的c++与新版的c++的差异其实主要就是在关键字的增加上面,目前在c++中有很多时候编译报错让人完全不能理解,根本不能帮助我们定位到问题,所以c++后续也有些关键字是为了精确错误的。在c++20版中,新增的很多关键字和语法特性其实有些是吸收的java等高级语言里面的一些优秀特性。

  • c++程序员发展前景

        c++学习难度大,通过率低,只要是使用c++编程,无论做那个方向, c++程序员的工资一般都不低,相较与其它语言c++的程序员生命周期更长,不易出现中年危机,因为c++开发对内功的要求比较高,很多学习c++的人根本都入不了门,被淘汰。当然c++的岗位需求相较与java和python也小很多,但是这个行业一直稀缺高手。

        正如课程老师所述,语言没有好坏之分,只有适合与不适合,能存活下来的语言必有他过人之处,所以不好一棍子打死,评论好坏。c++其实适合资源较为丰富的富客户端,如手机、中控屏等,c则更适合瘦客户端,如单片机等,云端因为资源更丰富基本上不在乎效率只在乎开发难度,则更适合用java、python。html等编程语言。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值