首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

C/C++会不会被时代淘汰?这个问题跳过了一步,关键是这个问题:

C/C++有哪些其它语言难以代替的特殊之处?

1、对实现细节的控制粒度

一般我们常说:C/C++具有较高的执行效率。其实这句话不是特别准确,有时候它们并不一定效率高。换句更恰当的话说:

C/C++,特别是C语言,控制粒度很细,与机器语言有着相当稳固的对应关系。

也就是说,高手可以通过C语言写出完全按照自己的想法运行的程序。从C代码可以直接对应到汇编语言,如果你对C语言有足够的了解,代码在运行时实际做了哪些事情,是相当明确的。

C/C++甚至能指导编译器哪些变量优先放在寄存器,哪些函数内联,哪些变量要避免多线程抢夺,均可以进行非常细致的控制。

与此相反,Java、Python等高级语言在执行时会跨越很多层次。高级语言源代码 ->中间语言 -> 虚拟机执行 -> 分解执行流程 -> 实际执行的一系列操作。这其中的每一步都不是那么简单,最普通的一句代码:

c = a+b

会因为a或b的元方法,产生无数的执行可能性。除非仔细分析每一个细节,否则编程者对于最终代码的执行逻辑是缺乏控制力的,也不可能进行汇编级别的优化。

总结来说,C/C++,特别是C语言,有着极为精细的控制粒度,而更高级的现代语言一般无法进行如此细致的控制。

2、由于极高的控制力,在某些领域难以被代替

需要程序员压榨每一分硬件性能的地方并不多,特别是现在的服务器核心数很多,只要能充分利用多核心,每个核心没有完全挖掘也是可以接受的。

一般来说,需要压榨硬件潜力的领域有:

1、操作系统。因为每个人每天都要用操作系统,操作系统(特别是内核和驱动层),对优化要求非常高。例如如果对Windows磁盘读取优化1%,几乎全世界电脑用户都会受益1%。

2、游戏引擎。游戏是硬件进步的原动力,大型游戏开发商总是在尽力压榨每一分硬件性能,在60帧以上无止境优化视觉效果、动态效果。C++一直以来都是编写游戏引擎的首选语言,而且几乎是唯一语言。(游戏开发可以用各种技术,但引擎本身一般是用C++编写)

3、嵌入式程序。由于单片机的硬件性能较弱,存储空间极小,必须编写专用的程序代码,使用高级语言可能导致延迟过大,或容量超出限制。未来“万物互联”的潮流,可能会引发超微型嵌入式系统的再度复兴。

4、加密与安全方向。大部分加密/解密模块,与操作系统一样,每个人每天都会频繁使用,所以用C/C++来深入优化是必须的;另外,很多软件硬件漏洞,例如常见的内存溢出漏洞,也需要编写很精巧的C/C++代码才好利用漏洞,才能编写木马或者直接入侵系统。

总之,C/C++的不可替代性是由它本身的特点决定的。而且目前来看,这种不可替代性在未来几年、几十年也依然不会有变化。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191210A0IG6W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券