整理 | 王強、曉旭
近日,Go 官方發布了 2020 年 Go 開發者調查報告,共計有 9684 位開發者參與了調查。2020 年,Go 語言的使用率上升到了 76%,66% 的受訪者表示 Go 語言對公司業務很重要,92% 的受訪者表示對 Go 語言的使用感受很滿意。
此次調查中,接近一半的受訪者擁有 3-10 年工作經驗,大部分受訪者工作在技術行業中,70%受訪者的主要工作是開發軟件和應用程序,還有 10%受訪負責在設計 IT 系統和架構。在 Go 使用時間方面,48% 的受訪者使用 Go 語言不到兩年時間,不過與 2019 年相比,這個比例下降了。
1
92% 受訪者對 Go 語言感到滿意
針對受訪者對 Go 語言的滿意度,社區也做了調查。本次滿意度調查總共有 5 個檔,分為非常滿意、滿意、一般、不滿意、非常滿意,92% 的受訪者選擇了滿意和非常滿意。
與往年相似,91%的受訪者表示他們更愿意將 Go 用于其下一個新項目;89%的受訪者表示 Go 在其團隊中表現良好。同時,越來越多的受訪者認可 Go 對他們公司的發展至關重要,這個比例從 2019 年的 59%增加到 2020 年的 66%。在 5000+ 人以上公司工作的受訪者對于 Go 語言的認可度比較低(63%),而在規模更小的企業中工作的受訪者更認可 Go 語言(73%)。
我們將滿意度調查做了進一步拆分,做了 14 個細項的調查。根據調查結果,受訪者構建速度、可靠性和并發性滿意度最高,對云服務、調試和模塊領域的滿意度有所增加,其它大多數選項的重要性與之前相比基本沒變。今年新引入的兩個選項 API 和 Web 框架,Web 框架的滿意度低于其他領域(64%),對于大多數當前用戶而言,它的重要性并沒有那么高(只有 28%的受訪者表示它非常重要或至關重要),但對于潛在的 Go 開發人員來說,它可能是重要的缺失功能。
2
Go 語言開發工具和實踐
與往年一樣,絕大多數受訪者表示他們是在 Linux(63%)和 macOS(55%)系統上使用 Go 語言,不過需要注意的是在 Linux 上開發的受訪者正在逐年下降。
在編輯器的選擇方面,受訪者最喜歡的是 VS Code,占據了 41% 的份額,排在第二位的是 GoLand(35%)。
與往年不一樣的是,今年社區做了一項新的統計,讓受訪者針對編輯器的改進優先級進行排序。根據調查結果顯示,目前開發者最想改進的編輯器功能是代碼完成、代碼導航、編輯器性能和重構。
2019 年,社區調查了開發人員都在使用哪些特定的開發技術,結果發現幾乎 90%的受訪者都在使用文本日志來做調試。2020 年,針對這個調查結果,社區做了一個更詳細的調查,希望能夠找到大家為什么喜歡使用文本日志來做調試。43% 的受訪者表示是因為它可以在各種語言中通用,42% 的受訪者表示是他們本身就喜歡使用文本日志。不過,仍有 27%的受訪者不知道如何開始使用 Go 的調試工具,還有 24%的受訪者從未嘗試過使用 Go 的調試工具。
3
Go 語言的具體實踐
根據調查結果顯示:構建 API/RPC 服務(74%)和 CLI(65%)仍然是 Go 的最常見用例。在這個調查中,我們還根據不同的企業規模做了細分,大型企業和中小型企業使用 Go 語言的方式差不多,但是大型企業很少使用 Go 語言來做返回 HTML 的 Web 服務。
開發者都在使用 Go 語言完成哪些工作呢?根據調查結果顯示,在工作場景中,受訪者更多的是將 Go 用于自動化 / 腳本、代理和守護程序以及數據處理等用途,在工作之外,桌面 /GUI 應用、游戲和移動應用等用例更常見。
那么,受訪者對于每個用例的滿意度如何呢?根據調查結果顯示:CLI 的滿意度最高,有 85%的受訪者表示對 Go for CLI 的使用感到滿意。當然,滿意度和使用率不能完全劃等號,比如代理和守護程序的滿意度第二高,但使用率排名第六。
CLI 的目標平臺調查結果顯示,開發人員對 Linux 和 macOS 以及 Linux 的使用率較高,其中 Linux(93%)、macOS(59%),而 Windows 也有差不多三分之一的受訪者在使用。
仔細研究 Go 的數據處理用例可以發現,Kafka 是唯一被廣泛采用的引擎,但大多數受訪者表示他們用 Go 搭配一個定制的數據處理引擎。
受訪者都在哪些領域中使用 Go 呢?根據調查結果顯示,到目前為止,最常見的領域是 Web 開發(68%),而其他常見領域包括數據庫(46%)、DevOps(42%)、網絡編程(41%)和系統編程(40%)。
4
Go 語言模塊的使用情況
2020 年,Go 模塊得到了更普遍的使用,尤其是將模塊用于軟件包管理的比例顯著增加。96%的受訪者表示他們正在使用模塊進行軟件包管理,87%的受訪者表示他們僅使用模塊進行軟件包管理,而這兩項調查在前一年的占比僅為 89% 和 71%。
當然,受訪者對于 Go 語言模塊的滿意度也從 2019 年的 68% 上升到 2020 年的 77%。
5
使用 Go 語言構建云服務
Go 在設計時就考慮了現代的分布式計算需求,那么開發者在云上部署 Go 語言項目的情況如何呢?根據調查結果顯示,三大云計算提供商(亞馬遜云科技、GCP 和 Azure)的使用率都上升了,尤其是 Azure 的使用率從 7%增長到了 12%。而在自有或者公司擁有的服務器的本地部署比例繼續減少。
部署到 AWS 和 Azure 的受訪者中,部署到托管 Kubernetes 平臺的比例有所增加,目前分別為 40%和 54%;Azure 用戶中將 Go 程序部署到 VM 的用戶比例顯著下降,容器使用率從 18%略微增加到 25%。與此同時,GCP(已經有很大比例的受訪者報告他們在使用托管的 Kubernetes)用戶中部署到無服務器的 CloudRun 的比例從 10%增長到 17%。
總體而言,大多數受訪者對在所有三大頭部云提供商上使用 Go 的體驗感到滿意,受訪者對在 AWS(82%滿意)和 GCP(80%)上使用 Go 開發的滿意度相似。Azure 的滿意度較低(滿意度為 58%),受訪者 Azure 的 Go SDK 和 Go 對 Azure 函數的支持提出了建議。
6
為什么我們還沒使用 Go 語言?
根據調查結果顯示·,受訪者認為 Go 語言使用率無法提高的主要原因包括項目正在使用另一種語言開發(54%)、團隊成員更偏好使用另一種語言工作(34%)以及 Go 本身缺乏某項關鍵特性(26%)。
Go 語言到底缺乏哪些關鍵特性呢?根據調查結果顯示,88%的受訪者認為泛型是關鍵的缺失特性,其他關鍵的缺失特性包括更好的錯誤處理(58%)、null 安全性(44%)、函數編程特性(42%)%)和更強大 / 擴展的類型系統(41%)。
調查還發現 18% 的受訪者由于缺少泛型而不會用 Go,其它不使用 Go 的原因中,模塊 / 軟件包管理以及關于學習曲線 / 最佳實踐 / 文檔的問題均占 13%。
https://blog.golang.org/survey2020-results