Google开发工具工程总监:Rust 开发者的生产力是 C++ 的两倍
https://bit.ly/3JASfNe
过去两年,Rust 程式语言风头正劲,而 C / C++ 则略显疲态。Google近日分享了他们将
专案从 Go 和 C++ 程式码迁移至 Rust 的经验,结果令人惊讶:Rust 开发者的效率竟然
可以达到 C++ 团队的两倍。
Google Android平台工具的工程总监 Lars Bergstrom 在伦敦举行的 Rust Nation 英国
峰会上分享了这一消息。
过去几年,业界对于 Rust 的安全性和可靠性一直存在疑虑。Bergstrom 指出,由于担心
“unsafe”这个关键字,许多人认为使用 C++ 更为稳妥。然而,随着人们逐渐意识到非
内存安全语言带来的挑战,以及美国等国家政府将目光投向软件在关键基础设施扮演的
角色,这种观念正悄然发生改变。
Bergstrom 强调,如今美国等国家政府都愈发重视软件在关键基础设施中的作用,而绝大
多数大型程式码库的安全漏洞都源于内存安全问题。由于 Rust 程式码在恰当的使用下
能有效避免此类问题,内存安全俨然成为了国家安全议题之一。
微软:建议新专案使用 Rust 取代 C / C++
微软 Azure 首席技术长 Mark Russinovich 早在 2022 年 9 月就建议新专案使用 Rust
取代 C / C++。如今,这种趋势正从全新项目扩展到老旧程式码的重写。今年早些时候,
微软号召开发人员协助将 C# 程式码移植至 Rust。网络安全研究小组 (ISRG) 的
Prossimo 项目也正致力于用 Rust 重写关键库的核心开源部分 (例如 NTP、DNS、TLS),
以提升内存安全性。
当然,并非所有人都认同这一趋势。C++ 创始人 Bjarne Stroustrup 认为,通过适当的
工具,C++ 也可以实现与 Rust 等内存安全语言相同的保障,且成本更低。美国国家网
路总监办公室发布的软件安全报告也引来了一些评论,指出内存安全只是软件安全挑战
的一部分,不应该被过分夸大。卡内基梅隆大学软件工程研究所强调,每种程式语言都各
有优劣,选择应以适合项目为原则。
然而,Google等 Rust 拥护者的实践案例则反驳了 Stroustrup 关于成本优势的说法。
Bergstrom 表示,将 Go 程式码 (被认为是内存安全但性能较低) 转写成 Rust 的过程
中,Google取得了显著的成效,“迁移过程所需团队规模和时间几乎与 Go 开发相当,并
没有降低效率。更重要的是,内存使用率降低了,漏洞率也随之减少,程式码正确性得
到提升。”
C++ 程式码迁移至 Rust 的效率提升明显
更令人惊讶的是,将 C++ 程式码迁移至 Rust 的效率提升更加明显。
“在所有案例中,用 Rust 建构和维护服务的所需工作量都减少了一倍以上,”
Bergstrom 指出,“这对我们来说意义重大,因为 C++ 程式码的维护成本很高,需要庞
大的团队投入大量精力,并且存在诸多风险。”
Bergstrom 还提到,Google正进行类似的 Java 到 Kotlin 的迁移项目。根据内部匿名调
查,两种情况下开发者掌握新语言并达到原有开发效率所需的时间大致相同。大约三分之
一的开发者在两个月后,以及一半的开发者在四个月后表示他们在新语言中的工作效率与
旧语言相当。
此外,超过一半的开发者认为 Rust 程式码更容易审查。Bergstrom 分享了一个调查中最
令团队惊讶的问题:“人们对自己团队的 Rust 程式码的正确性有多么自信?” 调查结
果显示,有 85% 的开发者给出了肯定的答复。Bergstrom 表示,这是一个非常高的数字
。