编程语言应用

首页 » 常识 » 问答 » 和C相比,我为什么要选择Rust来开
TUhjnbcbe - 2023/9/3 20:57:00
北京好治疗皮肤病医院 http://m.39.net/pf/a_4648924.html

作为一门系统编程语言,Rust一直致力于解决高并发和高安全性系统等问题。和老牌的C++相比,Rust的性能也毫不逊色。但曾几何时,因为上手难、用户量少、社区不活跃等诸如问题让想要入门的开发者感到迷茫,如今新的一年已经开始,我们是否真的有必要学习Rust?

作者

NickHeath

译者

虎说

责编

屠敏

一些开发人员非常沉迷于Rust,因为它提供了一些安全措施,如保证内存安全,它在安全代码里不容许空指针、悬垂指针和数据竞争。并且,Rust的性能和标准的C++性能不相上下!

Rust是由Mozilla开发人员GraydonHoare在年开发的个人项目,从那个时候起,该语言就像它所命名的Rust真菌一样,开始传播,它今天被广泛应用于构建网络、嵌入式计算机、分布式服务和命令行。

“Rust的最大优势在于它是一种赋能技术!”Rust编程语言核心团队的CarolNichols说道,他本人还是TheRustProgrammingLanguage一书的合著者。

“之前,我们只能使用C或者C++才能编写具有较低内存占用空间的高质量代码。但是,在生产代码中使用这些语言需要你手动管理内存并了解可能导致未定义行为的所有方法。”

Nichols指出,不断扩展的CVE代码漏洞数据库证明“即使是最优秀的程序员”也疲于应对层出不穷的代码漏洞。

“为了确保你安全地使用内存,Rust编译器非常严格,这样你就可以专注于你真正想要解决的问题。”Nichols补充到。

除此之外,Rust还增加了一些高级语言的生命质量特征。

“我喜欢将Rust视为高水平的前端,低水平的后端,就编写Rust的经验而言,我感觉它像是Ruby、Haskell和Scala的混合。它具有功能性影响,如闭包和迭代器,以及类似于Haskell的丰富类型系统。”Nichols说。

“就使用Rust创建的程序而言,它们与使用C和C++创建的程序在速度和内存使用方面最相似。”

原来Rust那么强大!上面这些理由是不是还不足以说服你开始学习Rust!那么请看下面这七个原因,看完即可开始学习Rust,切勿错过好时机!

入门从未如此简单

“现在是学习Rust的好时机,因为刚刚在12月6日发布的年版本对语言编写进行了大量改进,使得Rust更加符合常规的开发的编码习惯”负责改进该版本的Nichols说到。

Rust的用户群正在增长

现在已经有数百家公司在软件生产中使用Rust,例如Dropbox、Yelp和Cloudflare,类似像亚马逊最近宣布的虚拟化技术Firecracker这样的产品也正在与Rust一起创建。

不得不承认的是,Rust的使用还处于早期阶段,雇主们目前并不急于提高自己公司技术人员的Rust技能,去年在全球吃香的编程语言还是哪些最顶尖的技术语言。然而,Indeed的高级副总裁RajMukherjee表示,有迹象显示雇主开始对Rust产生兴趣。“我们开始看到编程语言Rust出现在招聘广告中,尽管全球职位空缺数量相对较少。但是整个搜索量还是超过可用量,越来越多的人正在加入到学习Rust语言的行列中。”他说。

Rust的低开销非常适合嵌入式编程

在家用电器和工业机器等非常低功耗的嵌入式系统上编写软件并运行是一项极具挑战性的工作。Nichols说,Rust非常低的开销使其非常适合在这些微控制器的极其受限的资源上运行,Rust是极少数适用于在极低资源环境下运行的少数现代编程语言之一。

“将Rust交叉编译到各种嵌入式设备有很多很棒的工具,Rust还支持CFFI,因此它可以与这个域和其他域中的现有代码进行集成。”

