php 为何不还淘汰,现在的编程语言越来越多,为什么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++,还有其他领域的人用到:做设备驱动的、做操作系统内核的、做高性能算法内核的、做编程语言的、做嵌入式的。没有这些人跟我们打基础,我们几乎是寸步难行。除非它们永远不更新换代,不再维护。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值