自 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/),這是我們和社區在過去幾個季度中一起努力的成果。
所有調查參與者都是 Google 的專業軟件開發人員(或相關領域)。雖然其中一些人有 Rust 經驗(約 13%),但大多數人來自 C/C++、Python、Java、Go 或 Dart。
根據我們的研究,超過 2/3 的受訪者有信心隻需兩個月或更短時間就可以爲 Rust 代碼庫做出貢獻。此外,三分之一的受訪者隻用了兩個月或更短的時間,使用 Rust 編寫代碼的效率就可以與其他語言一樣高。學習時間延長到四個月,這一數字就可以增加到 50% 以上。有趣的是,無論 Google 内外,這些數字的增長與我們看到的開發人員采用其他語言都一樣。
總的來說,我們沒有看到任何數據表明相對于這些開發人員之前在 Google 使用的任何其他語言使用 Rust 會導緻生産力下降。參加了 Comprehensive Rust 課程的學生給出的反饋也很一緻:第二天和第三天提出的問題表明,經驗豐富的軟件開發人員可以在很短的時間内熟悉 Rust。
傳言 2:Rust 編譯器的速度達不到人們的想象——真的!
就目前的情況來看,開發人員使用 Rust 時遇到的第一大挑戰是構建速度慢,隻有略多于 40% 的受訪者認爲這個速度可以接受。
社區範圍内已經做出了巨大的努力來改進和跟蹤 rustc 的性能。這得到了志願者和幾家公司(包括 Google)的支持,我們很高興看到一些核心的開發人員也加入了這項工作,但很明顯我們需要繼續努力,甚至投入額外的支持。
目前,對于 Google 開發人員來說,Rust 面臨的三大挑戰領域是:
宏
所有權和借用
異步編程
編寫不安全的代碼,處理 C/C++ 互操作是 Google 開發人員常見的問題,但并不是最大的挑戰。Rust 語言設計團隊一直在上述三個領域努力,希望壓平整體的學習曲線,并持續提升,而我們的内部調查結果與這些投資領域非常一緻。
經常有人提到 Rust 的編譯器領提供的錯誤消息非常實用,這在本次調查中也得到了證實。隻有 9% 的受訪者對 Rust 中的診斷和調試信息的質量不滿意。Comprehensive Rust 參與者的反饋也大緻相同:人們對編譯器的消息感到驚訝。起初,人們感到很驚喜,因爲他們習慣于忽略編譯器的錯誤,但習慣之後,就會非常喜歡。
以下示例來自 Google 内部員工爲實踐 Rust 所做的練習——用 Rust 解決 Advent of Code 2021(https://adventofcode.com/2021)。
在第 5 天的練習中,我們需要搜索表中的條目。下面的錯誤信息不僅檢測到結果的模式匹配漏掉了一種情況,而且還提出了修複建議。
在第 11 天的練習中,我們需要檢查某個元素是否在 grid 的範圍内。下面的 Rust 警告檢測到由于類型爲無符号而導緻冗餘比較,并标明了可以删除的代碼。
受訪者表示 Rust 代碼的質量很高:77% 的開發者對 Rust 代碼的質量感到滿意。事實上,當問及他們是否認爲 Rust 代碼的正确性高于用其他語言編寫的代碼時,超過 85% 的受訪者相信他們的 Rust 代碼是正确的。
Rust 代碼不僅正确,而且易于審查。超過一半的受訪者表示 Rust 代碼非常容易審查。作爲一名工程經理,在我看來,從很多方面來說這個結果與編寫代碼的結果同等重要,因爲代碼審查與編寫代碼都是專業軟件工程師日常工作的重要組成部分。
正如 Google 開發人員和其他人所指出的那樣,開發人員的滿意度和生産力與代碼質量以及審查代碼所需的時間息息相關。如果說 Rust 不僅更适合編寫高質量代碼,而且讓代碼運行起來也更容易,那麽對于正在評估和考慮采用這門語言的公司來說,這甚至是超越性能和内存安全性的一系列非常令人信服的理由。
雖然 1000 多名開發人員是一個不小的基數,但我們期待着進一步的采用和未來的調查,其中也包括更多的用例。此外,雖然許多接受調查的開發人員加入了沒有 Rust 經驗的團隊,但這些人中有一些是我們從更廣泛的調查中看到的更興奮的早期采用者。請繼續關注來年更新的調查結果!