文章摘要
作者认为Rust语言令人失望,主要问题包括编译速度慢、语法复杂不亚于C++、内存安全并非万能(嵌入式领域崩溃问题),以及处理可变共享状态时性能不佳。尽管Rust在StackOverflow调查中备受喜爱,但作者认为其并未兑现"更好的编程语言"承诺。
文章总结
标题:Rust语言的失望之处
原文链接:https://bykozy.me/blog/rust-is-a-disappointment/
发布时间:2025年11月23日
核心内容概述:
作者从曾经的"Rust反对者"角度出发,指出Rust语言存在的几个根本性问题:
- 编译速度问题
- 编译速度极其缓慢,甚至比C++更慢
- 虽然近年有所改善,但需要数量级提升而非简单倍数提升
- 缓慢的编译速度是语言设计导致的固有缺陷
- 复杂性过高
- 复杂度堪比C++,却没有C++的历史包袱
- 开发者被迫处理各种复杂类型(如Arc
>>) - 即使编写高层逻辑也不得不处理底层细节
- 许多早期采用者最终转向Node.js和Go等语言
- 内存安全的代价
- 过度追求内存安全牺牲了可靠性和实用性
- 实际应用中,程序崩溃比内存不安全更糟糕(如嵌入式系统)
- Cloudflare曾因Rust的unwrap()崩溃导致服务中断
- 共享可变状态场景下,Rust既失去性能优势又无法保证内存安全
与C++的对比: - 承认C++存在诸多问题(隐式转换、异常处理、头文件包含等) - 但Rust并未真正解决C++的核心问题(编译速度、复杂性) - 在共享可变状态处理(GUI、数据库等)场景表现不佳
适用场景: - 适合不可变数据、单向数据流场景(如静态网站生成器) - 在解析器、无状态处理器、区块链等特定领域表现良好 - 不适合GUI开发、大型数据库、操作系统等需要共享状态的场景
结论: Rust是一个投入了大量开发资源的普通编程语言,适合特定场景使用,但不应该被盲目推崇为"最佳编程语言"。语言设计者在追求内存安全的过程中牺牲了太多实用性和可靠性。
评论总结
以下是评论内容的总结,平衡呈现不同观点:
1. Rust批评者的观点
编译速度慢:有评论指出Rust编译速度比C++慢,且大型项目需要大量内存(如LLVM、Chromium)。
引用:"Its compilation is slow. I mean SLOW. Slower than C++" (评论2)
"do large projects require >32GB memory... Had to buy a new laptop" (评论6)复杂性高:认为Rust与C++一样复杂,且所有权和借用机制增加了学习成本。
引用:"It’s complex. Just as complex as C++" (评论2)
"You have to be fluent in ownership, borrowing, traits to write just a few lines of code" (评论10)内存安全与可靠性的权衡:部分人认为内存安全并非绝对重要,崩溃比数据损坏更糟糕。
引用:"Memory safety is not that sacred... malfunctioning is better than crashing" (评论2)
"Rust is memory safe and unreliable" (评论11)共享可变状态的性能问题:批评Rust在处理共享可变状态时性能不佳。
引用:"When handling lots of mutable shared state... Rust is practically meaningless" (评论2)
2. Rust支持者的反驳
编译速度改进:支持者认为Rust编译速度已显著提升,且调试模式足够高效。
引用:"Maybe Rust 1.0, but it's steadily improved... faster than C++ now" (评论2)
"Use debug for correctness... who cares if CI is slow?" (评论18)复杂性可控:虽然Rust复杂,但编译器会帮助避免错误,而C++的复杂性更难管理。
引用:"Rust is complex but... the compiler will tell you if you got it wrong" (评论2)
"skill issue" (评论24)内存安全的重要性:支持者强调内存安全能避免难以调试的问题,如数据损坏或安全漏洞。
引用:"Memory safety errors are like type errors... worth checking for" (评论18)
"just another data leak, no biggie" (评论9, 反讽)Cloudflare崩溃事件:认为崩溃是设计选择而非语言缺陷,其他语言也有类似问题。
引用:"Every language has a way to not handle errors" (评论18)
"It's not the language's fault that you called thecrash()function" (评论11)
3. 其他观点
替代语言建议:如Zig或Crystal,认为它们更简洁或适合特定场景。
引用:"The author would probably find joy in using Zig" (评论4)
"Crystal is a fun choice... worth a look" (评论10)批评的合理性争议:部分评论认为原文夸大其词,缺乏具体论据。
引用:"This anti-Rust zealotry is super tedious" (评论2)
"full of ragebait exaggeration" (评论27)
总结
评论呈现了Rust支持者与批评者的典型争论:支持者强调其内存安全和编译器辅助的优势,批评者则聚焦编译速度、复杂性及特定场景的局限性。双方均引用实际案例(如Cloudflare崩溃)佐证观点,但批评被部分人认为缺乏深度或带有情绪化倾向。