您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Rust

为什么 Rust 是最受开发者推崇的语言

时间:2023-09-05 11:10:01  来源:CSDN  作者:

【CSDN 编者按】Rust 连续八年蝉联“最受欢迎的编程语言”,它究竟有什么魅力,让全球开发者这个新晋编程语言如此着迷?一起来看看正在不断发展和壮大的 Rust 的起源、能力、资源和它的使用场景。

原文链接:https://Github.blog/2023-08-30-why-rust-is-the-most-admired-language-among-developers/

作者 | Sara Verdi

译者|Ric Guan 责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

在 Stack Overflow 的年度开发者调查中,Rust 已经连续第八年荣登 “最受欢迎编程语言” 榜首。并且超过 80% 的开发者表示明年还想使用 Rust 语言,这不禁让人好奇,一门诞生不到 20 年的语言是如何俘获全球开发者的心。

在本文中,我们将介绍 Rust 的历史、它的常用用途、开发者如此喜爱它的原因,并提供一些资源,帮助您开始学习 GitHub 上增长最快的语言之一。

所以,Rust 是什么?

Rust 的“Hello World” 示例

Rust 最初是作为 C 和 C++ 的一种更安全的替代语言,它是一种系统编程语言,因其强调安全性、性能和生产效率,在开发人员中大受欢迎。Rust 是一种静态类型语言,因此变量和表达式类型会在编译时就被检查并确认,这有助于增强内存安全性和错误检测,从而提高架构的可靠性。

2006 年,软件开发人员 Graydon Hoare 在 Mozilla 工作期间,将 Rust 作为个人项目启动了。根据《麻省理工科技评论》的采访,Rust 的灵感来自 Hoare 公寓楼里一部坏掉的电梯。当时电梯操作系统的软件崩溃了,Hoare 明白,类似的问题通常来自程序内存的问题。

通常,这类设备的软件都是用 C 或 C++ 编写的,但这些语言需要大量的内存管理,很容易导致错误,造成系统崩溃。因此,Hoare 开始着手研究如何创建一种既紧凑又无内存错误的编程语言。

后来,他向一位经理展示了这个项目 -- 这也让 Mozilla 在 2009 年赞助了这个项目,作为将 Rust 语言纳入一项实验性浏览器引擎开发的长期努力的一部分。2010 年,Mozilla Research 正式宣布了 Rust 项目,并将源代码作为开源项目向公众发布。经过几年的开发,Rust 达到了稳定和成熟的状态,于 2015 年 5 月发布了 Rust 1.0。这一里程碑标志着 Rust 已经为生产做好了准备,并为开发人员提供了一个基础。

自 1.0 发布以来,Rust 的受欢迎程度和采用率呈爆炸式增长,微软 windows 等顶级应用软件纷纷利用 Rust 的内存安全代码重写核心库。在科技巨头之外,Rust 还拥有一个充满活力的开发者社区,即 "Rustaceans",他们致力于让 Rust 体验成为一种活跃的协作体验。

Ferris,Rust 的非官方吉祥物

根据 SlashData 最近的一项调查,到 2023 年,全球大约有 280 万 Rust 开发人员,这一数字在过去两年中几乎翻了三倍。Rust 拥有大量活跃的论坛、文档,以及为各种技能水平的开发者提供支持的社区,因此在最受欢迎语言排行榜上名列前茅也就不足为奇了。

Rust 有什么特别之处?

那么,究竟 Rust 的哪些关键功能使其对开发者如此有吸引力?

简单来讲,Rust 解决了一些令 C 和 C++ 相关的开发者最令人沮丧的内存管理问题,但这并不是它唯一的闪光点。GitHub 的一名软件工程师 Jason Orendorff 在一本关于 Rust 编程的书中谈到:

“对我来说,Rust 的伟大之处在于它既快速又可靠,” Orendorff 说道:“它让我能够编写在 16 个内核上运行的多头程序,并保持它们的可读性、可维护性和无崩溃性。它还允许我编写需要控制内存布局的非常低级的算法,并引入一个使 HTTPS 请求变得超级简单的包。正是这些功能的结合使 Rust 如此独特。”

在此基础上,这里还有一些深受喜爱的特性和功能:

  • 并发性。Rust 通过内置其所有权系统和借用模型为并发编程提供支持,所有权系统对数据访问执行严格的规则,借用模型则是允许受控的同时访问来防止数据竞赛。这确保了多个线程可以在共享数据上工作,而不会引入与内存相关的问题。
  • 无垃圾回收。与一些编程语言不同,Rust 不采用垃圾回收。相反,它采用所有权和借用规则来管理内存,这有助于开发人员精确控制内存的分配和删除,从而实现高效的资源管理。
  • Cargo 软件包管理器。Rust 内置的软件包管理器 Cargo, 简化了项目管理、依赖关系跟踪和构建过程,这有助于高效、有序地完成开发工作流程。但这并不能说明 Cargo 生态系统有多疯狂。根据 Orendorff:“我的团队利用高质量的开源软件包进行散列、序列化、多线程、数据结构、压缩等工作。这些都是对性能至关重要的库。如果没有其中的一些,我们在 GitHub 上重新思考代码搜索的项目就不可能实现。“ 还有一个有趣的事实:Rust 实际上是第一种拥有标准软件包管理器的系统编程语言,因此 Rust 生态系统非常强大。
  • 零成本抽象。此功能允许开发人员编写高级代码抽象和功能,而不会引入任何运行时性能开销。
  • 模式匹配。这种强大的语言功能使开发人员能够简洁有效地将复杂的数据结构与特定模式进行匹配,以干净且可读的方式提取和处理不同的案例或场景。
  • 类型推断。此功能允许 Rust 编译器在编码时根据上下文自动检测表达式。“许多编程语言都有某种类型推断,” Orendorff 说。“C# 和 C++ 有一些,Rust 有更多,Haskell、Scala 和 ML 这样的语言有更多。”

