自 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 经验的团队,但这些人中有一些是我们从更广泛的调查中看到的更兴奋的早期采用者。请继续关注来年更新的调查结果!