Hacker News 中文摘要

RSS订阅

Rust的几个核心问题 -- Several core problems with Rust

文章摘要

作者认为Rust语言令人失望,主要问题包括编译速度慢、语法复杂不亚于C++、内存安全并非万能(嵌入式领域崩溃问题),以及处理可变共享状态时性能不佳。尽管Rust在StackOverflow调查中备受喜爱,但作者认为其并未兑现"更好的编程语言"承诺。

文章总结

标题:Rust语言的失望之处

原文链接:https://bykozy.me/blog/rust-is-a-disappointment/

发布时间:2025年11月23日

核心内容概述:

作者从曾经的"Rust反对者"角度出发,指出Rust语言存在的几个根本性问题:

  1. 编译速度问题
  • 编译速度极其缓慢,甚至比C++更慢
  • 虽然近年有所改善,但需要数量级提升而非简单倍数提升
  • 缓慢的编译速度是语言设计导致的固有缺陷
  1. 复杂性过高
  • 复杂度堪比C++,却没有C++的历史包袱
  • 开发者被迫处理各种复杂类型(如Arc>>)
  • 即使编写高层逻辑也不得不处理底层细节
  • 许多早期采用者最终转向Node.js和Go等语言
  1. 内存安全的代价
  • 过度追求内存安全牺牲了可靠性和实用性
  • 实际应用中,程序崩溃比内存不安全更糟糕(如嵌入式系统)
  • 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 the crash() 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崩溃)佐证观点,但批评被部分人认为缺乏深度或带有情绪化倾向。