在 Stack Overflow 2020 调查中,Rust 被选为最受欢迎的编程语言第一名,这要归功于 86% 的开发人员表示他们会继续使用它。对于语言创造者来说,这并不是什么新鲜事—— Rust 自 2016 年以来一直在这项调查中获胜。在 Tiobe 指数上, Rust 的受欢迎程度也在上升——在 9 月份在最受欢迎的语言中排名第 18 位。它在我们自己的基于情感分析的函数式编程语言排名中也没有失败,在最积极的情感类别中获得第一名。由前 Mozilla 开发人员 Graydon Hoare 于 2006 年创建,作为 C++ 语言的替代品,Rust 正慢慢在开发人员的世界中声名鹊起。它现在用于创建 Web 软件、嵌入式计算机和分布式服务或命令行。这种受欢迎程度的适当证明是,全球巨头微软正在慢慢地从 C++ 语言(由于安全问题数量不断增加)转向 Rust。是什么让 Rust 在程序员中如此受欢迎,当他们有这么多其他语言可以使用时,Rust 作为新势力它有何优势,它的前景如何呢?
与 C++ 相比,Rust 只是更安全。Rust 保护自己的抽象和开发人员所做的抽象,而 C++ 缺少这两个选项。C++ 中的特定错误可能导致任意行为,而 Rust 可以帮助您专注于真正重要的事情。是的,C/C++ 仍然被认为是最流行的编程语言之一,但它经常会导致一些问题。Rust 更容易上手,学习曲线不是很陡峭,Rust 没有 C++ 那样的技术债务,具有更容易的并发性,并且性能相当。Rust 允许程序员编写不安全的代码,但默认为安全代码(如果您选择加入,您可以使用 unsafe 关键字在 Rust 中不安全代码——它默认随 C++ 一起提供)。
当谈到 Java 时,事实证明这种编程语言比 Rust 慢得多。此外,您需要记住更快的启动时间和更小的内存占用。Java 使用垃圾收集进行内存管理,这会降低性能(尽管值得注意的是它使编程更容易)。
Rust 设计得很好。Rust 允许将语句放入 lambda 中,并且一切都是表达式,因此更容易组合语言的特定部分。Python 缺少它。Rust 没有类,所以面向对象不像 Python 那样进化。Python 还遇到了编写更多测试、生产中断或运行时崩溃的必要性。Rust 使识别和修复可能的错误变得更便宜。
Go缺乏表现力。Rust 有一个灵活且富有表现力的系统,允许定义新的容器类型,这些类型可以包含不同类型的元素、泛型、特征、代数数据类型。Go 减少了对资源和内存的控制。
困扰开发人员的最大问题之一是内存管理问题。在其他语言中很容易遗漏代码问题,这反过来又会产生可怕的错误代码 - 并且需要时间来查找和修复它们。一个更大的问题是编码错误何时可能导致安全漏洞——在当今世界,这简直太危险了。大型流行网站或应用程序中发生数据安全漏洞的大声案例比我们希望的要频繁得多。原因很多时候是油应用程序漏洞或配置错误导致的。Rust 被认为是内存安全的。
Rust 代码不能有任何悬空指针、缓冲区溢出或任何其他类型的与内存相关的错误。它让您可以定义应该如何管理内存以及应该如何在其中布置值,在不损失性能的情况下照顾控制和安全线,并使其成为 Rust 的巨大资产。 提高内存安全性是 Rust 开发人员的主要目标之一,也是该语言最重要的卖点。他们的代码编译器很严格,每一个用到的变量或内存地址都会自动检查。如果发现任何语法错误、空值、悬空修饰符或内存安全问题,Rust 将不会编译代码并警告不安全的代码,以便快速发现和修复主要问题。它是如何做到的?在 Rust 中,每个值都有一个“所有权”。当一个值被传递或返回时,所有权被赋予一个新的范围——一次只有一个。如果值的“所有者”移出范围,则该值将被删除。这样,Rust 会跟踪内存并自动释放它——并防止所有错误进入主代码。这意味着在运行时没有意外!该系统将在编译时分析内存管理,帮助更快地识别和修复错误,并使垃圾收集变得不必要。
但还有更多关于内存的内容。构建高级系统通常与大量计算密集型工作相关并创建大量临时内存。这种卸载会对任何 Java 虚拟机性能产生负面影响,而且许多编程语言(包括 Scala)根本无法处理它。然而,Rust 可以。它支持编写内存高效的代码,无需管理内存或专门提供现代便利(例如闭包),并且运行时运行时开销最小或没有运行时开销,可用于实时或嵌入式项目,并可轻松与其他语言或项目集成。
当然,Rust 的社区和库的数量远不及 C++ 等。但是随着 Rust 语言的日益流行,加入的开发人员和热情的人的数量也在增加。社区创建的框架、库和开发工具(称为“板条箱”)的数量已经接近 57k,并且每天都在增加。除了不断增长的工具和框架库之外,Rust 还拥有一个活跃且受欢迎的社区。无论您是需要解决问题的帮助还是寻找使用 Rust 的技巧和窍门,您都有几个地方可以访问。除了社区聊天和用户论坛,Rust 还有一个活跃的 subreddit 部分。看几个新兴社区项目的例子:
redox,一个用 Rust 编写的操作系统;
cgmath,一个线性代数和计算机图形库;
Iron,一个并发 Web 框架;
Rust 被认为是一种相对较快的语言。当使用通用代码时,它可以比 Scala 运行得快得多,尤其是在性能关键任务中。很有可能在某些领域它的运行速度甚至比 Scala 或 Java快三倍。获取和使用外部包很容易,而且 Rust 的货物构建工具使编码变得简单。 有几个因素使 Rust 非常快:
- 它是静态类型和编译的,使编译器可以优化代码以提高速度
- 它提供特征的静态调度:类似于 C++ 模板,但更清晰
- 它明确跟踪变量的所有权。Rust 不假设任何带有地址的变量都可以随时更改,因此可以在不对代码产生负面影响的情况下进行优化。
- 它期望变量默认是不可变的(因此优化更容易)
- 它提供代数数据类型,也很适合优化
- 它在没有任何开销的情况下存储数据,没有运行时或由于缺乏垃圾收集而突然暂停
- 它提供零成本抽象
如果有一个项目,除了性能和低级优化(但高级 Rust 函数式编程技术)的重要性之外,还需要一个安全稳定的执行环境,Rust 应该通过考试。Rust 被认为是一种低级语言,适合最好的系统,以及嵌入式和其他性能关键代码。据信,它还可以用于 3D 视频游戏。为什么 Rust 如此受到全世界开发者的喜爱?首先,它允许您编写最有可能永远不会出错的代码,因为编译器会检查所有内容。在编译时在其他编程语言中检测到的问题不会出现在 Rust 中。它也有利于编写安全、省时的抽象,它的安全性几乎消除了使用不变性的需要。
Rust 也被认为是一种用于关注性能、速度和安全混合质量的新兴创新领域的语言。由于证据就在布丁中:Rust 是一种流行的加密货币和区块链编程语言。这是一个受欢迎的选择,因为它易于理解和学习,并且提供了性能和安全性的独特组合——后者是开发人员正在寻找的东西。Rust 还为这些开发人员提供了工具,以更快地开始交付他们的代码。选择 Rust,加密货币不太可能崩溃,并且比使用另一种编程语言时更安全。在这里您可以找到使用 Rust 的加密货币列表。
尽管 Rust 是一种相对年轻的语言,但在提高编程安全性和易用性方面,Rust 已经被开发人员认为是正确的一步。但不仅开发人员对 Rust 感兴趣——公司,尤其是大型公司,也已经或计划转向 Rust。在 5 月份举行的 AllThingsOpen 虚拟会议上,Ryan Levick(微软云开发倡导者)解释说,Rust 作为一种语言是“业界正面解决几个问题的最佳机会”。虽然微软不打算很快停止用 C++ 编写,但它的许多基础设施正在慢慢转移到 Rust。微软并不是唯一一家意识到改用 Rust 语言的潜在好处的公司——使用 Rust 语言的公司包括 Dropbox、Sentry、亚马逊和 Mozilla。
纵观 Rust 可以提供的所有好处,该系统的受欢迎程度只会越来越高也就不足为奇了。Rust 都解决了一些问题,在保持与其他更知名的编程语言相同的性能水平的同时,在开发人员社区中引起了许多头痛。随着开发人员和 IT 领域的主要参与者都认识到 Rust 语言的潜力,可以毫不夸张地说 Rust 有朝一日将成为现代世界中最常用的编程语言之一。