教育培训 > 现在的编程语言越来越多,为什么C和C++ 还没有被现在的时代淘汰呢?

现在的编程语言越来越多,为什么C和C++ 还没有被现在的时代淘汰呢?

2020-10-30 23:01阅读(60)

现在的编程语言越来越多,为什么C和C++ 还没有被现在的时代淘汰呢?:小编断言,只要还有编程语言在,C语言和C++就很难被淘汰。计算机的编程语言的发展可分为三个

1

小编断言,只要还有编程语言在,C语言和C++就很难被淘汰。

计算机的编程语言的发展可分为三个阶段。

首先是机器语言,本质上是计算机CPU可以直接识别的指令集合。芯片之争的时候,我们知道了CPU的雏形是集成电路。根据电路的开关信号的变化进行运算是编程语言最朴素的理论基础。实际编程时,使用二进制的0和1进行编码,编写一个计算机可以运行的Helloworld的程序,其实就是0和1排列组合。有密集恐惧症的人程序没写完,就先疯掉了。机器语言毕竟让机器理解的,与人类思维的方式还是有很大区别的,因此记忆起来非常的麻烦。现在能懂这种编程语言的程序员是国宝级的存在。

其次汇编语言,用一些程序员容易理解和记忆的字母,单词来代替一个特定的指令。譬如:“ADD”表示数字逻辑上的加减,“ MOV”表示数据传递等。有了汇编语言,程序从此有了可读性。尽管编程是方便了,汇编语言依然没有摆脱机器的束缚,程序员要根据不同的CPU学习相应的汇编语言,通常情况我们还是称汇编语言为低级语言。

再其次高级语言,高级语言是参照数学语言而设计的近似于日常会话的编程语言。高级语言独立于机器,程序员在编程时也只需关注问题本身。

了解了上述背景之后,咱们再回到题主的问题。题主说的编程语言越来越多中的编程语言是高级语言,为了解决特定问题而生。大家常说的JAVA、Python、PHP、GO、R语言等包括C++都是高级语言。

C语言比较特殊,它兼具了汇编语言的高效,高级语言的灵活,常常被称为中级语言。鉴于此C语言被广泛的应用到对处理速度要求比较高的应用场景,也有很多高级语言的编译器最初都是由C语言编写的。C++被看做是带类的C语言,受到广大程序员的欢迎。

总之,其他高级语言一般情况是为解决具体业务问题而生,C或者C++在一定程度上是支持他们的基础语言,且没有更好的替代。

最后,题主跟屏幕前的您了解了么?

我是@代码Go说科技 ,码农的视角看科技,带给大家不一样的感受。欢迎大家阅读评论转发加关注。

声明:图片来自网络,如有侵权,联系必删!

2

C和C++一下子被替代是不可能的,但是其实已经慢慢的在淡出很多领域了。

最近,连Linus(Linux的创造者)也已经在感叹,他们很多人已经老了,但是Linux的社区维护却很难找到合适的人。

历史

C和C++的流行伴随着计算机的兴起,在那个时候,并没有像现在这么多编程语言可供选择,也导致基本所有计算机都是用C/C++写的,包括Windows、Linux还MacOS的内核,以及各种嵌入式硬件的驱动代码。

而除非这些东西被时代所淘汰,否则它们的维护和更新依然会使用C/C++语言,它们牵涉到的东西太广太庞大了。

即使现在编程语言越来越多,但是大部分都只是对开发者更加友好了,相应的对硬件的消耗却也增加了,如果用这些语言来开发底层系统的话,现在的硬件性能也没有好到可以不用在乎这部分损耗的程度。

现状

即使现在Go语言号称性能可能达到C/C++的水平(官方测试与C语言的性能差距在10%~20%)之间。

一来Go语言的流行度相比C/C++还是太低,还需要时间的沉淀,还有C/C++这么多年累积的第三方库也不是都能找到替代。

