【精选】为什么 Rust 编程语言如此受欢迎? 您所在的位置:网站首页 rust又能播了 【精选】为什么 Rust 编程语言如此受欢迎?

【精选】为什么 Rust 编程语言如此受欢迎?

2023-11-03 06:07| 来源: 网络整理| 查看: 265

Rust 的创建是为了确保类似于 C 和 C++ 提供的高性能,但强调代码安全性,而缺乏安全性是这两种语言的致命弱点。然而,Rust不仅仅具有内存安全性。处理大量数据时的高性能、对并发编程的支持以及有效的编译器是知名软件重量级人物现在使用这种编程语言的其他原因。Firefox、Dropbox、Cloudflare 和许多其他公司,从初创公司到大公司,都在生产中 使用Rust 。

在本文中,您可以找到更多关于 Rust 的主要特征、它的用途以及为什么应该考虑在您的软件项目中采用它的信息。

Rust 越来越受欢迎

根据2021 年 Stack Overflow 开发者调查 在超过 80,000 名开发人员中进行,Rust 是最受欢迎的编程语言。它连续第六年获得冠军。

2020 年,Linux内核开发人员提议用 Rust 编写新的 Linux 内核代码。需要明确的是,他们不想重写最初用 C 编写的整个内核,而是想在 Rust 中添加可以与现有基础设施一起使用的新代码。不亚于开源操作系统 Linux 之父 Linus Thorvalds 的人物对这个想法表示欢迎,并渴望看到项目的成果。这个想法正在持续开发中——目前,它仍被描述为实验性的,但“足够好,内核开发人员可以开始为子系统开发 Rust 抽象并编写驱动程序和其他模块。”

此外,在将系统编程语言 Rust 的支持引入 Android 之后,谷歌还计划在 Linux 内核中使用 Rust 。整个操作旨在减少安全漏洞。与此同时,微软已经转向 Rust 来减少 Windows 组件中与内存相关的错误。

Facebook 还与 Rust 建立了更紧密的联系,加入了 Rust 基金会,该组织成立于 2021 年,旨在推动 Rust 的发展,并使其成为“系统编程及其他领域的主流语言选择”。Facebook 加入了亚马逊网络服务、谷歌、华为、微软和 Mozilla 的行列,在某种程度上使用了 Rust。

所有这些都清楚地表明,Rust 在过去几年中越来越受欢迎。但它只是另一种大肆宣传但很快就会消失的技术吗?

全新版Windows11正式发布,Windows11 22H2微软原版ISO下载地址 Rust 语言有什么特别之处?

Rust 是一种静态类型的编程语言,旨在提高性能和安全性,尤其是安全并发和内存管理。它的语法类似于 C++。它是最初在 Mozilla Research 开发的开源项目。2021 年,Rust 基金会接过了火炬,正在推动该语言的发展。

Rust 解决了 C/C++ 开发人员长期以来一直在努力解决的问题:内存错误和并发编程。这被视为它的主要好处。然而,这些并不是Rust 与 C++ 不同的唯一例子。

当然,有人可以说现代 C++ 更加强调内存安全(例如通过实现智能指针),但许多问题仍未解决。其中之一是“释放错误后使用”,当程序在释放后继续使用指针时会发生这种情况,例如在释放其引用捕获的对象后调用 lambda 函数。

另一方面,在 Rust 中,你有借用检查器——编译器的一部分,它确保引用不会超过它们所引用的数据。此功能可帮助您消除内存违规错误。这样的问题在编译时就被检测到了,垃圾回收是不必要的。

此外,在 Rust 中,每个引用都有一个生命周期,您可以在其中设置该引用有效的范围。这个特性解决了引用不再有效的问题,也将 Rust 与 C 和 C++ 区分开来。

当您意识到在过去 12 年中,Microsoft 产品中大约 70% 的所有安全漏洞都是内存安全问题时,正确的内存管理的重要性就会立即显现出来。Google Chrome也报告了相同的数字。

在 Rust 中有两种编写代码的模式:Safe Rust 和 Unsafe Rust。Safe Rust 对程序员施加了额外的限制(例如对象所有权管理),从而确保代码正常工作。Unsafe Rust 为程序员提供了更多的自主权(例如,它可以操作原始的类 C 指针),但代码可能会中断。

不安全的 Rust 模式解锁了更多选项,但您需要格外小心以确保您的代码真正安全。为此,您可以将其包装在更高级别的抽象中,以保证抽象的所有使用都是安全的。与其他编程语言一样,应谨慎使用不安全代码,以避免未定义的行为,并将内存不安全导致的段错误和漏洞风险降至最低。

Rust 的双模式模型是其最大的优势之一。另一方面,在 C++ 中,您永远不会知道自己编写了不安全的代码,直到您的软件崩溃或出现安全漏洞为止。

并发编程更容易

Rust 还通过防止编译时的数据竞争使编写并发程序变得更容易。当来自不同线程的至少两条不同的指令试图同时访问相同的内存位置时,就会发生数据竞争,而其中至少有一条正在尝试写一些东西,并且没有可以在各种访问之间设置任何特定顺序的同步。没有同步访问内存是未定义的。