这段代码是 Rust 开发者之间的一个内部笑话,运行一下试试看?

Rust 常用于哪些领域?

由于可以直接访问硬件和内存,Rust 非常适合嵌入式系统和裸机开发。它也是一种通用语言,因此也可用于各种应用。

让我们来探讨几个关键用例:

使用 Rust 构建性能关键型后端系统

性能关键型后端系统是处理需要高速处理、低延迟响应和高效资源利用的任务的软件组件或服务,而 Rust 的性能、线程安全和错误处理使其成为开发这类系统的绝佳选择。事实上,我们在 GitHub 就使用 Rust 构建了这样一些系统。例如,我们的代码搜索功能的后台就是用 Rust 编写的。

使用 Rust 开发操作系统

Rust 最初是为了解决操作系统问题而创建的(还记得电梯问题吗?),因此,毫不奇怪,它经常用于构建操作系统、内核、设备驱动程序或其他低级组件,这其中对于内存和性能的控制至关重要。

Redox,一个类 Unix 操作系统,是用 Rust 编写的,贡献了 Rust 最重要的功能之一:安全性。“Fuchsia 是谷歌构建的另一个例子,”Orendorff 说, “如果你有一个 google Nest 智能扬声器,它很可能运行 Fuchsia。”

Rust 用于与操作系统相关的代码

Rust 也非常适合编写执行与操作系统密切交互的任务的代码。例如,GitHub 的 Codespaces 团队正在利用 Rust 来提高 GitHub Codespaces 中虚拟磁盘的启动速度并优化 Azure 存储的利用率。Coursera 还在其在线评分系统中采用了 Rust,因为它在 Docker 中运行,并且需要一种依赖性极小的语言来编译机器代码。

使用 Rust 进行 Web 开发

Rust 越来越多地用于 Web 开发,尤其是在服务器端。Rust 的异步编程模型和性能特征使其适合构建高性能 Web 服务器、API 和后端服务。另外,Rust 的 Web 框架不断涌现,比如 Rocket,它们可以帮助人们开始编写安全的 Web 应用程序。这些框架的出现凸显了 Rust 作为一种成熟语言的地位,也有助于增加对希望在前端或后端工作中使用 Rust 的人们的支持。

使用 Rust 进行加密和区块链开发

Rust 的速度、内存管理和安全性都有助于其参与加密货币和区块链技术。例如,Polkadot 旨在以安全和去中心化的方式共享信息和资产,实现多个区块链之间的互操作性和交互,便是利用 Rust 构建其核心基础设施。Polkadot 的运行时逻辑控制区块链的行为和规则,也是用 Rust 编写的。

使用 Rust 构建 CLI 工具

Rust 可编译高效的机器代码的能力及其富有表现力的语法,使其成为构建命令行工具和应用程序强有力的选择。另外,编写命令行应用程序是学习和熟悉 Rust 的好方法。

使用 Rust 进行嵌入式系统和物联网开发

Rust 的最小运行时间和对内存布局的控制使其对于开发嵌入式系统和物联网 (IoT) 设备非常有用。它能够防止与内存相关的错误、管理并发以及生成小型高效的二进制文件,从而满足物联网的安全性、实时性和效率需求。

为什么开发人员喜欢 Rust

尽管 Rust 的用户群远不如 JAVAPython/ target=_blank class=infotextkey>Python 那样大,但 Rust 仍在活跃在互联网上最受欢迎的编程语言的大热门竞争榜单中。甚至还有一个完整的网站,其中包含开发人员对 Rust 的赞扬。

但究竟为什么 Rust 如此受到开发者的推崇呢?如果你将非要总结开发人员如此喜爱 Rust 的几个原因,那么它们必须是该语言的速度、安全性和性能。

此外,Rust 正在通过新的框架、工具和资源不断发展和成长。你可以在 Awesome-rust 存储库中密切关注对该语言的贡献,该存储库包含令人印象深刻的 Rust 代码和资源列表。

底线:欣赏 Rust 不仅仅是采用一种语言,而是拥抱一种优先考虑创新的心态,同时又不损害稳定性和安全性的核心原则。



