最新消息:

为什么 C 语言没有被 C++ 取代?

C 小编 158浏览 0评论

在这里一味地强调C++不完全兼容C就不合适了。C++对C的兼容是全方位的,不兼容的部分只是一些边角细节。还要强调这些细节的存在,就像你在嫌一件衣服卖1000太贵的时候,旁边的人说道:可它明明只卖998!

题主你产生疑问的一部分原因,在于你接触IT业比较晚,没有了解过这两种语言的发展。早期没有C++的时候,C语言占据了编程语言的超过半壁江山。到C++出现的时候,大家很快开始转移到C++等功能更强的语言,C语言的份额迅速萎缩,到了现在,已经只有系统内核,驱动,嵌入式等少数几个领域还是C语言的天下。所以很大程度上,C语言确实是被C++取代了。

来给题主看个前几年的例子。

GCC 用 C++ 来编译 | | 酷 壳 – CoolShell​coolshell.cn

如果仅以现代的眼光看,C语言的代码,基本上都能用C++编译通过,语法,语义,性能都基本一致,但独立的C语言一直顽强地生存着,这似乎就令人费解了。

这背后的原因,在于之前提到的几个领域仍然需要C语言。在这些里,C语言仍然有着不可替代的优势。C的特点,是简单,直白,功能少,性能高,程序员控制一切。在这里,C的弱点被掩盖,而优点能最大程度地发挥。

毕竟C最初就是为了这些场合而开发出来的。

C简单?

好事。简单意味着编译器容易实现,质量高,bug少。

简单还意味着大家的实现不容易产生分歧,为ABI的统一提供了便利。

C功能少,总是需要自己造轮子?

没关系。做内核,做嵌入式,就算有现成的轮子,也经常不再适用,自造轮子是家常便饭。

而且功能少的情况下,资源消耗也会极大地减少。整个系统可以运行在存储空间只有4M,内存只有64K的环境下。换其他语言,运行库就要把存储空间撑爆了。

C开发繁琐,效率低?

这些领域的需求一般都不会变来变去,逻辑通常也不会特别复杂。

C手动管理资源,容易出错?

内核等场合下,我们本来就是要自己实现资源的管理。而且我们正是要手动控制一切,才能最大程度地精打细算。

这些场合只有C最适用。包括C++在内的其他语言都尝试过,但都无法撼动C的地位。这就是独立的C语言仍然存在的理由。

作者:farta
链接:https://www.zhihu.com/question/266995763/answer/367417307
来源:知乎。

转载请注明:软飞精选 » 为什么 C 语言没有被 C++ 取代?

与本文相关的文章

  • 暂无相关文章!

您必须 登录 才能发表评论!