在 Rust 中,检测到数据竞争。如果一个给定的对象访问不支持许多线程(即没有用适当的特征标记),它需要由一个互斥锁同步,该互斥锁将为其他线程锁定对该特定对象的访问。为了确保对对象执行的操作不会破坏它,只有一个线程可以访问它。

从其他线程的角度来看,对该对象的操作是原子的,这意味着观察到的对象状态始终是正确的,您无法观察到另一个线程对该对象执行操作所产生的任何中间状态。Rust 语言 可以检查我们是否对这些对象执行了任何不正确的操作,并在编译时通知我们。

其他语言采用同步方法,但它们与所引用的对象无关。开发人员在使用之前需要注意锁定对象。例如,在 C 语言中,编译器允许开发人员编写有缺陷的代码。结果,当程序已经在生产中时检测到错误 - 或者更糟糕的是,当有人试图破解它时。

在 Rust 语言中,许多与并发编程相关的问题(尽管不是全部)都得到了解决,因为它们在编译时立即被发现。

使用 Rust 编程时需要克服的一些障碍

当然,也不全是玫瑰。Rust 是一项相对较新的技术,因此一些所需的库可能尚不可用。尽管如此,Rust 包库 crates.io 自 2016 年以来一直在快速增长,充满活力的 Rust 开发者社区是进一步发展的好兆头。

此外,对于不习惯使用在编译时检测代码中的错误的语言的开发人员来说,收到许多错误消息可能会很烦人。因此,开发代码的速度不如 Python 等更流行的语言。但是,Rust 的开发人员正在尽最大努力使这些错误消息尽可能地提供信息和可操作。

即使在编码时收到如此多的错误消息可能会有些烦人,但也要专注于更大的图景。当您的软件已经投入生产时,在编译时强制执行内存安全可防止发生错误和安全漏洞。在这个阶段纠正它们肯定会花费你的精力和金钱。

最后但同样重要的是,编写 Rust 代码需要更多的努力,因为入门门槛相当高。你需要花一些时间来掌握这门语言。还需要精通 C++ 或任何其他面向对象的编程语言。

但是如果你克服了所有这些障碍,使用 Rust 的好处将是对你努力的最好回报。

阅读我们其他与 Rust 相关的文章:

Rust vs C:低级网络编程中的安全性和性能

Rust 与 C++ ——这些流行的编程语言之间的主要区别

Rust vs Go——你需要了解这些编程语言吗?

Rust 是做什么用的

Rust 已经是用于生产的成熟技术。作为一种系统编程语言,它允许您保持对低级细节的控制。您可以选择是将数据存储在堆栈上(用于静态内存分配)还是堆上(用于动态内存分配)。这里需要提一下RAII(Resource Acquisition Is Initialization),这是一个主要与 C++ 相关的代码习惯用法,但也存在于 Rust 中:每次对象超出范围时,都会调用其析构函数并释放其拥有的资源. 您不必手动执行此操作,并且可以防止资源泄漏错误。

这最终允许更有效地使用内存。Tilde 在他们的Skylight产品中使用了 Rust,特别是重写某些 Java HTTP 端点。这使他们能够将内存使用量从 5GiB 减少到 50MiB。

由于 Rust 没有持续运行的垃圾收集器,因此它的项目可以通过外部函数接口被其他编程语言用作库。这是现有项目的理想方案,在这些项目中,在保持内存安全的同时确保高性能至关重要。在此类项目中,Rust 代码可以替换软件的某些部分,其中性能起着至关重要的作用,而无需重写整个产品。

Rust 是一种可直接访问硬件和内存的低级编程语言,这使其成为嵌入式和裸机开发的绝佳解决方案。您可以使用 Rust 编写操作系统或微控制器应用程序。事实上,有许多用 Rust 编写的操作系统,例如:Redox、intermezzOS、QuiltOS、Rux和Tock。最初设计该语言的 Mozilla 在其浏览器引擎中使用它。

高性能和安全性是 Rust 如此吸引开始使用它来执行大量数据分析的科学家的特性。Rust 速度极快,使其成为计算生物学和机器学习的理想选择,在这些领域您需要非常快速地处理大量数据。

在 CodiLime,我们还在尝试确定 Rust 是否可以在需要高数据吞吐量的网络场景中替代C。在我们的 PoC中,我们使用 DPDK 库(用 C 编写)在 Rust 中构建了一个应用程序,以确保性能,同时保持内存安全。

>> 探索我们的Rust 开发服务

为什么使用 Rust

总而言之,在您的下一个软件项目中采用 Rust 的主要原因包括:

高性能的同时保证内存安全。

支持并发编程。

crates.io 存储库中越来越多的 Rust 包。

一个充满活力的社区,推动了语言的发展。

确保了向后兼容性和稳定性(Rust 已为未来 40 年设计)。

结论

Rust 拥有出色的性能、工具和活跃的社区,不断致力于语言改进。此外,如果您需要一个比 C 和 C++ 更注重安全性的解决方案,并且不想在速度上妥协,Rust 是您的理想选择。如果您担心 Rust 对于您的软件开发项目可能不够“成熟”,请放心,情况不再如此。数十家公司,如 Figma、1Password 或 Amazon,已经在他们的开发工作中使用了 Rust。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有