查看原文
其他

为什么 Rust 是编程的未来?

CSDN 2022-04-06


作者 | Scalac

译者 | 弯月

出品 | CSDN(ID:CSDNnews)

2020年 Stack Overflow 的调查报告显示,Rust 名列最受欢迎编程语言的榜首,86% 的开发人员表示今后会继续使用该语言。其实,这并不是什么新鲜事,自 2016 年以来,Rust 一直在该调查报告中名列前茅。Tiobe 指数也显示,Rust 的受欢迎程度持续上升,9 月份的时候达到了最受欢迎编程语言的第 18 名。在我们针对情感分析函数式编程语言的排名中,Rust 也获得了第一名。

Rust 由前 Mozilla 开发人员 Graydon Hoare 于 2006 年创建,目的是代替 C++,如今 Rust 在全世界开发人员中的人气越来越高。Rust 可用于编写 Web 应用程序、嵌入式计算机、分布式服务或命令行。科技巨头微软也正在慢慢地从 C++语言(由于安全问题不断增加)转向 Rust,这无疑是 Rust大受欢迎的最佳证据。

为什么 Rust 在程序员中的人气如此之高?为什么他们不选用其他编程语言?主要原因之一是,Rust解决了许多其他编程语言所共有的问题,有些开发人员甚至说 Rust 的创建者一定考虑到了 C++ 中所有潜在的问题。究竟是什么让 Rust 如此独特,我们是否应该学习Rust?下面,我们就来谈一谈我们认为 Rust 是编程未来的五个原因。


Rust与其他编程语言

 

与其他众多广为人知的编程语言相比,Rust 有一些明显的优势。

Rust与 C++

与 C++ 相比,Rust 的安全性高出很多。Rust 既能保护自己的抽象,也能保护开发人员创建的抽象,而 C++ 这两方面都做不到。C++ 中某些错误会导致不可预测的行为,而 Rust 则可以帮助你专心做好重要的工作。虽然 C/C++ 仍然是最流行的编程语言之一,但二者也有一些不可避免的问题。

另外,Rust 更容易上手,学习曲线不是很陡峭。Rust 没有 C++ 那样的技术债务,并发性更容易实现,而性能与 C/C++ 也差不多。Rust 允许程序员编写不安全的代码,但在没有特别指明的情况下只允许安全的代码(如果你选择编写不安全的代码,则可以在 Rust 中使用 unsafe 关键字)。

Rust与 Java

Java的速度远不如 Rust。此外,Rust 的启动速度更快,占用的内存更小。Java 使用垃圾回收进行内存管理,这会降低性能(尽管这可以降低编程的难度)。

Rust与 Python

Rust的设计更好。Rust 允许将多条语句放入 lambda 中,这样一切都可以用表达式表示,因此更容易创建语言的特定部分。而 Python 缺少这样的支持。Rust 没有类,所以面向对象不如 Python 发展得那么好。

此外,Python 还需要编写很多测试,有时还会发生系统停机或运行时崩溃。Rust 更便于识别和修复 Bug。

Rust与 Go

Go缺乏表现力。Rust 有一个灵活且富有表现力的系统,允许定义新的容器类型,容器类型可以容纳不同类型的元素、泛型、特征、代数数据类型。在 Go 中,开发人员对资源和内存的控制能力更弱。


为什么说 Rust 是未来


1.Rust 提高了内存安全性

长期以来,困扰开发人员的最大问题之一就是内存管理。其他语言中很容易错过某些代码问题,而这反过来又会产生可怕的错误代码,查找和修复这些错误需要花费大量时间。一个更大的问题是,代码中的错误会导致安全漏洞,在当今世界,安全漏洞可太危险了。大型网站或应用程序中的数据安全漏洞事件频频发生。原因往往是应用程序漏洞或配置错误。

Rust提高了内存安全性。Rust 代码不能有任何悬空指针、缓冲区溢出或任何其他类型的与内存相关的错误。开发人员可以定义应该如何管理内存以及如何将值放入其中,既可以管理内存、保证安全性,又不会损失性能,这是 Rust 的一个巨大的优势。

提高内存安全性是 Rust 开发人员的主要目标之一,也是该语言最重要的卖点。Rust 的代码编译器非常严格,每一个变量或内存地址都会被自动检查。如果发现任何语法错误、空值、悬空修饰符或内存安全问题,Rust 就不会编译代码,并通过警告显示不安全的代码,以便开发人员快速发现和修复主要问题。那么,Rust 是如何实现这一点的呢?

在 Rust 中,每个值都有“所有权”。当传递或返回一个值时,所有权就会被重新分配到某个作用域,而且只会分配到一个作用域。如果值的“所有者”离开该作用域,则该值将被删除。Rust就是通过这种方式跟踪内存,自动释放内存,并防止所有 bug 进入主代码。这意味着在运行时不会发生意外!该系统将在编译时分析内存管理,帮助开发人员更快地识别和修复 bug,因此也不需要使用垃圾收集。

