当前位置: 首页 > 科技观察

为什么C和C++难以被取代

时间:2023-03-12 12:20:20 科技观察

你应该已经发现了,近年来编程语言发展迅速,新的编程语言层出不穷。越来越多。但在嵌入式开发领域,C和C++是yyds,几十年来一直走在前列,甚至是唯一的选择。为什么是这样?就没有其他语言可以替代C/C++了吗?个人觉得真的很难。即使技术上可行(比如rust),也很难在市场上真正流行起来打败C/C++。有几个原因。一个重要的原因就是前两天提到的技术惯性。人们总是倾向于使用他们熟悉的技术,并且总是在不得不改变的时候改变。经过几十年的发展,C和C++培养了一大批成熟的开发人员,孵化了一大批优质项目和基础软件。这些是全人类和全行业的优质基础设施资产。丢弃它们是不可能的,也没有必要重写它们,继续使用是一个非常合理的选择。您希望这些成熟的开发人员放弃C和C++,并使用一种新的语言。除非有非常明确和充分的理由来获得巨大的利益,否则没有人会关心你。或许你的新语言会更好,但不如带来本质优势的95-98分。事实上,很难说服成熟的传统开发人员。另一个原因是C和C++在技术上难以优化。因为这两种语言已经可以直接操作内存,并且都支持非常好的指针操作,内存对象的创建和维护。熟悉汇编语言和CPU指令集的同学就会知道,这些特性和硬件层已经深度融合,效率是最高的。所以不管是java,还是js,python,本质上都是在上层和人(程序员)连接的部分做文章,提供更多程序员认为比较好用的特性(比如垃圾回收机制),以及然后在内部,使用C和C++风格的内存对象创建和管理来实现这些功能。所以当你了解了这些东西之后,你会发现在与硬件接轨的嵌入式开发领域,C和C++在技术上的优化真的很难。除非CPU本身发生重大变化,比如打破冯·诺依曼结构,否则C和C++稳如泰山。在性能方面没有什么可做的。能否在接近程序员的易用性和语法安全性方面进行优化?当然,其实java、go、rust等语言都是这样的思路。但要么是牺牲了效率让嵌入式领域不想用,要么就是没必要慢慢发展,硬推。rust目前看起来最有前途,但还很年轻,离场观望!最后,C和C++本身都是开放使用的。任何人使用都没有限制,不用付费,没有隐患,为什么不用他呢?那么基于以上,大家也就明白为什么这两兄弟会这么强,并且会一直强下去了!