二来C/C++留下的历史包袱太重,很难让人愿意投入这么多时间和人力去重写全部代码,据微软公开的信息,Windows Vista的代码量超过5千万行,开发投入的人力在1000人左右,投入的资金在200亿美金。这还是在有之前系统的积累之下,如果完全使用新的编程语言来开发的话,时间、人力还有资金至少需要翻几倍,即使完成之后的收益比现在高,也很难让人有魄力下这么大的决心,更不要说还牵涉到现有开发人员的安排问题。

再者,C语言特性也一直随着时间保持着更新,最新的C++ 20标准也已经制定好了,功能上并不会差其它语言太多。

但是,Linux除了内核依然是使用C语言维护之外,对于驱动等比较外围的代码已经在考虑使用其它语言来替代了。C语言虽然可以达到很高的性能,但是想要优化到这个程序对于程序员的要求会很高,其它语言则会降低这一门槛。

另外,如果硬件出现大变革,比如量子计算机研发成功,那时候还会不会用C/C++来开发量子操作系统就不一定了。



所以,C/C++不是不可能被时代淘汰,只是需要的时间可能比我们的想像要长而已。

3

就打一个很简单的比方吧:房子修得再高、再华丽,没有稳固的地基和坚实的底层结构,都不能长久,甚至可以说根本就禁不住稍微大点的风雨地冲击。地基和底层结构重要,所以用来建设地基的钢筋和枕木也是非常重要的。

在计算机中扮演地基角色的就是计算机硬件和操作系统。而高级程序语言C和C++就是用汇编语言编写而成,通过操作系统调用函数来完成对硬件的调用。

而这意味着C和C++语言就是用来建设地基的钢筋和枕木,对于建设高楼大厦是非常重要的。所以无论编程语言再多都还不能撼动其地位。

2.C和C++编程语言的效率更高、使用人群很庞大。

C和C++这两个编程语言自从1985年诞生以来,就很很多相关大神编写、完善它的函数库。就目前为止,还没有哪个高级编程语言比它们的效率更好。同时,很多人使用多年、已经习惯了。

3.C和C++语言也没有因为资格老,就拒绝更新。它也是在不断学习,接受新东西完善自己。

现在的版本已经更新到20,而且C++就是在C的基础上进行拓展的。它还是吸收了JAVA,Python,Ruby等等高级编程语言面向对象的特性。


要是觉得@种花家的科技兔珺 写的对您有所帮助,还请动动您发财的小手,点点赞。要是想要了解更多计算机,编程算法相关的知识,也可以顺手关注一下我。

4

交通工具再多,代替不了人的两只脚??

5

说C语言要被淘汰都是美国等发达国家骗人的,他们用C语言做底层,掌握了核心技术,然后让你用他们的开发的高级语言工具为他们工作,现在看似增加了越来越多的编程语言,其实都是鸦片,语言越高级,离底层越远,看起来越用越简单,培养出了一堆堆应用层编码工人,但核心的东西一点没有,于是你就看到了美国一制裁,我们芯片没有,操作系统没有,连设计软件也没有,如果再制裁狠一些,像CAD,PHOTOSHOP都不让你用,更甚连编译器都不让你用,那你学那一堆无法编译的语言就一点用都没有,你就会发现中国一堆堆的码农结果啥都不会做,所以如果真的爱编程,就要学C,开发有核心技术的东西,那样才不会被淘汰和被制约

6

首先,C和C++是永远不会过时的语言!

只要操作系统还是用C来写,C就永远不会被淘汰。国内的C岗位主要是做内核相关的开发,以及一些嵌入式的需求,当然嵌入式的也有用C++的。

C++不会被淘汰的原因之一是C不会被淘汰,因为C++抱紧了C的大腿,C++最基础的定位就是better C。也有一些领域是C++专属的,比如说游戏引擎等。

C++是基于C语言发展而来,起初,C语言并不支持面向对象,后来引入了面向对象的概念,即成了C++,C++是编译型语言,编译器将代码编译成机器码,一般用于追求高效的,底层的开发,例如单片机。一些底层的驱动都需要用C++写。

另外,这两种语言掌握了,学习其他语言将会是一种轻而易举的事情。

7

吃水还不忘挖井人,没有C/C++,如今这些孙子语言都不知如何下凡。

8

