+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

为什么开发者喜欢 Rust 语言

Rust 连续第八年在 Stack Overflow 年度开发者调查中被评为“最受欢迎编程语言”。超过 80% 的开发者表示,他们希望明年再次使用该语言,这让人不禁想知道,这个不到 20 年前创建的语言是如何赢得全球开发者的心的。 在本文中,我们将介绍 Rust 的历史、它通常用于哪些方面、为什么开发者如此喜欢它,以及一些帮助您开始学习 GitHub 上增长最快的语言之一的资源。 Rust 最初旨在成为 C 和 C++ 的更安全替代品,是一种系统编程语言,由于其强调安全性、性能和生产力,在开发者中获得了很高的人气。Rust 是静态类型语言,因此变量和表达式的类型在编译时确定和检查,这有助于增强内存安全性和错误检测,从而实现更可靠的构建。 2006 年,软件开发者 Graydon Hoare 在 Mozilla 工作时将 Rust 作为个人项目开始。根据接受《麻省理工科技评论》采访时的说法,Rust 的灵感来自于他公寓楼里的一部坏电梯。这部电梯操作系统的软件崩溃了,Hoare 意识到,像这样的问题通常来自于程序如何使用内存的问题。 通常,这些类型设备的软件是用 C 或 C++ 编写的,但这些语言需要大量的内存管理,这可能会导致错误,导致系统崩溃。因此,Hoare 开始研究如何创建一种既简洁又没有内存错误的编程语言。 他后来向一位经理展示了这个项目,这导致 Mozilla 在 2009 年赞助了它,作为将该语言纳入实验性浏览器引擎开发的长期努力的一部分。2010 年,Mozilla 研究正式宣布了 Rust 项目,并将源代码作为开源项目向公众发布。经过几年的开发,Rust 达到了稳定和成熟的状态——2015 年 5 月,Rust 1.0 发布。这一里程碑标志着 Rust 已经准备好用于生产,并为开发者提供了构建的基础。 1.0 版本发布以来,Rust 的受欢迎程度和采用率急剧上升,顶级应用程序(如 Microsoft Windows)利用 Rust 用其内存安全代码重写核心库。在技术巨头之外,Rust 还有一个充满活力的开发人员社区,或称“Rustaceans”,致力于使 Rust 体验成为一个活跃和协作的体验。 SlashData 最近的一项调查显示,2023 年全球大约有 280 万 Rust 开发人员,这个数字在过去两年几乎增加了两倍。对于所有技能水平的开发人员来说,有大量活跃的论坛、文档和支持性社区,Rust 一直在最期望的语言列表中名列前茅,这也许不足为奇。 Rust 有什么特别之处? 那么,Rust 的哪些关键特性使其对开发人员如此有吸引力? 简单地说,Rust 解决了开发人员在使用 C 和 C++ 时最令人沮丧的一些内存管理问题,但这并不是它唯一闪耀的能力。GitHub 的一位软件工程师杰森·奥伦多夫(Jason Orendorff)共同撰写了一本关于 Rust 编程的书籍,他对这种语言的评价是: “对我来说,Rust 最大的优点是它既快速又可靠,”奥伦多夫说。 “它允许我编写在 16 核上运行的多核程序,并使它们具有可读性、可维护性和崩溃-free 性。它还允许我编写需要控制内存布局的非常低级别的算法,并引入一个使 HTTPS 请求变得超级简单的 crate。正是这些特性的结合使 Rust 如此独特。” 在此基础上,以下是 Rust 备受喜爱的一些特点和功能: 并发性。Rust 通过其所有权系统和借用模型为并发编程提供了内置支持。所有权系统强制执行数据访问的严格规则,借用模型通过允许受控的同时访问来防止数据竞争。这确保多个线程可以在共享数据上工作,而不会引入与内存相关的问题。 不使用垃圾回收。与某些编程语言不同,Rust 不使用垃圾回收。相反,其所有权和借用规则管理内存,这有助于赋予开发人员精确控制内存分配和释放的能力,以进行有效的资源管理。 Rust 的内置包管理器 Cargo 简化了项目管理、依赖关系跟踪和构建,有助于促进高效和有组织的开发工作流程。但这并没有让人们清楚地了解 Cargo 生态系统有多么疯狂。根据 Orendorff 的说法,“我的团队利用高质量的开源包来进行散列、序列化、多线程、数据结构、压缩等,这些都是对性能至关重要的库。没有其中的一些,我们在 GitHub 上重新思考代码搜索的项目就不可能实现。”这里有一个有趣的事实:Rust 实际上是第一个拥有标准包管理器的系统编程语言,因此 Rust 生态系统非常强大。 零成本抽象。这个特性允许开发人员编写高级代码抽象和功能,而不会引入任何运行时性能开销。 模式匹配。这个强大的语言特性使开发人员能够简洁有效地将复杂的数据结构与特定模式进行匹配,以提取和处理不同的情况或场景,并以干净和可读的方式进行处理。 类型推理。这个特性允许 Rust 的编译器在您编写代码时根据上下文自动检测表达式。 “许多编程语言都有一些类型推理,”Orendorff 说。 “C# 和 C++ 有一些,Rust 多一点,而像 Haskell、Scala 和 ML 这样的语言甚至更多。” Rust 通常用于哪些方面? 由于其可以直接访问硬件和内存,因此 Rust 非常适合嵌入式系统和裸机开发。而且由于它是一种通用语言,因此也可以用于各种应用程序。 让我们探讨几个关键用例: 使用 Rust 构建性能关键的后端系统 性能关键的后端系统是处理需要高速处理、低延迟响应和高效资源利用率的任务的软件组件或服务。Rust 的性能、线程安全性和错误处理使其成为开发此类系统的绝佳选择。事实上,我们在 GitHub 上使用 Rust 构建了一些此类系统。例如,我们的代码搜索功能的后端是使用 Rust 编写的(您也可以阅读有关使用 Rust 开发 GitHub 最新代码搜索的更多信息)。 使用 Rust 开发操作系统 Rust 最初是为解决操作系统问题而创建的(记得电梯问题吗?),因此,毫不奇怪,它通常用于构建操作系统、内核、设备驱动程序或其他内存和性能控制至关重要的低级组件。Redox 是一个类 Unix 操作系统,是用 Rust 编写的,这为其最关键的功能做出了贡献:它的安全性。“Fuchsia 是谷歌构建的另一个示例,”Orendorff 说。 “如果你有一个谷歌 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 编写。查看这个仓库 awesome-blockchain-rust,其中提供了一些有用的组件,可以使用 Rust 构建自己的区块链应用程序。 使用 Rust 构建 CLI 工具 Rust 编译为高效的机器代码和其富有表现力的语法,使其成为构建命令行工具和应用程序的有力选择。此外,编写命令行应用程序是学习和熟悉 Rust 的好方法。
我的笔记