广告

嵌入式Rust:我们如今身处何方?

2025-01-23 17:50:18 Jacob Beningo 阅读:
Rust对于一般应用开发来说很有意义,但对于嵌入式软件团队来说真的有意义吗?Rust如今的情况如何,它是否就是大家所鼓吹的最美好的解决方案?

你听说过Rust吗?当前的市场营销和宣传会让你相信,世界上每个团队都在放弃一切其他语言,来采用Rust。甚至白宫也加入进来,鼓励科技公司采用内存安全语言。avdednc

从表面上看,这是一个不错的建议。不幸的是,它完全忽略了企业的现实状况以及时间、成本和技术影响。成熟的Rust开发人员并不多,而且企业在现有框架和产品上投资了数十亿甚至数万亿美元。avdednc

Rust对于一般应用开发来说很有意义,但对于嵌入式软件团队来说真的有意义吗?Rust如今的情况如何,它是否就是大家所鼓吹的最美好的解决方案?avdednc

语言普及与Rust

我最喜欢的用来查看编程语言流行度的网站之一就是tiobe.com。他们收集了近25年的编程语言数据,并对其流行程度进行了长期跟踪。如下图所示,语言的流行程度会随着时间的推移而变化。avdednc

avdednc

有趣的是,如果你研究一下过去25年里排名前十的语言,你会发现一个趋势。Java、C和C++一直占据主导地位。事实上,这些语言通常处于一个稳定的状态。Python的流行是在过去6-8年间爆发式增长的,但这种采用水平在过去的四分之一世纪里是罕见的。avdednc

您甚至可能已经注意到,Rust并未出现在前十名中!仔细查看下表,其中对几种最流行的编程语言进行了排名,Rust目前排名第18位!avdednc

avdednc

现在,您可能会认为Rust的采用率非常高,而且人气一直在飙升。不过,我对比了一年前的Rust排名,发现至少在一年前,Rust的受欢迎程度仍然处于同一位置。(是的,每月都会有一些波动,但受欢迎程度保持相对稳定)。avdednc

嵌入式系统中Rust的采用

Tiobe指数是了解一般软件开发语言趋势的重要工具。显示的结果并不一定代表嵌入式系统行业。事实上,嵌入式系统开发人员采用新语言的速度往往比一般行业慢得多!avdednc

纯软件产品可以快速变化,而嵌入式软件与物理产品紧密相关,物理产品的使用寿命通常接近或超过十年。这就意味着,如果选择不当,你无法轻易改变方案。这也意味着,许多公司都拥有投资数百万美元甚至更多开发的知识产权。他们不会因为出现了一种人人都在推崇的新语言,就迅速放弃这笔投资。avdednc

那么,嵌入式系统真的正在采用Rust吗?是的,在小范围内。在过去一年中,我与数百名工程师、开发人员等进行了交谈和讨论,对Rust的现状得出了一些结论。avdednc

首先,成熟的团队不会采用Rust。已有产品的团队要么使用C,要么使用C++。其中,使用C的团队非常有兴趣转向C++,因为它是一种现代语言,也可允许团队充分利用他们已经开发的知识产权。我还发现这些团队也更容易采用“像C++一样的C”, 这样既能提高代码的鲁棒性,又不会“太疯狂”地使用现代C++概念。avdednc

其次,采用Rust且对其最有热情的团队都是初创公司。这些公司没有任何现有的知识产权,是从零开始。它们通常由刚从学校毕业的开发人员组成,有足够的灵活性和时间来突破Rust的学习曲线。他们可以在Rust上冒险,因为作为一家初创公司,风险已经很高了,如果成功,潜在的回报也是值得的。avdednc

你应该学习Rust吗?

目前用于开发嵌入式软件的主要语言有:avdednc

  • C(约70%)
  • C++(约23%)
  • Python(约5%)
  • 汇编(<2%)

如果你计划在这个行业工作15年或更短时间,除非你热衷于学习新语言,否则学习Rust可能没有什么意义。如果你计划在这个行业工作更长时间,我认为熟悉Rust不会有什么坏处。avdednc

Rust是一种现代语言,日新月异。学习Rust可以让你了解现代的设计模式,并让你参与到一个活跃而独特的社区中。avdednc

同时,你需要问问自己,这种语言是否让你感兴趣并且对你有价值。我认为C或C++不会很快消失,事实上,芯片供应商的工具链都支持C和C++,而我只能想到一家小众供应商提供Rust支持。avdednc

这种情况将来可能会改变,但这也表明目前Rust还没有成为优先考虑的对象,需求不存在。如果有需求,你会看到ST Microelectronics、NXP、Microchip等公司提供Rust支持和库。这也意味着你的芯片的支持只会来自Rust社区,或者你自己开发支持。avdednc

总结

Rust日渐成熟,人们对它的兴趣也越来越浓厚。现在,你可以使用Rust开发嵌入式产品,有些公司就正在这样做,并且取得了成功。avdednc

Rust语言提供了内存安全性,而C则缺乏现代工具和技术。虽然C++通常不被认为是内存安全语言,但Rust提供的许多功能在C++中也能找到。这是因为C++允许开发人员控制需要完成的工作,而Rust则不信任开发人员。avdednc

学习Rust并非易事。学习难度很高,开发人员可能很难将语言结构应用于低级嵌入式开发。不过,我认为学习Rust并了解它能为你提供什么是一个好主意。avdednc

在未来几年内,我们可能还不会在嵌入式软件领域看到Rust的身影。不过,如果Rust在十年内占据了嵌入式系统的10%或更多,也不要感到惊讶。物联网正在推动对内存安全编程语言的需求,而这也促使一般软件行业采用Rust等语言,最终它将达到一定规模。唯一的问题是,是Rust会成为这种语言还是其他语言。avdednc

(原文刊登于EDN姊妹网站Embedded,参考链接:Embedded Rust: where are we today?,由Ricardo Xie编译。)avdednc

相关阅读:

嵌入式Rust系列教程avdednc

责编:Ricardo
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了