如果我们把编程语言分为三类,可以这样分:第一、汇编;第二、C/C++;第三、其他语言。可以看出C/C++与汇编的不可替代性。

基本上几乎所有的软件系统,其底层都是C/C++(有时还包含汇编,为方便叙述,以下不再强调汇编)。C/C++具有基础作用。所谓基础不牢,地动山摇。

首先操作系统,基本上内核都是主要用C写出来的。主流的操作系统,数都数得过来。一些非主流操作系统,也是以linux、unix为基础。

应用软件都是要运行在操作系统上的,只要涉及和底层打交道,就很难绕开C/C++,因为操作系统开放的接口就是C接口。这个还好说,多数人或许一辈子也涉及不到,比如网页前端程序员。

但是硬件开发商就没有那么幸运了,硬件要和软件打交道,就离不开设备驱动。写驱动,那就是C/C++的主战场,特别是C。这已经是内核级别的编程了。已经“潜入”到虚拟机、解释器、shell(外壳)下面了。像我们熟知的Java、C#等,都是要依赖虚拟机的。内核级别为什么非要用C/C++?依然是那个原因,操作系统开放的内核接口就只有C(暂忽略汇编,下同)。所以只能用与C兼容的语言,包括C++。

编程,除了亲密接触操作系统,还有一些重要的东西,那就是编程语言和编译器、解释器

刚已经说了,很多编程语言都离不开虚拟机的,有的要用到解释器。很不幸,多数虚拟机都是用C/C++写出来的。以最流行的Java虚拟机来说,它必然有些场景只能用C/C++完成。与操作系统内核相关的部分,那是绕不开的。还有就是一些复杂的高性能算法。最常见的就是压缩、加密,还有图像处理、音频处理、视频处理、3D渲染。如果你不信,请马上去阅读JVM中有关JPG、PNG图片处理的程序,看看是不是用的C?

现在python似乎非常火爆,可以用来做算法、做数据挖掘。其中一个典型就是tensorflow,他也是用C/C++写出来的。我们在写python的时候,以为是用的纯python,实际上不论是库函数还是第三方高性能库,都是C/C++写的。

嵌入式开发,又是另一个应用场景了。它的其中一个特点就是小巧、成本低、功耗小,这时候,C也是主战场。设想,你如何在一块手表上集成很多高性能低功耗的功能?比方说,除了C/C++,你还可以用什么去开发蓝牙功能?或许你会说,技术在进步,硬件性能在提高。但是别忘了,人类的需求也在提高。比如,未来如何在一粒芝麻大的(医疗)机器人上进行开发?你别告诉我:等会,我先装个几百兆的虚拟机再说……

说了这么多,总结一下,C/C++之所以常青,与操作系统关系密不可分。操作系统是基础的基础,它们既然已经选择了C,我们又很难去发明一个更好的不是基于C的操作系统内核,那就只好“将错就错”。第二,C/C++确实快,确实消耗资源少。因为它有几个特点:一、不依赖虚拟机和解释器,直接就是本地(native)代码。二、保留指针,可以灵活操作内存。第三、没有GC(垃圾回收)。如果要替代,那至少得满足这三个条件。

满足这些条件的,其实也有,比如rust,最近也比较火。它就是C/C++的竞争者。只不过,因为历史原因,还多基础设施已经用C去构造了。这就好比,我们的铁路轨道已经这么宽了,你不能说改就改,大家就继续沿用吧,要不然火车如何“兼容”?难道全部改底盘?

总之,即使我们用不到C/C++,还有其他领域的人用到:做设备驱动的、做操作系统内核的、做高性能算法内核的、做编程语言的、做嵌入式的。没有这些人跟我们打基础,我们几乎是寸步难行。除非它们永远不更新换代,不再维护。

9

首先是粘性,毕竟这么多人用了半辈子。其次还是粘性,毕竟很多关键系统是用他们开发的,重构成本很高。再次还是粘性,无论观念还是实操,他们更接地气(硬件),性能最优。

10

现在各种网红小说,穿越小说。科幻小说这么发达。为什么汉字还不淘汰?