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

关 Rust 的五大传言,谷歌下场澄清!

时间:2023-06-30 14:06:26  来源:CSDN  作者:

自 2015 年正式对外发布,这些年来 Rust 一方面颇受大厂喜爱,另一方面有关它的传言也愈演愈烈。对此,近日 谷歌基于其内部使用 Rust 的体验和经历,对这些谣言进行了一一澄清。

原文链接:https://opensource.googleblog.com/2023/06/rust-fact-vs-fiction-5-insights-from-googles-rust-journey-2022.html

作者 | Lars Bergstrom、Kathy Brennan

译者 | 弯月 责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

2015 年,Rust 1.0 版正式发布,这是一种相对较新的编程语言,具有很多功能。关注 Rust 提供的性能和安全保证的开发人员可能很想知道是否可以仅使用 Rust 来代替他们之前使用的所有语言。如果大公司尝试在现有环境中使用 Rust 结果会怎样?开发人员学习该语言需要多长时间?学习 Rust 语言会有很大的收获吗?

在本文中,我们将分析 Google 多年来采用 Rust 的一些数据。在 Google,我们看到 Rust 的采用率不断增加,特别是在消费者应用程序和平台中。我们开展了一项调查,对象为 2022 年在部分工作中编写并提交了 Rust 代码的 1,000 多名 Google 开发人员,在此我们打算正面回应一些传言,其中包括一些可以改进的问题,同时也希望分享一些我们这段时间的发现。

