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

治白癜风的专业医院 https://jbk.39.net/yiyuanfengcai/yyjs_bjzkbdfyy/

1、最初的C++的确是C的超集

最初,业界也的确是公认“最好用C++编译器重新编译C项目”的,因为C++有强类型而C没有。

2、最初,业界的确是欢迎乃至期盼C++全面代替C的

甚至,早在好多年前都已经极少能见到“C语言编译器”了——全都是可以关闭C++特性的真·C++编译器。

现在C和C++不兼容,只是C++自己不争气,所以C只好自顾自发展罢了。

3、后来,业界也是万众一心,期盼Java代替C++的

——业界并不像你们空想的那样保守、那样仇视新事物。但是,为什么这几个“代替”,连一个都没真正发生呢?很简单,它们做不到。

4、多未必真多。有时候,少即是多。

Java之所以比C++流行得多,恰恰不是因为Java比C++多了什么,而是它相对于C++少了什么。

5、面面俱到的结果,往往是全方位的平庸。不仅仅是语言。

所以,专注“贴近硬件”的C比“和C完全一样但又多了很多功能”的C++市场份额更大。

这并不仅仅是ABI问题——C++可以extern“C”引出完全兼容于C的接口,更可以无缝加载C写的各种库。

6、它打不过C,只是因为它没有C能打,如此而已。

类似的,C++比“到哪都带个虚拟机、为了避免不兼容,甚至都不敢利用操作系统API”的Java,无论任何方面都要强大得多、优越得多(最近Oracle告Google,正是因为Android上的Java直接利用了AndroidAPI,从而使得Android上的Java不再能和其他设备上的Java兼容)。

7、但,虽然优越如此,C++还是打不过Java。

专注一件事,把一件事做好——无论是对语言,还是它的使用者,都非常非常重要。

重要到全面超越C的C++打不过C、重要到C++的阉割版+虚胖版+迟钝版Java还是比C++能打的地步。全方位的能打,往往及不上“重点突破”。业界真正要的,是“优秀的结果”,不是“无限的可能性”。

事实上,C++出现以后,有很多项目都转由C++来实现了,而非用C,这算不算一种取代?

时代发展,基于C语言来实现一些更高级的语言,比如Python、Ruby等,反过来,一些可能用C++实现的项目,也有了新的选择,这算不算一种取代?

现在Rust出现了,在未来肯定会蚕食一些C/C++的领域份额,这算不算一种取代呢?

其实,编程语言之间并不是你死我活的争斗,也无所谓谁取代谁。一切都是工具的进化,时代的选择。




转载请注明:http://www.aierlanlan.com/rzfs/936.html

  • 上一篇文章:
  •   
  • 下一篇文章: