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