Rust 的冷门批评 | AI生成和翻译
问题:关于 Rust 编程语言、使用 Rust 开发项目或在初创公司或大公司中采用 Rust,有哪些不受欢迎的观点?
回答:
Rust 因其内存安全、性能和并发特性而广受赞誉,但它也招致了强烈的批评,尤其是在其复杂性和对特定环境的适用性方面。下面,我整理了一份来自开发者讨论、博客文章和论坛的不受欢迎的观点清单。这些观点强调了在生产力、招聘和实际用例方面的权衡。为了清晰起见,我将它们分组归类,重点关注那些挑战 Rust 炒作的观点。
关于 Rust 作为一门语言的一般观点
- Rust 的借用检查器和所有权模型给大多数开发者带来了比解决更多的问题的摩擦:虽然它能防止内存错误,但它往往会强制进行过度的重构和问题解决,使得简单的任务感觉过于工程化。即使是经验丰富的用户也表示经常遇到困难,导致生产力低于像 Go 或 Python 这样的垃圾回收语言。
- Rust 被过度炒作,并非真正“安全”或具有革命性:批评者认为它只是 C++ 加上额外的语法糖,仍然依赖于
unsafe块来进行实际的系统工作,并且它无法消除逻辑错误或操作系统级别问题(如零终止字符串)带来的漏洞。“内存安全”的说法忽略了大多数 bug 源于糟糕的设计选择,而不仅仅是内存管理。 - 社区有毒且过于传教式:Rust 的粉丝咄咄逼人地将其推崇为 superior,羞辱使用 C++ 等“不安全”语言的用户,这疏远了潜在的采用者。这种类似邪教的氛围,加上以 DEI 为重点的入门(例如,官方书籍的介绍),感觉更像是社会工程,而非技术讨论。
- 编译时间和错误消息简直是噩梦:Rust 鼓励泛型和零成本抽象,但这会导致构建时间膨胀(尤其是有依赖项时),并产生难以理解的级联错误,令人沮丧。它更适合经过深思熟虑、优化的代码,而不是快速实验。
- Rust 不适合低级或高级工作——它卡在中间:对于裸机系统,
unsafe使其比 C 更笨拙;对于高级应用程序,它不如具有依赖类型或内置运行时的语言富有表现力。它只在狭窄的“中级”利基市场中真正闪耀。
关于使用 Rust 进行项目开发的观点
- Rust 阻碍了原型开发和个人项目:它擅长生产代码,但对于黑客或一次性脚本来说却很糟糕——重构是强制性的,而不是修改,而且大多数早期代码无论如何都会被丢弃。坚持使用 C 或 Python 进行实验。
- 将遗留代码移植到 Rust 是浪费时间:几十年前的 C/C++ 程序已经修补了大部分 bug;重写会引入新的错误,而不会修复逻辑缺陷。只将 Rust 用于绿地项目,而不是“用 Rust 重写”的 Cargo Cult。
- Rust 的“捷径”破坏了其安全承诺:诱人的工程学(例如,自动解引用)在修复时会导致性能下降,这与“快速发布”文化相冲突。它与企业追求速度而非完美的推动不兼容。
- Rust 中的后端开发很简单——别再夸大难度了:除非你正在构建自定义分配器或异步运行时,否则它大部分是处理程序中的数据流。消极情绪源于精英主义;你可以在没有“硬核模式”的情况下快速、无错误地发布。
关于在初创公司中使用 Rust 的观点
- Rust 扼杀了初创公司的发展速度——优先选择 Python 或 JS 等更简单的语言:安全固然很好,但陡峭的学习曲线减缓了入职和迭代速度。初创公司需要敏捷性,而不是与编译器作斗争;Rust 的好处很少能抵消招聘和生产力成本。
- 招聘 Rust 开发人员对于扩展团队来说是个噩梦:经验丰富的 Rust 工程师很少,导致知识孤岛以及“Rust 专家”和新手之间的不满。这是一个冒险的赌注,除非你的产品从第一天起就要求低级性能。
关于在大型公司中使用 Rust 的观点
- Rust 在大型组织中带来的问题多于解决的问题:成功案例(例如,高性能服务)通常会导致过度采用,但重构和薄弱的标准库增加了不断发展的代码库的认知负荷。使用更安全语言的单体最初扩展性更好。
- 企业支持掩盖了 Rust 的缺陷:大型科技公司对工具的补贴掩盖了它不够简单或通用,无法广泛用于企业。它被用于安全剧场,但遗留集成和薄弱的生态系统使其成为一个糟糕的默认选择。
- Rust 职位稳定但比遗留语言的宽容度低:对能力不足的容忍度较低意味着更高的压力;它不像人们担心的那样是“职业死胡同”,但大型公司仍然坚持使用 C++/Java 来处理其庞大的代码库,限制了 Rust 的足迹。
这些观点反映了少数对 Rust 在非理想场景下的严谨性感到沮丧的开发者。尽管如此,Rust 在内核(例如 Linux)和像 Microsoft 这样的公司中的采用表明,它在适合的领域——系统和性能关键代码——正在蓬勃发展。如果你正在评估它,请先原型化一个小项目来测试其适应性。
参考文献:
- The Rust programming language absolutely positively sucks
- What are some unpopular opinions on Rust that you’ve come across?
- Why are some people against the Rust-Lang?
- Why do people hate Rust?
- My negative views on Rust
- Negative views on Rust (not mine!)
- I hate Rust (programming language)
-
[I hate Rust (programming language) Hacker News](https://news.ycombinator.com/item?id=40091427) - A genuine question, why do people hate rust
- What are legitimate problems with Rust?
- Using Rust at a startup: A cautionary tale
- Using Rust at a Startup: A Cautionary Tale - Slashdot
-
[Rust Unpopular Opinion Hacker News](https://news.ycombinator.com/item?id=34386622) -
[Using Rust at a startup: A cautionary tale Hacker News](https://news.ycombinator.com/item?id=33714007) - Using Rust at a startup: A cautionary tale
- Using Rust at a startup: A cautionary tale
- Why is Rust so unpopular among programmers?
-
[Why Rust is a great choice for startups Hacker News](https://news.ycombinator.com/item?id=31736703) - Rust? Seriously? Why bother with it?
- Rust success story that killed Rust usage in a company
- Why don’t you use Rust at your company?
- Is Rust a career dead-end?
- Why is Rust community being so political?
- I actually might lose credibility for this one, but I don’t think startups should be using Rust
- We (IT crowd) need more common sense and less hysteria around Rust
- Rust is a great production language (engine programming), but it’s not a perfect prototyping language
- Rust is a great language… but dang I still struggle with the borrow checker constantly!
- My general thoughts on Rust: Excellent for short-lived programs… Clunky for long-lived programs… Toxic community
- The problem seems to be that Rust offers too many tempting shortcuts for a tool that prides itself on safety
- Porting decades old programs to Rust is dumb
- I’ve done some rust dev, not a fan of the language
- Unless you’re doing systems-level work… Rust for backend development is surprisingly straightforward
- Terrible idea for enterprise critical use software
- Rust, for me, sits in this weird spot
- I use rust. I have a lot of complaints about rust
- Rust is worth learning, but after writing it for a few years, Im disenchanted with it