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

更新时间:02-01 教程 由 |唁 分享

如果我们把编程语言分为三类,可以这样分:第一、汇编;第二、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++,还有其他领域的人用到:做设备驱动的、做操作系统内核的、做高性能算法内核的、做编程语言的、做嵌入式的。没有这些人跟我们打基础,我们几乎是寸步难行。除非它们永远不更新换代,不再维护。

声明:关于《现在的编程语言越来越多,为什么C和C++还没有被现在的时代淘汰呢》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2273753.html