每年都有新的编程语言诞生。创造一种新语言来解决计算机科学挑战的诱惑是难以抗拒的。一些资料显示有多达2500种语言,这并不奇怪。
对于我们嵌入式软件开发人员来说,这个数字并不算大。事实上,我们可以用一只手来数一数我们在目标上实际使用的所有语言:C、C++、Rust和Python。还有一些其他的语言,特别是如果你在嵌入式Linux或FPGAs上工作,这里只是在考虑使用微控制器的开发人员会考虑的语言。
在很大程度上,近50年来,C一直是资源受限系统中使用的主要语言。今天关于通用软件计算有趣的是,C语言在那个时期也占了主导地位。至少,直到2024年6月。39年来第一次,至少根据TIOBE编程社区指数,C的受欢迎程度降到了C++以下!
图一。通用编程语言普及的历史表明,C++有史以来第一次击败了C
语言流行意味着什么
嵌入式软件团队和开发人员是否应该担心C++的受欢迎程度刚刚超过C?随着时间的推移,这些语言的受欢迎程度会起起伏伏。事实上,纵观历史,有几次C++看起来似乎会统治C,结果C的受欢迎程度再次飙升。
这次是不同的。通用软件行业的许多团队正在从C语言转向C++或Rust。现在连Linux内核都提供了对Rust的支持!虽然C语言在通用计算中可能会失去人气,但它仍然是嵌入式系统事实上的语言,并且在可预见的未来仍将如此。
回顾过去十年的调查数据,超过80%的嵌入式系统项目使用了C语言!今天,这些数字在60-70%之间。也许更有趣的是,C++已经增长到嵌入式项目的20–25 %!即使是嵌入式团队,总的趋势也是远离C,走向C++。这些调查中的语言流行度可以帮助团队了解计算机科学的总体趋势,并洞察未来开发人员可能拥有的技能。例如,越来越多的人推荐使用Rust。
虽然遗留的C代码比任何人能够量化的都要多,但这并不意味着我们应该将所有的新代码开发与一种过时的语言联系起来。毕竟,当现代技术可以让团队走得更远更快时,为什么要扼杀创新和浪费时间呢?
当然,你可能会说微控制器是资源受限的设备,需要C语言,但是你有没有看到今天哪些厂商推出了资源受限的产品?Cortex-M33器件具有2MB闪存和768 kB RAM,运行频率为160 MHz及以上。
C++或Rust太慢的论点真的经不起推敲。
结论
C++有史以来第一次超越C成为最受欢迎的编程语言。这种趋势会持续下去吗?只有时间能证明一切。然而,重要的是要认识到语言普及并不能说明全部。
如果嵌入式系统语言选择的正确解决方案是如下使用它们,不会感到惊讶:
l 启动代码的汇编语言
l c用于低级驱动程序和主板支持
l 应用程序代码是C++还是Rust
虽然我们经常认为一种语言支配另一种语言,但我们已经在一个系统中使用了多种语言。为什么不在应用程序级别扩展C++或Rust的使用,在那里它能提供最大的好处,而把C代码放在我们已经最熟悉的地方呢?
这将使我们最好地利用C的速度和“灵活性”以及C++或者信任现代技术和抽象。