为什么Rust是开发者最青睐的语言
Rust继续成为开发者中最推崇和期待的语言,在这篇文章中,我们将深入探讨Rust如何(以及为什么)俘获全球开发者的芳心
连续第八年,Rust成为Stack Overflow年度开发者调查最受期待的语言,而且超过80%的开发者表示他们想在明年继续使用这门语言,你不得不想为什么一门诞生没有超过20年的语言已经俘获了全世界开发者的芳心
在本文中,我们将回顾Rust的历史,以及Rust通常用来干什么和为什么开发者如此喜爱它,这有一些资源可以帮助你开始了解Github上增长最快的语言
所以Rust是啥样的
Rust的打印宏显示输出“Hello World!”
fn main() {
println!("Hello World!");
}原本打算成为C/C++的更安全替代品的Rust作为系统级编程语言因为其强调安全性、性能和生产效率, 已经在开发者中大受欢迎。Rust是一个静态类型语言,所以会在编译阶段检查和校验变量和表达式的类型,这有助于提高内存安全和错误检查,从而实现更可靠的构建。
在2006年,软件开发者Graydon Hoare在Mozilla工作时开始将Rust作为个人项目启动。根据 MIT Technology Review 的采访,Rust的灵感来自于Hoare的公寓楼里一个坏掉的电梯,电梯的调度系统崩溃了,Hoare知道这个问题通常来自于程序内使用内存的方式。
大多数情况下,给这种设备写的软件都是用C/C++,但是这些语言需要大量的内存管理,出现导致系统崩溃的错误。所以,Hoare开始研究创造一种紧凑而且没有内存错误的编程语言。
他后来给经理展示了这个项目,这促使Mozilla在2009年赞助了这个项目,并将Rust纳入到长期开发实验性浏览器引擎的一部分。在2010年Mozilla研究院正式发布Rust,并将该项目开源。经过几年的发展,Rust变得稳定和成熟。在2015年5月,Rust1.0发布了,这一程碑标示着Rust可以用在生产环境,并为开发人员提供了一个基础。
自从1.0发布之后,Rust受欢迎程度和使用率呈现了爆炸式增长,那些顶级应用,比如微软用Rust内存安全代码重写核心库。除了科技巨头之外,Rust还拥有充满活力的开发者社区,或者“Rustaceans”,这些投入让Rust体验变得更好且具有协作性。(一个有趣的事实:据说Rust是以一种特别强健的真菌命名,这种真菌为生存而过度设计)
在2023年全世界大约有两百八十万Rust开发者,这一数字在过去两年中增长了近两倍,这里有大量活跃的论坛、文档和给各种技能水平的开发者提供支持的社区。这也许就是为什么我们对Rust在最受欢迎语言排行榜上名列前茅而感到不惊讶。
是什么让Rust如此特别
所以Rust如此吸引开发者的关键是什么呢?
简单来说,Rust解决了开发者在C/C++中令人烦恼的内存管理问题,但这不是唯一的亮点。GitHub的一位软件工程师,Jason Orendorff曾与他人合著了一本关于使用Rust编程的书,他这样评价该语言:
“对我来说,Rust的优点在于即快速又可靠”据Orendorff所说“它能让我在16个内核的芯片上运行multi-headed程序,并保证可读性,可维护性和不崩溃。他还能让我编写需要控制内存布局的低级算法,并经过封装之后,使HTTPS请求变得简单。这些功能让Rust变得独一无二。”
在此基础上介绍一下它深受喜爱的特点和功能:
支持并发 Rust通过其所有权系统为并发编程提供内置支持,该系统对数据访问执行严格的规则,并且它的借用模型通过允许受控的同时来防止数据竞赛,这可确保多个线程在处理共享数据时,不会引入与内存相关的问题。
没有垃圾回收 不像其他的一些编程语言,Rust没有垃圾回收机制。取而代之的是它的所有权和借用规则来管理内存,这有助于增强开发者分配内存和取消分配的精确控制,从而实现高效的资源管理。
Cargo包管理器 Rust的内置软件包管理器 Cargo 简化了项目管理、依赖关系跟踪和构建,有助于实现高效、有序的开发工作流程。但是这不能说明Cargo的生态系统有多疯狂。根据Orendoff所说:“我的团队利用高质量的开源软件包来实现散列、序列化、多线程、数据结构、压缩等功能。这些都是对性能至关重要的库。如果没有其中的一些,我们在 GitHub 上重新思考代码搜索的项目就不可能实现。”这里还有个有趣的事实:Rust事实上是第一个拥有标准包管理器的系统级编程语言,因此Rust生态系统十分强大。
零成本抽象 这一功能允许开发人员编写高级代码抽象和功能,而不会引入任何运行时性能开销。
模式匹配 这一强大的语言功能使开发人员能够简洁有效地将复杂的数据结构与特定模式相匹配,以简洁可读的方式提取和处理不同的情况或场景。
类型推断 该功能允许 Rust 编译器在您编码时根据上下文自动检测表达式。"许多编程语言都有一些类型推断,"Orendorff 说。"C# 和 C++ 有一些,Rust 有更多一些,而 Haskell、Scala 和 ML 等语言则有更多。
rust// 运行这段代码,听听 Rust 开发人员之间的内部笑话 fn main() { break rust; }
Rust通常用来做什么
由于它可以直接访问硬件和内存、Rust非常适合嵌入式系统和裸机开发,由于它是一种通用语言,因此也可用于开发各种应用。
让我们来探讨几个关键的使用案例:
使用Rust构建性能关键型后台系统
对性能要求极高的后端系统是指处理需要高速处理、低延迟响应和高效资源利用的任务的软件组件或服务,而 Rust 的性能、线程安全和错误处理功能使其成为开发此类系统的绝佳选择。事实上,我们在 GitHub 使用 Rust 构建了其中一些系统。例如,我们的代码搜索功能的后台就是用 Rust 编写的(你也可以阅读更多关于 GitHub 最新代码搜索的 Rust 开发过程)。
使用Rust开发操作系统
Rust最初是为了解决操作系统问题而诞生的(还记得电梯问题吗?)--因此,毫不奇怪,它经常被用来构建操作系统、内核、设备驱动程序或其他对内存和性能控制至关重要的底层组件。 Redox 是用 Rust 写成的,这也是它最重要的特点:安全性。“Fuchsia是谷歌开发的另一个例子,”奥伦多夫说。“如果你有谷歌 Nest 智能音箱,它很可能运行的就是 Fuchsia。”
用于操作系统邻接代码的Rust
Rust 还非常适合编写执行与操作系统密切交互任务的代码。例如,GitHub 的 Codespaces 团队正在利用 Rust 提高 GitHub Codespaces 中虚拟磁盘的启动速度,并优化 Azure 存储的利用率。Coursera 还在其在线评分系统中使用了 Rust 语言,因为它在 Docker 中运行,需要一种能编译成机器代码且依赖性最小的语言。
想要构建你自己的操作系统? 这组博文提供了如何使用 Rust 创建小型操作系统的分步教程。您还可以在 GitHub 上找到该项目的源代码。
使用Rust进行Web开发
Rust越来越多的被用来Web开发,尤其是在服务端。Rust 的异步编程模型和性能特点使其适合构建高性能网络服务器、应用程序接口和后端服务。此外,Rust 的网络框架(如 Rocket)也在不断涌现,它们可以帮助人们开始编写安全的网络应用程序。这些框架的出现彰显了 Rust 作为成熟语言的地位,也有助于为希望在前端或后端工作中使用 Rust 的人们提供更多支持。
使用Rust进行加密货币和区块链开发
Rust 的速度、内存管理和安全性都有助于其参与加密货币和区块链技术。例如,旨在实现多个区块链之间的互操作性和交互性,以安全和去中心化的方式共享信息和资产的 Polkadot 就利用 Rust 构建了自己的核心基础设施。Polkadot 的运行时逻辑(管理区块链的行为和规则)也是用 Rust 编写的。请查看这个名为 awesome-blockchain-rust 的资源库,其中有一些有用的组件,可用于使用 Rust 构建自己的区块链应用程序。
使用 Rust 构建 CLI 工具
Rust 可编译为高效的机器代码,其语法表现力强,是构建命令行工具和应用程序的有力选择。此外,编写命令行应用程序也是学习和熟悉 Rust 的好方法。看看这份全面的指南,了解如何在 15 分钟内用 Rust 构建自己的 CLI 应用程序!
使用Rust进行嵌入式系统和物联网开发
Rust 的最小运行时间和对内存布局的控制,使其在开发嵌入式系统和物联网(IoT)设备时非常有用。它能够防止与内存相关的错误、管理并发性并生成小而高效的二进制文件,从而满足物联网对安全性、实时性和效率的需求。
为什么开发者喜爱Rust
虽然 Rust 的用户群远不如 Java 或 Python 那么庞大,但 Rust 仍在互联网最受推崇的排行榜上与其他大公司一较高下。甚至有一个完整的网站都是开发者对 Rust 的赞美。
但 Rust 究竟为何如此受开发者推崇呢?如果把开发人员如此喜爱 Rust 的原因归结为几个方面,那一定是该语言的速度、安全性和性能。
此外,Rust 还在通过新的框架、工具和资源不断发展和壮大。你可以在 awesome-rust 代码库中查看对 Rust 语言的贡献,该代码库中包含了大量 Rust 代码和资源。
Rust 不仅仅是为了采用一种语言,更是为了接受一种思维方式,即在不损害稳定性和安全性等核心原则的前提下优先考虑创新。