我们要特别感谢我们的主要培训合作商之一 Ferrous Systems 在我们开始采用 Rust 之际给予的帮助。我们还想重点介绍一些免费自学的新材料:Comprehensive Rust (https://google.Github.io/comprehensive-rust/),这是我们和社区在过去几个季度中一起努力的成果。

传言 1:Rust 的学习需要 6 个多月——假的!

所有调查参与者都是 Google 的专业软件开发人员(或相关领域)。虽然其中一些人有 Rust 经验(约 13%),但大多数人来自 C/C++、Python/ target=_blank class=infotextkey>Python、JAVA、Go 或 Dart。

根据我们的研究,超过 2/3 的受访者有信心只需两个月或更短时间就可以为 Rust 代码库做出贡献。此外,三分之一的受访者只用了两个月或更短的时间,使用 Rust 编写代码的效率就可以与其他语言一样高。学习时间延长到四个月,这一数字就可以增加到 50% 以上。有趣的是,无论 Google 内外,这些数字的增长与我们看到的开发人员采用其他语言都一样。

总的来说,我们没有看到任何数据表明相对于这些开发人员之前在 Google 使用的任何其他语言使用 Rust 会导致生产力下降。参加了 Comprehensive Rust 课程的学生给出的反馈也很一致:第二天和第三天提出的问题表明,经验丰富的软件开发人员可以在很短的时间内熟悉 Rust。

传言 2:Rust 编译器的速度达不到人们的想象——真的!

就目前的情况来看,开发人员使用 Rust 时遇到的第一大挑战是构建速度慢,只有略多于 40% 的受访者认为这个速度可以接受。

社区范围内已经做出了巨大的努力来改进和跟踪 rustc 的性能。这得到了志愿者和几家公司(包括 Google)的支持,我们很高兴看到一些核心的开发人员也加入了这项工作,但很明显我们需要继续努力,甚至投入额外的支持。

传言 3:不安全的代码和互操作始终是最大的挑战——假的!

目前,对于 Google 开发人员来说,Rust 面临的三大挑战领域是:

  • 所有权和借用
  • 异步编程

编写不安全的代码,处理 C/C++ 互操作是 Google 开发人员常见的问题,但并不是最大的挑战。Rust 语言设计团队一直在上述三个领域努力,希望压平整体的学习曲线,并持续提升,而我们的内部调查结果与这些投资领域非常一致。

传言 4:Rust 的编译器错误消息质量非常高 ——真的!

经常有人提到 Rust 的编译器领提供的错误消息非常实用,这在本次调查中也得到了证实。只有 9% 的受访者对 Rust 中的诊断和调试信息的质量不满意。Comprehensive Rust 参与者的反馈也大致相同:人们对编译器的消息感到惊讶。起初,人们感到很惊喜,因为他们习惯于忽略编译器的错误,但习惯之后,就会非常喜欢。

以下示例来自 Google 内部员工为实践 Rust 所做的练习——用 Rust 解决 Advent of Code 2021(https://adventofcode.com/2021)。

在第 5 天的练习中,我们需要搜索表中的条目。下面的错误信息不仅检测到结果的模式匹配漏掉了一种情况,而且还提出了修复建议。

在第 11 天的练习中,我们需要检查某个元素是否在 grid 的范围内。下面的 Rust 警告检测到由于类型为无符号而导致冗余比较,并标明了可以删除的代码。

传言 5:Rust 代码质量很高——真的!

受访者表示 Rust 代码的质量很高:77% 的开发者对 Rust 代码的质量感到满意。事实上,当问及他们是否认为 Rust 代码的正确性高于用其他语言编写的代码时,超过 85% 的受访者相信他们的 Rust 代码是正确的。

Rust 代码不仅正确,而且易于审查。超过一半的受访者表示 Rust 代码非常容易审查。作为一名工程经理,在我看来,从很多方面来说这个结果与编写代码的结果同等重要,因为代码审查与编写代码都是专业软件工程师日常工作的重要组成部分。

正如 Google 开发人员和其他人所指出的那样,开发人员的满意度和生产力与代码质量以及审查代码所需的时间息息相关。如果说 Rust 不仅更适合编写高质量代码,而且让代码运行起来也更容易,那么对于正在评估和考虑采用这门语言的公司来说,这甚至是超越性能和内存安全性的一系列非常令人信服的理由。

展望未来

虽然 1000 多名开发人员是一个不小的基数,但我们期待着进一步的采用和未来的调查,其中也包括更多的用例。此外,虽然许多接受调查的开发人员加入了没有 Rust 经验的团队,但这些人中有一些是我们从更广泛的调查中看到的更兴奋的早期采用者。请继续关注来年更新的调查结果!



Tags:Rust   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10  Search: Rust  点击:(3)  评论:(0)  加入收藏
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  Search: Rust  点击:(17)  评论:(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  点击:(31)  评论:(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  点击:(58)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  Search: Rust  点击:(89)  评论:(0)  加入收藏
▌简易百科推荐
Rust 标准库 1.77.2 发布,修复高危漏洞
IT之家 4 月 10 日消息,Rust 的优势之一就是安全,但这并不代表该编程语言就没有漏洞。安全专家近日发现了追踪编号为 CVE-2024-24576 的漏洞,攻击者利用 Rust 标准库中的一个安...【详细内容】
2024-04-10    IT之家  Tags:Rust   点击:(3)  评论:(0)  加入收藏
在Rust中使用Serde的详细指南
在处理HTTP请求时,我们总是需要在一种数据结构(可以是enum、struct等)和一种可以存储或传输并稍后重建的格式(例如JSON)之间来回转换。Serde是一个库(crate),用于高效、通用地...【详细内容】
2024-03-26  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(17)  评论:(0)  加入收藏
Rust 写脚手架,Clap你应该知道的二三事
有感而发最近,在和前端小伙伴聊天发现,在2024年,她们都有打算入局Rust学习的行列。毕竟前端现在太卷了,框架算是走到「穷途末路」了,无非就是在原有基础上修修补补。所有他们想在...【详细内容】
2024-03-11  前端柒八九  微信公众号  Tags:Rust   点击:(20)  评论:(0)  加入收藏
Rust中的数据可视化指南
可视化是数据分析和解释的一个关键方面。虽然Rust主要以其性能和安全特性而闻名,但它也为数据可视化提供了强大的工具。在这个全面的指南中,我们将深入研究Rust中的数据可视化...【详细内容】
2024-03-07  coding到灯火阑珊  微信公众号  Tags:Rust   点击:(31)  评论:(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   点击:(58)  评论:(0)  加入收藏
在 Rust 编程中使用泛型
本文的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以...【详细内容】
2024-01-09  二进制空间安全  微信公众号  Tags:Rust   点击:(89)  评论:(0)  加入收藏
什么是Rust语言 ,特点是什么,跟其它语言对比有什么优势
什么是RustRust是一种系统编程语言,旨在提供高性能和安全性。它是由Mozilla和其开发社区创建的开源语言,设计目标是在C++的应用场景中提供一种现代、可靠和高效的选择。Rust的...【详细内容】
2024-01-09    简易百科  Tags:Rust语言   点击:(206)  评论:(0)  加入收藏
站内最新
站内热门
站内头条