Rust 相当于科技界的新来的孩子,他擅长运动、取得高分,甚至会弹吉他。它安全、快速,并且有望消除您的代码库中困扰您噩梦的臭名昭著的内存错误。但这是否意味着您应该用 Rust 重写所有项目?不完全是。 ?
用 Rust 重写对于某些场景来说非常有用,但它并不是解决所有软件开发问题的万能药。让我们通过一些代码片段、类比来深入探讨原因,并希望一路上能带来一些笑声。 ?
在我们批评 Rust 之前,让我们先给予它应有的赞扬:?
内存安全:Rust 的借用检查器消除了整类错误,例如空指针取消引用和数据竞争。惊人的! ✅
性能:Rust 的运行速度几乎与 C 或 C 一样快,但崩溃次数要少得多。如果您正在构建高性能系统,Rust 是您的朋友。 ?
现代工具:使用 Cargo(Rust 的包管理器和构建工具),与其他一些语言(看看你,JavaScript)相比,依赖管理变得轻而易举。 ?
Rust 的座右铭是安全、速度和稳定。谁不想要这样呢?现在,让我们探讨一下为什么这并不意味着您应该拿起大锤并拆除当前的代码库。 ?️
想象一下您拥有一艘稍微漏水的船。您决定从头开始构建一个全新的系统,而不是修补它。当然,新船可能会更坚固,但这个过程需要几个月的时间,花费不菲,而且有可能根本无法漂浮。 ⛵
重写代码类似。 Joel Spolsky 的经典博客文章“你永远不应该做的事情”警告不要丢弃工作代码。为什么?因为重写会引入错误,丢掉多年的调试知识,并减慢进度。用 Rust 重写会放大这些风险,因为 Rust 的学习曲线很陡。
假设你有这个 Python 函数:
# Python: Calculate factorial def factorial(n): if n == 0: return 1 return n * factorial(n - 1)
简单吧?但您想要 Rust 的速度和安全性。它可能如下所示:
// Rust: Calculate factorial fn factorial(n: u64) -> u64 { match n { 0 => 1, _ => n * factorial(n - 1), } }
很酷,但是重写值得吗?对于像这样的小片段来说,可能不是。 Python 代码运行良好,并且更易于新开发人员阅读和维护。如果性能成为问题,您可以使用 PyO3 等工具通过 Rust 库优化此特定函数,而不是重写所有内容。
Rust 的语法对于习惯更传统语言的开发人员来说可能会感觉很陌生。借用、生命周期和所有权等概念很强大,但也令人生畏。如果您的团队还不熟悉 Rust,预计会出现延迟和混乱。
考虑这个简单的任务:修改 Rust 中的向量。
# Python: Calculate factorial def factorial(n): if n == 0: return 1 return n * factorial(n - 1)
看起来不错,但如果你忘记使用 &mut 或用 * 取消引用,借用检查器会责骂你。来自 JavaScript 或 Python 等语言的开发人员可能会觉得自己被欺负了。
同时,这是 Python 中的等效内容:
// Rust: Calculate factorial fn factorial(n: u64) -> u64 { match n { 0 => 1, _ => n * factorial(n - 1), } }
简单多了,对吧? Rust 会让你预先更加努力地工作以保证安全,这对于系统编程来说非常棒,但对于较小、不易出错的项目来说就太过分了。
用 Rust 重写你的个人待办事项列表应用程序,因为“Rust 很酷”就像用工业级钢梁建造一个鸟舍。过度设计对任何人都没有帮助。
假设您正在编写一个脚本来重命名一些文件:
fn main() { let mut numbers = vec![1, 2, 3]; for num in &mut numbers { *num += 1; } println!("{:?}", numbers); }
numbers = [1, 2, 3] for i in range(len(numbers)): numbers[i] += 1 print(numbers)
Rust 的解决方案更加健壮,但是如果您的脚本只运行一次,那么额外的复杂性值得吗?对于快速、一次性的任务,Python 等高级脚本语言通常是更好的选择。 ?
Rust 让你编写更多的代码来达到与其他语言相同的结果。对于安全关键型系统来说,这种权衡是值得的,但在开发速度比运行时性能更重要的环境中,这种权衡会降低您的速度。
如果您正在构建 MVP 或原型设计,请使用可让您快速迭代的语言。一旦你验证了你的想法并需要扩展,你就可以考虑用 Rust 重写性能关键部分。 ?
没有一种语言是完美的。铁锈闪耀的原因:
但它不太理想:
Rust 是一种具有开创性功能的非凡语言。它值得大肆宣传,但也需要大量的时间和精力来采用。用 Rust 重写你的项目可能不是你正在寻找的奇迹解决方案。
相反,请在有意义的地方考虑 Rust:关键性能瓶颈、内存安全 API 或稳定性至关重要的长期项目。对于其他一切,坚持有效的做法。请记住,最好的工具是能够完成工作的工具,即使它是一艘用胶带修补的漏水船。
所以,暂时不要将你的 Python、JavaScript 或 Go 代码库扔进垃圾桶。 Rust 可能是您需要的英雄,但并非适合每场战斗。
以上是为什么用 Rust 重写一切并不能解决你所有的问题的详细内容。更多信息请关注PHP中文网其他相关文章!