
Java
确实,类似这样的讨论在某些平台已经变得非常敏感和容易引发争议。无论是提到教徒多还是语言选择的问题,总会有人带着偏见或情绪去评论。实际上,任何编程语言都有其适用场景和优缺点,比如 Go 当年也经历过类似的质疑,如今只不过换成了其他语言成为焦点。作为一名长期从事 C 语言开发、专注于嵌入式 MCU 编程的工程师,我也曾短暂接触过
Java、C、Go、
Python、Zig 以及 Rust 等语言。从我的经验来看,Rust 对于像我这样以 C 为主业的开发者来说,真的是一种令人惊喜的存在。如果要问,在现代编程语言中,有哪些适合在 MCU 上使用且具备低资源占用和高效率特点的选择,目前大概只有
C++、Zig 和 Rust 这三种较为可行。
C++ 的确强大,几乎可以胜任任何任务,但正因为它的全能性,初学者想要掌握它并不比 Rust 更简单。特别是在 MCU 领域,许多
C++ 编译器(如 Keil)支持的标准版本较低(虽然现在情况有所改善),这进一步增加了开发难度。至于 Zig,它听起来很棒,也被誉为更好的 C。它可以跨平台生成可执行程序,支持裸机运行,还能直接编译 C 文件并利用 C 头文件等功能。然而,Zig 在语法和生态上仍不够成熟。例如,对于 RISC-V 架构这类常被厂商修改核心设计的情况,如何有效使用特定指令集仍是个难题。除非能够调用外部后端工具链,但据我所知,Zig 未来似乎有意摆脱对 Clang 的依赖,这可能让问题更加复杂。再加上 Zig 缺乏足够的资金支持和研发力量,因此我不建议将其作为主要开发工具。相比之下,Rust 的优势显而易见。如果你习惯 C 的开发方式,你会发现 Rust 提供了一种更优雅的解决方案。无需为每个项目学习 Makefile、CMake、SCons、Meson 或 Xmake 等多种构建脚本语言,也不必费力寻找第三方库,因为 crates.io、docs.rs 和 lib.rs 几乎能覆盖 90% 的需求。Rust 的编译器甚至会一步步指导你完成代码编写。此外,Rust 的宏功能非常强大,许多库提供的宏都非常实用。每次用到 C
JSON 时,我都会想起 Rust 的 Serde 是多么出色。当然,Rust 的学习曲线确实较陡,但并非无法克服。只要合理运用 Rc/ArC、Mutex、Atomic 等工具,减少对生命周期的过度关注,并在必要时大胆使用 unsafe,就能显著降低入门门槛。值得注意的是,这些优点其实也是许多现代语言(包括
C++)所具备的,但在裸机环境下能够稳定运行的语言并不多见。那么,初学者是否应该学习 Rust?如果是已有 C/
C++ 开发经验的程序员,我建议有条件的话可以尝试一下。学习 Rust 不仅是为了掌握一门新语言,更重要的是理解其中蕴含的编程思想。例如,链表这一常被称为新手杀手的数据结构,用 C 实现一个同样健壮的版本会发现,Rust 的实现方式本身就是一种优秀的参考方法。