【译文】谷歌 Rust 开发人员的工作效率是 C++ 团队的两倍

与过去两年的 Rust 福音和 C/C++ 困扰相呼应,谷歌报告称 Rust 在生产中大放异彩,其开发人员使用 Rust 的效率是 C++ 的两倍。

在本周于伦敦举行的英国 Rust Nation 大会上,谷歌负责 Android 平台工具和库的工程总监拉尔斯-伯格斯特罗姆(Lars Bergstrom)介绍了这家网络巨头将 Go 或 C++ 编写的项目迁移到 Rust 编程语言的经验。

伯格斯特罗姆说,虽然2016年的Dropbox2018年的Figma提供了用内存安全的Rust语言重写代码的早期案例–对生产率和该语言的质疑已经消退,但对其可靠性和安全性的担忧却一直挥之不去。

“即使在六个月前,这也是一次非常艰难的对话,”他说。”我会去和人们交谈,他们会说:’等等,等等,你有一个 `unsafe`关键字。这意味着我们都应该写 C++,直到宇宙解体。

但伯格斯特龙认为,整个软件开发生态系统对使用非内存安全语言所带来的挑战的认识已经发生了转变。现在,美国和其他国家的政府机构也发出了这样的信息,它们了解软件在关键基础设施中扮演的角色。

原因是大型代码库中的大多数安全漏洞都可以追溯到内存安全漏洞。而 Rust 代码如果实施得当,即使不能完全避免此类问题,也能在很大程度上避免,因此内存安全现在看起来很像一个国家安全问题。

早在2022年9月,微软Azure首席技术官马克-鲁西诺维奇(Mark Russinovich)就认为,那些可能使用C/C++启动的软件项目应该改用Rust。现在,这一建议已经超出了新建项目的范围,而是要求重新修改用非内存安全语言编写的旧代码。

今年早些时候,微软呼吁开发人员帮助将自己的 C# 代码移植到 Rust。互联网安全研究小组(ISRG)的 Prossimo 项目一直在用 Rust 重写关键库(如 NTP、DNS、TLS)的核心开源元素,以保证内存安全

C++ 的创建者 Bjarne Stroustrup 和其他人对此表示反对。针对美国国家安全局 2022 年 11 月发布的一份敦促内存安全的备忘录[PDF],Stroustrup 认为[PDF],只要有适当的工具,C++ 就能与 Rust 的内存安全保证相媲美,”而改用各种新型’安全’语言的成本只是其一小部分”。

今年二月,美国国家网络总监办公室发布了一份关于安全软件的报告[PDF],其中一些公开评论指出,内存安全是更广泛的软件安全挑战的一个子集,不应被视为解决一切问题的答案。

例如,卡内基梅隆大学软件工程研究所强调,所有编程语言都有利弊权衡,编程语言的选择应取决于其是否符合目的。

该软件小组称:”大多数内存安全语言并不优先考虑时序性能,因此不适合对性能和时序有严格要求的用例。

“此外,与任何编程语言一样,开发人员必须学习语言的正确机制,如语法、语义、结构、惯用语和工具。否则,结果可能是以更少的内存相关漏洞换取更多的其他类型的漏洞或缺陷,这是不可取的。”

虽然软件安全不只是内存安全的问题,但 Stroustrup 声称,坚持使用现有的 C++ 基础架构可以实现成本优势,现在却面临着谷歌等 Rust 采用者的反驳。

生产力没有损失–恰恰相反

在巧克力工厂(Chocolate Factory),将被认为内存安全但性能不佳的 Go 代码转换成 Rust 代码,已经显示出了显著的优势。

伯格斯特罗姆说:”当我们把Go语言的系统改写成Rust语言时,我们发现同样规模的团队花费同样多的时间来构建系统。”也就是说,从 Go 迁移到 Rust 不会降低工作效率。有趣的是,我们确实从中看到了一些好处。

“因此,我们发现从 Go 迁移过来的服务的内存使用率降低了……而且随着时间的推移,我们发现那些用 Rust 重写的服务的缺陷率降低了–因此正确性提高了。

Bergstrom 说,更重要的是将 C++ 代码重写成 Rust 的比较。

“他说:”在每一种情况下,我们都看到,用 Rust 构建服务以及维护和更新这些用 Rust 编写的服务所需的工作量都减少了 2 倍以上。

他说:”因此,这对我们来说是一件非常重要的事情,因为 C++ 代码非常昂贵。这些都是大型团队。工作量很大。风险很大。

Bergstrom说,谷歌正在进行类似的迁移,将开发人员从Java迁移到Kotlin,而在Java到Kotlin和C++到Rust这两种情况下,重新培训开发人员所需的时间都差不多。也就是说,在两个月内,大约三分之一的开发人员认为他们使用新语言的效率与使用旧语言的效率相当。根据匿名内部调查,大约四个月后,半数开发人员也有同样的感受。

据 Bergstrom 称,超过一半的开发人员认为 Rust 更容易审核。

“他说:”当我们研究其中的原因时,我们发现了调查中最不可思议的一个问题,也是让我们所有人都大吃一惊的一个问题,那就是人们对他们正在查看的 Rust 代码的正确性的信心–那么与其他语言的代码相比,你觉得你的团队的 Rust 代码的正确性有多大的信心呢?

伯格斯特罗姆说,答案是 85%。

“他说:”这是一个巨大的数字。”我不可能让这个房间里 85% 的人都同意我们喜欢 M&M’s 巧克力。85%的人认为他们的 Rust 代码比他们系统中的其他代码更有可能是正确的。……我一生中经历过不止一次语言调查,但从未见过这样的数字。

本文文字及图片出自 Rust developers at Google are twice as productive as C++ teams

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注