調查報告亮點
- 大多數回覆與往年一致。例如,開發者對 Go 的滿意度仍然很高,92% 受訪者表示滿意,75% 的受訪者在工作中使用 Go。
- 今年的部分受訪者來自於調查團隊對 Go VS Code 外掛使用者的隨機抽樣,因此調查的回覆跟以往相比也有所不一樣。
- 缺少關鍵庫、語言特性和基礎設施是使用 Go 最常見的障礙。(此調查是在 Go 1.18 釋出之前進行的,泛型是報告中最多人反饋的第一大缺失特性)。
- 受訪者希望優先考慮對除錯和依賴管理的改進。
- 使用模組時的最大挑戰涉及版本控制、使用私有倉庫和多模組工作流。
- 81% 的受訪者對 Go 專案的長期發展方向充滿信心。
Go 使用情況
和前幾年的調查結果一樣,Go 主要在科技行業被廣泛使用。70% 的受訪者是軟體開發者,少數從事 IT 或 DevOps 工作。76% 的受訪者表示他們在工作中使用 Go 進行程式設計。72% 的受訪者表示他們使用 Go 開發 API/RPC 服務,其他的主要用途是 Web 服務、庫或框架、自動化部署和資料分析等。少數開發者還使用 Go 開發桌面應用、遊戲、AI 和移動 APP。
一些新的統計結果:
- 大多數受訪者將他們的組織描述為企業或中小型企業,大約四分之一的受訪者將他們的組織描述為初創公司。諮詢公司和公共機構的佔比更少。
- 絕大多數受訪者在少於 10 人的團隊中工作。
- 超過一半 (55%) 的受訪者每天在工作中使用 Go,受訪者在工作之外使用 Go 的頻率較低。
開發者使用 Go 遇到的阻礙
受訪者被問及曾評估過 Go 但最終沒有選擇使用它,其中主要遇到的阻礙包括:缺少所需的語言特性、其他的程式語言對現有的工具和基礎設施提供了更好的支援、Go 生態缺少所需的庫、團隊沒有使用 Go 的經驗、Go 工具不過豐富、Go 效能未能滿足需求、招聘 Go 開發者困難…… 等。
由此可見,語言特性的缺失和生態不夠豐富勸退了不少本想 “入坑” 的開發者。其中「泛型」是他們最希望新增的特性(調查進行的時候尚未釋出提供了泛型的 Go 1.18)。除了泛型,開發者對於型別系統相關的特性也具有十分強烈的需求你。Go 團隊表示,他們將收集更多關於這些需求的背景資訊,並可能在未來探索不同的方式來滿足這些需求,例如通過工具、庫或對型別系統的修改。
那麼這些相中了 Go,但最後又不採用它的受訪者選了什麼語言?下面的圖表給出了答案:
Rust、Python 和 Java 是最常見的選擇。對此 Go 團隊認為,Rust 和 Go 有互補的特性,所以當 Go 不能滿足專案的需求時,Rust 會是一個不錯的選擇。使用 Python 的主要原因是 Go 缺少庫和現有的基礎設施支援,因此 Python 的大型包生態系統可能會導致他們難以切換到 Go。同樣,使用 Java 的常見原因是 Go 缺少一些功能,不過這應該會通過在 1.18 版本中引入泛型而得到緩解。
開發者對 Go 的滿意度
跟去年一樣,92% 的受訪者表示他們在過去一年中對使用 Go 感到非常滿意或比較滿意。
此外,越來越多的開發者表示,Go 對於他們公司的成功提供了極大的幫助。
開發者對 Go 的訴求
依賴管理和錯誤處理是 Go 開發者需求最大的兩項功能。
開發者工具和實踐
與往年一樣,絕大多數受訪者表示在 Linux (63%) 和 macOS (55%) 系統上使用 Go。不過隨著時間的推移,主力使用 Linux 開發的 Go 受訪者比例似乎略有下降。
目標平臺方面,超過 90% 的受訪者選擇了 Linux。儘管在 macOS 上開發的受訪者多於 Windows,但他們大多數選擇部署到 Windows 而不是 macOS。
最後
Go 開發者 2021 調查報告的部分關鍵要點:
- 此次調查的樣本有所變化,但大部分同比指標保持穩定,大部分變化。
- 開發者對 Go 的滿意度仍然很高
- 四分之三的受訪者在工作中使用 Go,許多人每天都在使用 Go
- Go 團隊將優先改進除錯和依賴管理的工作流程
完整報告檢視:https://go.dev/blog/survey2021-results