作者 | Vitaly Bragilevsky
譯者 | 劉雅夢
策劃 | Tina
Rust 生態系統會定期通過眾多的開發者調查進行探索。仔細閱讀這些調查報告可以深入了解社區和技術的潛力。例如,大多數 Rust 開發人員是最近才開始使用該語言的,這可能是一個信號,表明雇主應該審查他們的工作描述,不要再指望應聘者能有 10 年的 Rust 經驗。
在本文中,我們將分享關于 Rust 社區和生態系統的發現和見解,并將詳細闡述使用 Rust 啟動新項目或從其他語言遷移到 Rust 的獨特性和陷阱。
Rustaceans
有多少 Rust 開發者(或 Rustaceans,他們自稱為 Rustaceans)?盡管統計開發人員并不是一門精確的科學,但我們有一些估算。在《SlashData 23 屆開發者國家狀態報告》(2022 年第三季度)中,SlashData 估算的 Rust 開發者數量為 280 萬,是 JAVA 社區規模的 1/7,不到 C/C++ 社區規模的 1/4。
該調查報告還顯示,這一數字在過去兩年中增加了兩倍,使其成為增長最快的開發者社區之一。那它還有增長的潛力嗎?
根據《Stack Overflow 2022 開發者調查》,在沒有使用過 Rust 的開發人員當中,有 17.6% 的人想要使用它,這使得 Rust 成為開發者社區最受期待的語言。考慮到當前的趨勢以及該技術的年齡尚輕,它的未來看起來還是很光明的。
Rust 社區還很年輕。根據 JetBrAIns 發布的《2022 年開發者生態系統狀態報告》,在將 Rust 作為主要語言的開發者中,有 60% 的人年齡在 30 歲以下。
Rust 團隊的《2021 年 Rust 狀態調查報告》稱,有一半的開發人員在任何一門編程語言中的編程經驗都不超過 10 年。
我們也來看看 Rust 開發人員的背景編程經驗。關于其所使用的其他編程語言,《Rust 狀態調查》確定了以下幾大類(可能交叉)Rust 開發人員群體:
- 41% 的 Rust 開發人員認為自己是動態類型語言(Java、Python/ target=_blank class=infotextkey>Python、php 等)的專家。
- 27% 的人認為自己是具有垃圾收集功能的面向對象的靜態類型語言(Java、C#、Go 等)的專家。
- 20% 的人認為自己是手動內存管理語言(C、C++ 等)的專家。
《Stack Overflow 調查》還報告了大量對使用 Rust 感興趣的 Java、Type、Python、Java 和 C++ 開發人員。有趣的是,C 開發人員并不那么傾向于 Rust,但考慮到最近 linux 關于內核開發的政策發生了變化,以及在其他主要基于 C 的項目(例如 curl)中支持 Rust 的趨勢,這種情況可能會改變。
根據《2022 年開發者生態系統狀態》的 Rust 部分,只有 5% 的 Rust 開發人員使用該語言的時間超過了 3 年。大約一半的 Rust 項目是純粹的 Rust 項目,而其他項目則是與 Java/Type(22%)、Python(15%)、C++(12%)、Go(12%)和 C(11%)以及其他語言共享代碼庫。在 Github 上搜索以 Rust 作為主要語言的流行代碼庫會發現,其中 20% 的代碼庫還包含 Python 代碼,另有 20% 包含 Java。
根據這些數據和我對 Rust 社區的觀察,我猜想它正在增長,這要歸功于大量具有 Python 和 Java 背景的年輕人正在轉向他們的第一門系統編程語言。這類語言很難學習,但會為他們帶來全新的軟件開發體驗。像 C 和 C++ 這樣的老語言對他們來說沒有那么吸引人,但 Rust 有。
技術領域和行業采用
Rust 團隊的調查顯示,服務器端(后端)項目是 Rust 的主要技術領域。云計算基礎設施和應用程序是應用 Rust 的另一個巨大領域,而分布式應用程序也是 Rust 社區的熱門選擇。
Linux 是最具針對性的平臺(占 77%,而 windows 和 macOS 分別占 41% 和 36%)。WebAssembly 占 22%,而嵌入式系統僅占 11%。Rust 在移動應用程序中的使用基本上可以忽略不計。
對于 Rust 項目,CLI 工具比 GUI 應用程序更受歡迎。這可以歸因于生態系統中 CLI 庫的主要供應,而 GUI 庫則不太常見。根據《2022 年開發者生態系統狀態調查》,46% 的 Rust 開發者將其用于 CLI 工具的開發。
有一個技術領域,雖然在展示 Rust 應用程序時非常重要,但僅僅從數字上看可能并不那么容易看出:那就是為其他編程語言提供的工具。我們可以看到,在 Java 和 Python 社區中都使用 Rust 來作為開發高性能的替代方案,以替代當前可用于這些語言的工具。像 deno(一個 Java 和 Type 運行時)和 Ruff(一個 Python linter)這樣的項目就是這種趨勢的很好的例子。這些開源項目表明,Rust 在提供高性能和高開發速度的同時也吸引了大量的貢獻者。使用編程語言來開發工具有著悠久的傳統。Rust 非常有效地打破了這一傳統。
微軟、谷歌、亞馬遜和 Meta 等科技巨頭都推崇并支持 Rust。盡管如此,《2022 年開發者生態系統狀態調查》報告稱,大多數 Rust 開發人員在工作之外使用 Rust。只有 18% 的受訪者在他們正式工作中使用 Rust 來開發軟件。在 Rust 團隊的調查中,只有不到一半的受訪者認為自己使用 Rust 是高效的。在同一調查中,只有不到一半的受訪者每天都在使用 Rust。這些數字表明,其他人仍在學習 Rust,或者偶爾將其作為愛好用于個人項目。
各種網站上的招聘信息并不能讓我們得出這樣的結論:有成千上萬的中小型公司有興趣雇傭 Rust 開發人員。在 Rust 團隊的調查受訪者中,只有 15% 的人表示他們的公司在大量項目中使用 Rust,而另有 18.5% 的人認為它只在少數項目中使用。似乎在公司中引入 Rust 的主要方式是通過從其他語言中重寫非關鍵組件,或者在 Rust 中啟動一個新的非必要項目來衡量其有效性。Rust 社區正在積極討論關于過渡到 Rust 或啟動新項目過程中的成功案例和失敗案例。
開始 Rust 之旅需要公司擁有一些具有長期 Rust 經驗的高級工程師來監督過渡。正如我們已經強調的那樣,社區中缺乏這種類型的開發人員。幸運的是,隨著時間的推移,這個問題會自動得到解決。
《2021 年 Rust 狀態調查》將 Rust 在行業中的使用不足確定為首要問題。然而,這種情況有望改變。
語言和工具
Rust 的一大優點是它兌現了自己的承諾。內存安全允許消除某些類型的錯誤。谷歌將Android/ target=_blank class=infotextkey>安卓系統中關鍵漏洞數量的下降部分歸因于采用 Rust 作為 C++ 的內存安全替代品。Rust 的性能使亞馬遜在能源效率方面具有可持續性。降低 CPU 使用率和有效的內存管理都是 Rust 語言特性的成果。
70% 的在工作中使用 Rust 的開發人員強烈贊同 Rust 的性能特征(如速度、內存占用等)會影響其采用。其中 64% 的人看重 Rust 的安全性和安全特性。大約 80% 的人同意 Rust 可以幫助他們實現自己的目標,并能彌補采用成本。65% 的開發人員認為 Rust 語言和標準庫文檔寫的很棒。這些數字解釋了為什么 Rust 連續七年成為最受歡迎的語言,根據 Stack Overflow 的調查,87% 的開發人員表示他們想繼續使用 Rust。Rustaceans 忠于 Rust,與開發人員本身相比,Rust 更能說明語言及其質量。
38% 的 Rust 團隊調查受訪者一致認為,與其他編程語言相比,Rust 的編程要復雜得多。62% 的人認為它的學習需要付出更多的努力。他們還擔心情況會變得更加復雜。這是調查受訪者對 Rust 未來的第二大擔憂。
所有的調查都一致認為,由 rust-analyzer 提供支持的 Visual Studio Code 是最流行的 Rust 編寫 IDE。大約一半的 Rust 開發人員都在使用它。亞軍是由我們的 IntelliJ Rust 插件提供支持的 JetBrains IDE(CLion、IntelliJ IDEA 和其他),根據調查的不同,份額從 25% 到 40% 不等。Vim/Neovim 是第三大最受歡迎的選擇。三分之二的 Rust 開發人員認為他們的 IDE 體驗很棒或足夠好。
當深入到開發體驗的細節時,調查顯示,問題最多的部分是調試和測評分析。32% 的《2022 年開發者生態系統狀態》調查受訪者提到他們懷念本機調試體驗。29% 的 Rust 團隊調查受訪者認為調試體驗可以更好。超過一半的 Rust 開發人員使用 println 風格的調試作為調試代碼問題的主要方式,其中三分之一的開發人員只使用這種方法。
代碼評測分析體驗更差;超過 80% 的 Rust 開發人員根本不使用性能分析工具。其中一個原因可能是目前可用的工具都很難用,而且它們的發現也很難解釋。側重于分析的教材也多有缺失。開發人員似乎很樂意盲目地相信 Rust 的性能而不進行實際地檢查。隨著 Rust 在行業中的普及,這種態度可能會成為一個關鍵問題。評測分析工具本身和學習資料都需要認真努力地加以改進。
不幸的是,現有的調查還沒有進入 Rust 庫。關于庫生態系統缺失的部分,我們還沒有很好的數據。作為一項年輕的技術,會存在技術完整性的問題,但考慮到 Rust 良好的互操作性,這從未被認為是一個關鍵問題。
結 論
和調查中經常出現的情況一樣,這些結果既支持了一些有趣的結論,也破壞了一些著名的理論。以后一種情況為例,這些結果表明,最初認為 Rust 是 C/C++ 殺手的觀點在今天看來似乎并不相關。我們沒有證據表明在現有的代碼庫中 C/C++ 代碼被大量替換,我們也不希望這種情況在未來發生。為什么呢?因為 C 和 C++ 都可以繼續工作。C++ 正在發展,長期存在的問題正在得以解決。根本沒有必要用 Rust 重寫所有內容。此外,也沒有足夠的勞動力來做這件事。盡管如此,現在用 C 或 C++ 啟動一個新項目仍需要仔細考慮。Rust 也可能是該項目的一個不錯選擇,尤其是當目標平臺是 Linux 并且你關心性能和安全性時。
社區成員的年輕化預示著 Rust 有著光明的未來。它不會消失,而且在該行業的采用率將繼續上升。隨著經驗豐富的 Rust 開發人員數量的增長,我們將看到更多的純 Rust 項目的出現。科技巨頭已經上了 Rust 的船,我們預計中小企業很快就會效仿。
Rust 工具正在不斷發展,世界各地的許多愛好者和公司都在為工具生態系統做出貢獻。
要想用 Rust 高效工作,需要對其概念有深刻的理解,尤其是在所有權、內存管理和并發方法方面。用 Rust 高效編程需要專門的學習和培訓。這就是為什么讓精通其他編程語言的開發人員切換到 Rust 的常見做法可能比切換到其他語言更成問題。從任何語言轉換都需要改變很多習慣。不要指望開發人員自己掌握這些概念并迅速養成新習慣;相反,應該事先對他們進行教育和培訓。
原文鏈接:
https://www.infoq.com/articles/rust-ecosystem-review-2023/