天天看點

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

作者:緣來遇你421

自 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

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/),這是我們和社群在過去幾個季度中一起努力的成果。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

傳言 1:Rust 的學習需要 6 個多月——假的!

所有調查參與者都是 Google 的專業軟體開發人員(或相關領域)。雖然其中一些人有 Rust 經驗(約 13%),但大多數人來自 C/C++、Python、Java、Go 或 Dart。

根據我們的研究,超過 2/3 的受訪者有信心隻需兩個月或更短時間就可以為 Rust 代碼庫做出貢獻。此外,三分之一的受訪者隻用了兩個月或更短的時間,使用 Rust 編寫代碼的效率就可以與其他語言一樣高。學習時間延長到四個月,這一數字就可以增加到 50% 以上。有趣的是,無論 Google 内外,這些數字的增長與我們看到的開發人員采用其他語言都一樣。

總的來說,我們沒有看到任何資料表明相對于這些開發人員之前在 Google 使用的任何其他語言使用 Rust 會導緻生産力下降。參加了 Comprehensive Rust 課程的學生給出的回報也很一緻:第二天和第三天提出的問題表明,經驗豐富的軟體開發人員可以在很短的時間内熟悉 Rust。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)
難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

傳言 2:Rust 編譯器的速度達不到人們的想象——真的!

就目前的情況來看,開發人員使用 Rust 時遇到的第一大挑戰是建構速度慢,隻有略多于 40% 的受訪者認為這個速度可以接受。

社群範圍内已經做出了巨大的努力來改進和跟蹤 rustc 的性能。這得到了志願者和幾家公司(包括 Google)的支援,我們很高興看到一些核心的開發人員也加入了這項工作,但很明顯我們需要繼續努力,甚至投入額外的支援。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

傳言 3:不安全的代碼和互操作始終是最大的挑戰——假的!

目前,對于 Google 開發人員來說,Rust 面臨的三大挑戰領域是:

  • 所有權和借用
  • 異步程式設計

編寫不安全的代碼,處理 C/C++ 互操作是 Google 開發人員常見的問題,但并不是最大的挑戰。Rust 語言設計團隊一直在上述三個領域努力,希望壓平整體的學習曲線,并持續提升,而我們的内部調查結果與這些投資領域非常一緻。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

傳言 4:Rust 的編譯器錯誤消息品質非常高 ——真的!

經常有人提到 Rust 的編譯器領提供的錯誤消息非常實用,這在本次調查中也得到了證明。隻有 9% 的受訪者對 Rust 中的診斷和調試資訊的品質不滿意。Comprehensive Rust 參與者的回報也大緻相同:人們對編譯器的消息感到驚訝。起初,人們感到很驚喜,因為他們習慣于忽略編譯器的錯誤,但習慣之後,就會非常喜歡。

以下示例來自 Google 内部員工為實踐 Rust 所做的練習——用 Rust 解決 Advent of Code 2021(https://adventofcode.com/2021)。

在第 5 天的練習中,我們需要搜尋表中的條目。下面的錯誤資訊不僅檢測到結果的模式比對漏掉了一種情況,而且還提出了修複建議。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

在第 11 天的練習中,我們需要檢查某個元素是否在 grid 的範圍内。下面的 Rust 警告檢測到由于類型為無符号而導緻備援比較,并标明了可以删除的代碼。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)
難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

傳言 5:Rust 代碼品質很高——真的!

受訪者表示 Rust 代碼的品質很高:77% 的開發者對 Rust 代碼的品質感到滿意。事實上,當問及他們是否認為 Rust 代碼的正确性高于用其他語言編寫的代碼時,超過 85% 的受訪者相信他們的 Rust 代碼是正确的。

Rust 代碼不僅正确,而且易于審查。超過一半的受訪者表示 Rust 代碼非常容易審查。作為一名工程經理,在我看來,從很多方面來說這個結果與編寫代碼的結果同等重要,因為代碼審查與編寫代碼都是專業軟體工程師日常工作的重要組成部分。

正如 Google 開發人員和其他人所指出的那樣,開發人員的滿意度和生産力與代碼品質以及審查代碼所需的時間息息相關。如果說 Rust 不僅更适合編寫高品質代碼,而且讓代碼運作起來也更容易,那麼對于正在評估和考慮采用這門語言的公司來說,這甚至是超越性能和記憶體安全性的一系列非常令人信服的理由。

難學、速度慢……有關 Rust 的五大傳言,谷歌下場澄清!(轉)

展望未來

雖然 1000 多名開發人員是一個不小的基數,但我們期待着進一步的采用和未來的調查,其中也包括更多的用例。此外,雖然許多接受調查的開發人員加入了沒有 Rust 經驗的團隊,但這些人中有一些是我們從更廣泛的調查中看到的更興奮的早期采用者。請繼續關注來年更新的調查結果!