现在官方渠道提供的Rust版本也已经为Rust重新设计,包括嵌入式开发的必要功能,减少了开发人员从第三方库中获取这些功能的需求。

Rust可以构建强大的Web应用程序

Rust越来越像是构建Web应用程序的不错选择之一,其中有些应用程序提供的功能是使用JavaScript(Web应用程序常用语言)无法实现的。Rust可以编译成WebAssembly,它以接近原生的速度在每个主要的Web浏览器中运行。

“WebAssembly是一个非常有前景的新领域,可以将原生应用程序性能带入网络,而且Rust已成为编写编译为WebAssembly的代码的首选语言。”Nichols说。

“有一些工具允许你通过WebAssembly将Rust代码发送到npm(JavaScript包存储库),然后透明地向下游用户发送,还可以通过绑定将Rust部署到Web上,这允许调用浏览器和JavaScript本身提供的大多数功能。”Nichols对此寄予厚望,希望Rust可以很快与竞争对手的网络开发语言相媲美。

“我很高兴有一天我们在Rust中拥有一个功能齐全的Web框架。目前生态系统中已经有很多框架和激动人心的实验,但是没有可比的东西,比如Rails,在Rust还没有。我相信我们很快就用拥有这些功能。”

Rust适用于构建分布式在线服务

Nichols表示对于网络服务Rust可以使用最少资源来确保跨多个线程的内存安全的能力使其成为在线分布式系统扩展的服务的绝佳选择。同时Rust还使得编写泄漏内存或其他资源的代码变得更加困难,这些方面可以降低服务器成本并降低运营负担。

Rust从不同的在线服务中提取数据很快并且很容易,因为它实现了对async/await命令的支持,这将使得编写在等待数据传递时不会挂起的异步代码变得更加容易。

Rust适合创建功能强大的跨平台命令行工具

跨平台命令行应用程序是Rust真正闪耀的一个地方。你可以交叉编译到你所针对的平台,并获得一个二进制文件发送给用户。.Ripgrep是一个很好的例子:它是在Windows、Linux和macOS上运行的grep重新实现的grep,并且比同类中的任何其他文本搜索工具。

Rust拥有新的开发工具和更好的IDE支持

现在一系列开发工具都已变得不可用了,其中包括Rustfmt,一种基于默认代码样式自动格式化代码的工具;Clippy帮助确保惯用的代码风格。Rust用于突出潜在错误的内容,同时可以通过Rust语言服务器和IntelliJRust在IDE中提供支持。

现有工具也得到了改进,例如借助检查器确保代码内存的安全,如果变量使用该数据完成,它将不会阻止其他使用者使用数据。

Rust将在年作出哪些改善?

编译时间更快

Nichols说,将Rust代码编译到软件所需的时间仍然“比我们想要的要慢”。有一些关于渐进式编译的工作已经在一定程度上改善了这种情况,并且一直在进行的重构工作应该会在不久的将来取得进一步的改进。

Rust最近的改进-通过多种方法(包括渐进式编译)更快地重新编译,其中编译器仅重新编译已更改的部分代码。

更好地选择软件库

虽然Nichols说社区建立的软件库(称为“crates”)的生态系统自年Rust1.0以来已经扩展了很多,但其表示开发人员可能仍然无法找到他们正在寻找的功能的库。

“在某些情况下可能会有一个库,但它不完整或者不那么成熟,因为它需要在生产中使用。我们有各种各样的工作小组已经正在投资我们的生态系统并在编译器本身之外进行改进,我们很可能在未来一年需要有更多的工作小组。”Nichols补充说。

更容易学习

最后,Nichols评价道,Rust仍然难以学习和掌握,但最近又增加了许多书籍,包括她与SteveKlabnik一起写的TheRustProgrammingLanguage。从长远来看,她说有计划开发更多初学者学习资源和新的中级水平书籍和教程。

“我们希望每个人都能够在Rust中学习和提高工作效率!”

原文:

1
查看完整版本: 和C相比,我为什么要选择Rust来开