InfoWorld 梳理了一份致使开发人员喜欢或讨厌使用 Rust 编程的原因清单,分别列出了 7 条内容。具体如下:
1、喜欢:Rust 解决了规模和并发问题
随着开发人员解决规模和并发性问题(即需要同时处理来自多个不同来源的输入),软件变得越来越复杂。许多人认为 Rust 是构建适合当今架构的工具的最佳语言。
Web 浏览器是需要大规模可扩展性的应用程序的一个很好的例子,因此 Rust 是由开发 Firefox 的非盈利公司 Mozilla 创建的也就不足为奇。Mozilla 的开发人员研究了他们在代码中遇到的问题并寻求更好的解决方案。最后,他们想出了 Rust。
讨厌:Rust 的并发模型太复杂了
虽然多线程系统越来越流行,但对于很多开发人员来说这并不是真正需要的;Scientific programmers 倾向于编写单线程函数。Web 开发人员可以编写 PHP 代码,它提供了一种简单的声明式方法来创建网站。Serverless programmers 只需编写一个函数,然后将繁重的工作留给其他人。需要创建更复杂的 Web 应用程序的开发人员则可以转向 Node.js,它提供了另一种处理多线程应用的策略。Node 的事件驱动模型与基于 Promise 的代码相结合,也可以产生简单而优雅的结果。
所有这一切都意味着 Rust 的多线程编程模型提供了比许多程序员所需的更复杂的功能。一些人可以不计较这些额外的东西并对 Rust 保持热爱,但有些程序员宁愿不去处理这些复杂的东西。“他们只是不需要它”。
2、喜欢:Rust 是一门现代语言
现如今许多编程语言的设计都专注于在创建功能性语言,以引导开发人员编写更容易分析的软件,Rust 也是如此。许多开发人员喜欢 Rust 的 logical、functional syntax,它鼓励将代码结构化为一系列嵌套函数调用。
与此同时,Rust 的创造者想要构建一些东西来处理保持物联网正常运行所需的 bit-banging、low-level 编程。Rust 为希望用现代风格解决这些非常现实的挑战的程序员提供了正确的组合。
讨厌:它有一个陡峭的学习曲线
在某些方面,学习 Rust 是一个忘掉你从编程生涯开始就可能遵循的概念和技术的过程。例如,学习 Rust 需要忘掉 JavaScript 和 Java 等旧语言所要求的 scope 和 ownership 的概念。
如果你想利用 Rust 的优势,则必须愿意放弃一些可能导致错误的已熟悉的功能。还有些人认为,Rust 的语言语法也很复杂。除了大括号和圆括号,还有方括号、竖线和大于号;有时候甚至还有双冒号。
构建复杂的多线程工具的 Rust 开发者可能会认为 Rust 的语法复杂性是一种值得的折衷,熟悉功能流的真正爱好者甚至可能会喜欢它。但其他人的感受却不尽相同,学习 Rust 的所有语义规则并不适合 casual user。
3、喜欢:你可以告诉 Rust 编译器该做什么
一些开发人员将 Rust 所需的所有额外细节和模板视为优势。它让他们可以 inject hints,使编译器更容易找出正在发生的事情并捕获任何潜在的错误。华丽的代码为开发人员提供了更好的机会来完全指定应该发生的事情,此举有助于避免编译器错误。Rust 通过注入有关代码应该如何工作的提示来邀请开发人员编写更好、更快的代码。
讨厌:谁想告诉编译器该做什么啊?
有些开发者只是想要一种语言,他们可以用它来完成运行时不会崩溃的循环、可以处理后台工作。因此如果编译器有时生成的代码比较慢,或者可能有点错误,无伤大雅。许多工作并没有那么复杂,而且调试起来也不难。相较 Rust 编译器的使用,配置更多的硬件反而要更轻松一点。
4、喜欢:Rust 具有很好的向后兼容性
Rust 的开发团队致力于确保即使语言不断发展,代码也能继续运行。该团队致力于确保旧的代码能够继续编译和运行新版本的语言,这一点是其他语言有时会忽视的。Rust 爱好者经常指出,他们能够维护他们的代码库而不需要无休止的重写。这是因为 Rust 是一种尊重其自身历史的语言。
讨厌:Rust 不是严格面向对象的语言
Rust 不遵守面向对象的编程原则,这会给一些程序员造成问题。
5、喜欢:Rust 的异步处理模型更安全
Rust 的异步编程模型允许开发人员创建独立运行的 separate functions,然后将结果连接起来。许多开发人员表示,这种结构有助于他们构建更快的代码,同时遇到更少的错误。
讨厌:异步编程很难
Rust 所做的任何事情都无法使我们不必仔细考量我们的代码。Rust 无法保护代码免受死锁或延迟;它只能提供更好的建议和更少错误的结构。开发人员仍然要对良好的应用设计和编写干净的代码负责。Rust 只是将问题最小化,并减少一些更明显的危险。
6、喜欢:没有抽象的编程
Rust 旨在支持编写 low-level、byte-tweaking 代码的 system-level 程序员;它提供对 raw bits 的访问,并期望程序员能够使用它。该语言设计是为了与许多旧的 C 语言或汇编语言代码共存。
讨厌:Byte-level access 是有风险的
许多语言在发展过程中都避免了 byte-level access。这是有充分理由的:此举很容易导致程序员陷入困境。隐藏访问可以避免风险。一些程序员最好让语言的 hidden back 来处理分配内存和表示数据的细节。
7、喜欢:一种更好的垃圾回收机制
Rust 语言有自己的内存管理方法,它不像传统的 GC 那样全面,但可以更强大。优秀的开发人员可以使用 Rust 的内存模型提供出色的性能,但他们必须掌握类型系统和原子引用计数。
对于 Rust 的死忠粉来说,亲手操作内存管理是他们喜欢的功能。即使这项工作意味着要处理大量线程并确保代码具有响应性,他们也宁愿自己动手。无论好坏,Rust 都让你自己掌握主动权。
讨厌:内存管理很痛苦
许多流行的编程语言(如 Java)已经实现了内部内存管理,因为它可以防止内存泄漏和其他错误。大多数程序不需要担心由垃圾回收引起的偶尔的小插曲。作为程序员,你可能不希望需要担心内存问题。
此外,Rust 并不是唯一提供传统垃圾回收替代方案的语言。例如,Node.js 简化了多线程编码并让你依赖 JavaScript 的运行时内存管理,这是一个很好的折衷方案。
结论:Rust 仍然是新的和不断发展的
InfoWorld 总结称,我们可以争论 Rust 是否为异步编程提供了最好的模型,摆脱垃圾收集是否真的有助于开发人员等等;但归根结底,Rust 仍然是一门非常新的语言。开发人员正在积极学习其细节并发现使用 Rust 的最佳实践。创建 Rust 程序的正确方法有待商榷,开发人员在该领域不断学习和试验。
Rust 可能是也可能不是最适合你或你的项目的语言。一般来说,它可能是也可能不是创建软件的最佳解决方案。但这是一个令人兴奋的选择,有很多探索机会。作为一门语言,Rust 很新颖,学习它可以使人的大脑得到延伸。作为程序员,它让我们有理由重新思考我们的挑战,重新制定我们的目标,并着手寻找编写现代软件的最佳方式。还有什么能比这更好呢?