为什么说C++是全世界最难的语言?


mike2
mike2 2023-11-24 14:27:49 52015
分类专栏: 资讯

知乎上流传着一段C++经典语录:

 

图片

 

也有人说C++学着学着就放弃了,这是真的吗?为什么会这么说呢?它难在哪里?有什么特点呢?今天哩哩老师继续带着大家一起来探讨这个问题。

 

首先,“C++是全世界最难的编程语言”这句话对还是不对呢?

 

对此我的回答是:

 

图片

 

在高级语言里C++确实有一定的难度,但并不能说明它就是世界上最难的编程语言,如果你用汇编去写代码说不定会更难,更何况C++的难度也并不是不能攻克的

 

为了了解它的难度,我们下面将C++与C语言和Java语言进行一个对比

 

C语言:语法相对简单纯粹,其中的基本数据类型、数组、运算符、函数、结构体、指针等概念在很多语言里都有基本语法。其中难度较大的就是指针了,因为它的变化比较多,相对较麻烦,其难点就在于它可以直接操纵内存,导致很容易出现bug,但它的语法支点要纯粹一些。

 

Java语言:纯粹的面向对象的语言(这是一种编程思想,后面我们会讲),运行在虚拟机上,不用考虑内存。

 

C++语言:语法细节繁多,需要掌握STL(标准模板库),需要自己管理内存,编程范式比较多。

 

01

桌面开发语法细节繁多

 

C++的基础语法不仅将C语言中的语法知识点全部集成过来,还有:
(1)C++不仅有指针,还有引用;
(2)C++不仅有struct,还有class,并对struct功能做提升;
(3)四种强转;
(4)函数重载;
(5)默认参数;
(6)内联函数;
(7)异常处理;
(8)命名空间等.....
C++比C语言多了很多很多比较细小的语法知识点,所以会造成大家“C++学起来比较麻烦”的感觉,但这只是一些语法特性,掌握了一定的学习方法之后就可以熟练运用C++。
从另一个角度而言,语法细节越多,提供的功能越多,那么可以解决的问题也就越多,这也证明了C++的灵活性与实用性

02

桌面开发标准模板库STL

 

C++里面有一个库,简称STL,叫做标准模板库。这个标准模板库里面有六大组件:容器、迭代器、算法、适配器、函数对象、空间配置器。
我们不仅要学会这六大组件的基本使用,还要去读源码。因为基本使用只代表会用,一旦出现了问题、出现了bug你是无法解决的,但是如果你读懂了源码,看懂别人是怎么实现的,那基本就能解决这些问题。
源码也跟我们上文提到的Linux内核驱动开发一样属于要修炼的内功。一些接触过很多语言比如C语言、Python、Java的同学往往只停留于表面,想要真正运用到这门语言的特性就必须要去读源码。
 
我们可以通过读源码看到高手是怎样写代码的,同时从别人的代码中得到一些启示并运用到自己的代码中去,最终提升自己的代码功底。
关于读源码的内容我们在后面的课程里会更加深入地为大家进行讲解,教大家一步一步地去读源码,一步一步地将源码用到我们平时的写代码里面去,当然这也是我们课程的一个难点。

03

编程范式比较多

 

常规的四大编程范式有面向过程编程、面向对象编程、泛型编程、函数式编程,但除此之外,C++实际上还有更多编程范式。
其中面向对象编程,我们前面说过C++是一种面向对象的语言,向对象的语言会有对应的四大基本特征:抽象、封装、继承、多态。其中的几个难点有:
 
(1)拷贝构造函数、赋值运算符函数的原理与实现比较麻烦,细节非常多。
(2)多继承、菱形继承、虚拟继承比较麻烦。
(3)多态的原理、使用、内存布局形式。
但是大家不用过于担心,因为在王道C++的教学过程中,我们会把细节画出来,带领大家一点一点地剖析直到成功掌握。

04

需要自己管理内存

 

如果大家之前完全没有接触过C++或编程语言的话,那么可能对于内存的概念不太理解,简单来说就是你去写一段代码,这个代码写完之后的这些数据是要放到我们的内存里面去的,就跟你出远门要搭乘相对的交通工具一样,这个内存对写代码的人而言就是一种非常重要的“交通工具”。
C++要求对内存进行人工的管理,虽然带来了不少麻烦和困难,但人工管理也有人工管理的好处。如果全部都是由机器做的,程序员不能掌控,就无法将自己的能力体现出来也不等你进行更好的管理,不仅丧失了自由度还丧失了可能性。
除了以上我们提到的有关于C++的难点之外,它从2011年以后开始每三年会更新一次标准:C++11、14、17、20、23(后面的数字代表11年、14年、17年),每次的标准更新都会带来很多的语法特性。
但实际上我们单纯的去写一部分C++代码的时候可能用不到这么多特性,当你真正要使用这些特性的时候再去学习也是可以的。
不过正是因为C++具有一定程度的难度,一旦学好之后我们的内功能进一步修炼得比较深厚,我们的自由度会更高,写出来的东西也会更优秀,那么在这个社会上、在这个行业中你就能够屹立不倒,这也是我们推荐有能力的同学去学习C++的原因之一。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=28926
赞同 0
评论 0 条
mike2L0
粉丝 0 发表 9 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2980
【软件正版化】软件正版化工作要点  2897
统信UOS试玩黑神话:悟空  2872
信刻光盘安全隔离与信息交换系统  2758
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1291
grub引导程序无法找到指定设备和分区  1262
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  171
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  169
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  164
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!