找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

和 C++ 相比,我为什么要选择 Rust 来开发软件?

admin 2020-1-15 15:49 87人围观 C++相关




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



作者 | Nick Heath

译者 | 虎说

责编 | 屠敏

出品 | CSDN(ID:CSDNNews)

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

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

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

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

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

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

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

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

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

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



入门从未如此简单

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



Rust 的用户群正在增长

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

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



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

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

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

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



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 语言服务器和 IntelliJ Rust 在 IDE 中提供支持。

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



Rust 将在 2019 年作出哪些改善?

编译时间更快

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

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

更好地选择软件库

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

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

更容易学习

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

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

原文:https://www.techrepublic.com/article/rust-programming-language-seven-reasons-why-you-should-learn-it-in-2019/

作者:Nick Heath 是 TechRepublic 的首席记者。他撰写了关于 IT 决策者需要了解的技术以及欧洲科技领域最新动态的文章。

本文为 CSDN 翻译,如需转载,请注明来源出处。


 热 文 推 荐

☞ 啥是佩奇,Python 告诉你!

☞ 王欣“马桶 MT”改名“MT”;任正非点赞苹果;酷派 27 岁总裁上任 | 极客头条

☞ 女生天生就是产品经理

“对不起,你的离职是我的错!”

☞ Gartner的预言:通向混合IT之旅

☞ 阿里“菜鸟”AI?

☞ 刚刚!华为又被美国盯上了!

☞ 心疼!能为程序员男友做些什么吗?



print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"


点击“阅读原文”,打开 CSDN App 阅读更贴心!


喜欢就点击“好看”吧
----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:CSDN,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......