Tags:Rust   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  Search: Rust  点击:(15)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  Search: Rust  点击:(20)  评论:(0)  加入收藏
前端开始“锈化”?Vue团队开源JS打包工具:基于Rust、速度极快、尤雨溪主导
Vue 团队已正式开源Rolldown —— 基于 Rust 的 JavaScrip 打包工具。Rolldown 是使用 Rust 开发的 Rollup 替代品,它提供与 Rollup 兼容的应用程序接口和插件接口...【详细内容】
2024-03-09  Search: Rust  点击:(11)  评论:(0)  加入收藏
Rust中的数据可视化指南
可视化是数据分析和解释的一个关键方面。虽然Rust主要以其性能和安全特性而闻名,但它也为数据可视化提供了强大的工具。在这个全面的指南中,我们将深入研究Rust中的数据可视化...【详细内容】
2024-03-07  Search: Rust  点击:(29)  评论:(0)  加入收藏
如何在Rust中操作JSON,你学会了吗?
sonic-rs ​还具有一些额外的方法来进行惰性评估和提高速度。例如,如果我们想要一个 JSON​ 字符串文字,我们可以在反序列化时使用 LazyValue​ 类型将其转换为一个仍然带有斜...【详细内容】
2024-02-27  Search: Rust  点击:(47)  评论:(0)  加入收藏
记一次Rust内存泄漏排查之旅
在某次持续压测过程中,我们发现 GreptimeDB 的 Frontend 节点内存即使在请求量平稳的阶段也在持续上涨,直至被 OOM kill。我们判断 Frontend 应该是有内存泄漏了,于是开启了排...【详细内容】
2024-02-27  Search: Rust  点击:(12)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  Search: Rust  点击:(50)  评论:(0)  加入收藏
异步Rust:构建实时消息代理服务器
在本文中,我们将深入研究使用Rust构建实时消息代理服务器,展示其强大的并发特性。我们将使用Warp作为web服务器,并使用Tokio来管理异步任务。此外,我们将创建一个WebSocket客户...【详细内容】
2024-02-01  Search: Rust  点击:(57)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  Search: Rust  点击:(89)  评论:(0)  加入收藏
什么是Rust语言 ,特点是什么,跟其它语言对比有什么优势
什么是RustRust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C++的应用场景中提供一种现代、可靠和高效的选择。Rust的...【详细内容】
2024-01-09  Search: Rust  点击:(204)  评论:(0)  加入收藏
▌简易百科推荐
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(15)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  前端柒八九  微信公众号  Tags:Rust   点击:(20)  评论:(0)  加入收藏
Rust中的数据可视化指南
可视化是数据分析和解释的一个关键方面。虽然Rust主要以其性能和安全特性而闻名,但它也为数据可视化提供了强大的工具。在这个全面的指南中,我们将深入研究Rust中的数据可视化...【详细内容】
2024-03-07  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(29)  评论:(0)  加入收藏
如何在Rust中操作JSON,你学会了吗?
sonic-rs ​还具有一些额外的方法来进行惰性评估和提高速度。例如,如果我们想要一个 JSON​ 字符串文字,我们可以在反序列化时使用 LazyValue​ 类型将其转换为一个仍然带有斜...【详细内容】
2024-02-27  前端柒八九  微信公众号  Tags:Rust   点击:(47)  评论:(0)  加入收藏
记一次Rust内存泄漏排查之旅
在某次持续压测过程中,我们发现 GreptimeDB 的 Frontend 节点内存即使在请求量平稳的阶段也在持续上涨,直至被 OOM kill。我们判断 Frontend 应该是有内存泄漏了,于是开启了排...【详细内容】
2024-02-27  OSC开源社区    Tags:Rust   点击:(12)  评论:(0)  加入收藏
Rust 最受欢迎的这些库
今天分享主题是,关于一些值得注意的 Rust 库,这些库可以根据它们的功能和在编码中的受欢迎程度进行选择。什么是 Rust 库?在 Rust 中,常被称为 “crate” 的库,是一个打包的单元...【详细内容】
2024-02-19  码农渔夫  微信公众号  Tags:Rust   点击:(50)  评论:(0)  加入收藏
异步Rust:构建实时消息代理服务器
在本文中,我们将深入研究使用Rust构建实时消息代理服务器,展示其强大的并发特性。我们将使用Warp作为web服务器,并使用Tokio来管理异步任务。此外,我们将创建一个WebSocket客户...【详细内容】
2024-02-01      Tags:Rust   点击:(57)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  二进制空间安全  微信公众号  Tags:Rust   点击:(89)  评论:(0)  加入收藏
什么是Rust语言 ,特点是什么,跟其它语言对比有什么优势
什么是RustRust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C++的应用场景中提供一种现代、可靠和高效的选择。Rust的...【详细内容】
2024-01-09    简易百科  Tags:Rust语言   点击:(204)  评论:(0)  加入收藏
在 Rust 编程中使用多线程
编程语言有一些不同的方法来实现线程,而且很多操作系统提供了创建新线程的 API。Rust 标准库使用 1:1 线程实现,这代表程序的每一个语言级线程使用一个系统线程。1. Rust线程...【详细内容】
2024-01-07  二进制空间安全  微信公众号  Tags:Rust 编程   点击:(77)  评论:(0)  加入收藏
站内最新
站内热门
站内头条