但内存管理不止这么简单。高级系统常常涉及大量的计算密集型工作,而且还会创建大量的临时内存。这种负载会对 Java 虚拟机性能产生负面影响,而且许多编程语言(包括 Scala)根本无法处理它。

然而,Rust 却可以。Rust不需要管理内存,也无需使用像闭包之类的现代便利特性,就能支持编写有效使用内存的代码,而且运行时开销小到几乎没有,因此可用于实时或嵌入式项目,而且也可以与其他语言或项目轻松集成。

2.不断发展的社区

虽然 Rust 社区和库的数量远不及 C++ 等,但随着 Rust 语言的日益流行,加入社区的开发人员和爱好者也在不断增加。社区创建的框架、库和开发工具的数量已经接近 5.7万,并且每天都在增加。

除了不断增长的工具和框架库之外,Rust 还有一个活跃且受欢迎的社区。无论你需要解决某个问题,还是想寻找使用 Rust的技巧和窍门,都可以通过社区获得帮助。除了社区聊天和用户论坛,Rust 还有一个活跃的 reddit 子论坛。

下面是几个新兴的社区项目:

● redox:用 Rust 编写的操作系统;

● cgmath:线性代数和计算机图形库;

● Iron:并发 Web 框架;

● Doom renderer。

3.Rust 的速度非常快,而且非常灵活

Rust是一种速度非常快的编程语言,它的运行速度比 Scala 还快,尤其是在一些重视性能的任务中,Rust 尤为突出。在某些领域,Rust 的运行速度甚至比 Scala 或 Java 快三倍。

此外,挑选和使用 Rust 的外部包也很容易,而且 Rust 的打包构建工具也让编写代码变得非常简单。

Rust之所以这么快,原因有几个:

● 它是静态类型的编译语言,编译器可以优化代码,以提高速度;

● 提供 trait 的静态调度:类似于 C++ 模板,但更清晰;

● 明确跟踪变量的所有权。不会假设任何带有地址的变量随时都可以修改,因此可以在不对代码产生负面影响的情况下进行优化;

● 默认变量是不可变的(因此优化更容易);

● 提供了代数数据类型,也很适合优化;

● 存储数据没有任何开销,没有运行时或由于缺乏垃圾收集而突然暂停;

● 提供了零成本抽象。

Rust不仅便于优化,而且开发高级功能也很轻松。

4.使用广泛

Rust不仅性能优异,而且还提供了安全的执行环境;虽然 Rust 是高级函数式编程语言,但可以进行底层的优化。

你可以认为 Rust 是一种低级语言,适合各种系统,尤其是嵌入式或其他注重性能的系统。据说,它还被用于 3D 视频游戏开发。

为什么 Rust 广受全世界开发人员的喜爱?首先,你可以编写出永远不会出错的代码,因为编译器会检查所有内容。其他编程语言在运行时检测到的问题不会出现在 Rust 中。我们可以使用 Rust 编写出安全、高效的抽象,而且它的安全性几乎消除了使用不变性的需求。

许多人认为 Rust 是一种注重性能、速度和安全质量的新兴创新编程语言。

Rust是一种流行的加密货币和区块链编程语言,因为 Rust 易于理解和学习,在保障性能的同时还提供了安全性。此外,Rust 还为这些开发人员提供了工具,让他们更快地交付代码。选择 Rust 编写的加密货币不太可能崩溃,而且比使用其他编程语言更安全。

5.很多大公司都使用 Rust 

尽管 Rust 是一种相对年轻的语言,但在提高编程安全性和易用性方面,Rust 已成为很多开发人员的首选。此外,不仅开发人员对 Rust 感兴趣,一些公司和企业,尤其是大型公司,也已经使用 Rust 或正在计划使用 Rust。于今年 5 月份举行的AllThingsOpen 虚拟会议上,Ryan Levick(微软云开发倡导者)表示,Rust 作为一种语言是“业界正面解决多个问题的最佳选择”。虽然微软不打算在近期内放弃使用 C++,但他们的许多基础设施正在慢慢转移到 Rust。

除了微软之外,还有很多公司也都意识到了改用 Rust 的潜在好处,比如Dropbox、Sentry、亚马逊和 Mozilla 等。


总结


总的来说,Rust 有很多优势,因此该编程语言广越来越受欢迎。Rust 解决了一些令开发人员十分头疼的问题,它不仅保持了高水平的性能优势,而且还可以保障安全性。随着越来越多开发人员和 IT 领域的大公司认识到 Rust 语言的潜力,可以毫不夸张地说,有朝一日 Rust 将成为现代社会最常用的编程语言之一。

参考链接:

https://medium.com/scalac/5-reasons-why-rust-is-the-future-7ac731085339

华为已出售X86服务器业务;苹果3nm芯片或将2023年问世;微软官宣加入JCP计划 | 极客头条

“因为内存泄漏,我的 M1 MacBook Pro 瘫痪了”

Oracle 的成功无法复制,国产数据库该如何突破?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存