【譯】2021 Go 趨勢報告
原文地址:https://blog.jetbrains.com/go/2021/02/03/the-state-of-go/
原文作者:Ekaterina Zharova
本文永久鏈接:https://github.com/gocn/translator/blob/master/2021/w6_the_state_of_Go.md
譯者:朱亞光
在當今最流行的編程語言列表里,Go語言一直是名列前茅。眾所周知 Go 語言現在很火,寫 Go 代碼也很有意思,Go 在社區(qū)也很受用戶歡迎,主要是 Go 語言的速度快,效率高。除了這些眾所周知的優(yōu)點之外,我們期待發(fā)現 Go 更多不為人知的信息。為了發(fā)現更多的事實,我們在目前Go現有信息的基礎上,進行了深入研究。我們邀請了Go語言專家、Goland開發(fā)倡導者 Florin P??an 來發(fā)表他對Go語言發(fā)展趨勢的看法。

在哪兒
約110萬Go開發(fā)者
總的來說,大約有 110萬專業(yè)的 Go 開發(fā)者 使用 Go 作為主要開發(fā)語言。如果我們把那些使用其他語言作為主力開發(fā)語言,但是把Go當作業(yè)余愛好的開發(fā)人員算在內的話,這一數字可能接近270萬。
就全球分布而言,居住在 亞洲 的 Go 開發(fā)者最多,大約有57萬開發(fā)者使用 Go 作為主要開發(fā)語言。
專家分析
這也正是我最期待的使用Go開發(fā)的地方。就Go用戶數量而言,亞洲高居榜首,我認為主要原因是有大量的來自像騰訊、阿里巴巴、華為這些大公司的開發(fā)者。這些公司一般都有很多開發(fā)人員。

具體在哪里
下圖顯示了我們在 2020開發(fā)者生態(tài)調查 中調查的每個國家使用Go作為主要語言的開發(fā)者的分布情況(受訪者最多可以選擇3種主要語言)。中國 的開發(fā)者集中度最高,有16%的中國開發(fā)者在使用Go。
專家分析
看到中國排在榜首,我一點也不驚訝。我本以為俄羅斯會排在第二,美國會高一點,大概在前五位。
中國之所以排在榜首,可能正是因為他們擁有的開發(fā)者數量最多。而且我認識的很多公司,比如 PingCAP、騰訊和華為,都有很多開發(fā)者來支撐和構建他們的內部工具、基礎設施和后端服務,這些服務都和微服務相結合。這似乎是中國排在榜首關鍵原因。
我知道俄羅斯的 Go 社區(qū)非常棒,所以也難怪 Go 在那里很受歡迎。我對日本和烏克蘭很好奇,因為我沒想到他們會這么高,我以為德國和印度會更高些。記得四五年前我在柏林的時候,我認識的每一家創(chuàng)業(yè)公司都在使用 Go 。

行業(yè)洞察
Go 依然保持著開發(fā)者主要使用語言的 前10名,根據2020開發(fā)者生態(tài)調查顯示 Go 的份額約為9%。
專家分析
我認為 Go 會一直增長。人們通常不會把 Go 作為他們開始編程的入門語言,但是會從其他語言遷移過來,例如 PHP Ruby,但據我所知,主要從 C++ C# 遷移過來。
Go 相比 PHP 的優(yōu)勢是類型安全,因為 Go 是一門靜態(tài)類型語言,而 PHP 是門動態(tài)類型語言。這就意味著編譯器在運行時做了大量的工作來確保你寫的代碼能夠編譯并且正常運行。相比于 C++ ,Go 的優(yōu)勢是簡單。在 Go 里面,一切都是那么簡單。
總的來說,Go 的特點就是與生俱來的速度快,無論是寫代碼還是運行時。一般來說,在不做任何特殊優(yōu)化的情況下,采用 Go 語言你就能提高5-10倍的性能,這對公司來說是一個很重要的生產優(yōu)勢。同時 Go 也是一門簡單的語言,很容易上手,很容易替換現有項目中的微服務。
許多 IT 基礎設施工具,如 Kubernetes、Docker和Vault(舉幾個大型的例子)都是用 Go 構建的。因此雖然很多公司是使用 Java ,但是還是會有一個團隊會用 Go,特別是為了來維護這些項目和給這些項目打補丁。這可能是 Go 采用率保持增長的另外一個原因。這種技術在公共技術設施和部署中使用的越多,Go 就增長的越快。我認為接下來幾年會有越來越多的人采用Go,我們將會看到大約有15%-20%的開發(fā)者會使用 Go 。特別是考慮到開發(fā)者生態(tài)調查中問的一個問題,“您打算在今后12個月內采用或遷移到其他語言嗎?”,13%的受訪者回答是Go。

Go開發(fā)的軟件類型
Web 服務 是使用 Go ?最受歡迎的領域,根據 2020開發(fā)者生態(tài)調查 結果顯示,其占有36%份額。
專家分析
為什么是 web 服務,我認為主要原因是構建一個 API 服務非???。他們不需要框架,就可以用 Go 快速啟動和運行一個。
我不認為這張圖在未來會有很大變化,我真心希望看到 web 服務得到更多的分享,因為用 Go 開始一個web 服務確實很簡單。
對于實用小程序,我見過很多類似的,因為 Go 很容易快速寫一個小應用來幫你處理大量的數據,寫一個小的實用程序或需要消耗大量資源的一次性任務。越來越多的人采用Docker 和Kubernetes,就會有越來越多的人使用 Go,僅僅是因為他們都是用 Go 寫的。任何類型的 DevOps 的工作都可以從 Go 中獲益,因為它提供了類型安全和速度。與基礎設施的云端交互很容易(Google、Amazon、Azure等),因為他們都有很好的 SDK 。我認為未來幾年,當泛型到來時,我們還可以期待下 “Libraries / Frameworks” 的一些提升。
系統(tǒng)軟件——我認為隨著越來越多的人開始使用像 Rust 這樣的語言編寫系統(tǒng)軟件,這一數字將會下降。數據庫也是如此。所以這大約6%市場,在未來這可能會變成一個商機。編程工具——我很驚訝它在列表中份額這么高,我非常感興趣去了解一下 Go 有哪些編程工具。

使用Go的頂級行業(yè)
根據 2020開發(fā)者生態(tài)調查 ,Go 程序員主要從事 IT 服務,其次是 金融和金融科技、云技術/云平臺 和其他行業(yè)。
專家分析
金融和金融科技。這是我希望看到的,因為據我所知有相當多的銀行已經開始采用 Go 或者正在廣泛使用 Go 作為他們的基礎設施。例如,來自英國的Monzo使用 Go 構建了他們整個銀行系統(tǒng)。云計算和云平臺也很有意義,因為它們對于使用 Go 編寫的應用來說是很自然的。
移動開發(fā),這是意料之外的。Go 并沒有好的移動開發(fā)歷史。如果有什么不同的話,我希望大家使用 Go 來為移動程序提供網絡服務或者后端服務,但僅此而已。
有幾個行業(yè),我不認為 Go 的使用率會很快增加。比如,任何基于機器學習的東西,因為這仍然是 Python 的地盤。人們正在努力讓機器學習在 Go 中變得受歡迎和變得更好,但是我認為至少要幾年之后才會有一些結果。

Go 工具
包管理
Go Modules 是 Go 開發(fā)者中最受歡迎的包管理工具。根據 2020 開發(fā)者生態(tài)調查 其使用率從 2019 到41%上升到到 2020 的82%。
專家分析
我認為在某種程度上我們可能不得不停止問這個問題,因為 Go Modules已經被設置為標準默認模型,而且Go團隊也想要棄用 GOPATH。到那時,其他的所有的包管理工具都將會被淘汰。

Go 路由
根據 2020 和 2018 的開發(fā)者生態(tài)調查顯示,Gorilla / Mux 和 標準庫 自2018年以來一直是使用最多的 Go 路由。
專家分析
標準庫之所以如此受歡迎,可能是因為每當你去Reddit、Slack或其他地方,人們通常都會建議你堅持使用標準庫,只有在你真正需要的時候才使用其他東西。我使用gorilla/mux,是因為它在標準庫的基礎上有更多的抽象,又不會犧牲太多的性能。也可能是因為它是最接近標準庫的,而且它使得編寫服務端更容易??偟膩碚f,這種分布可能是我希望看到的。

5大web框架
根據 2020 和 2018 的開發(fā)者生態(tài)調查顯示,Gin 的使用量自2018年以來幾乎翻了一倍,而其他 web 框架基本保持穩(wěn)定。
專家分析
Gin 在 web 上如此受歡迎,因為它是一個速度快的框架,而且也得到了很好的推薦。它也是最古老的框架之一。因為會有很多文檔擺在那兒,很多用戶已經在使用它和推薦它。
測試框架 使用 內置測試框架 的比例從 2018 64%下降到 2020 的44%,而使用其他測試框架的比例略有增長。
專家分析
內置的測試框架比例很高是因為 Go 標準庫有一個非常好的開箱即用的測試庫。
內置測試可能會下降主要是因為越來越多的人從其他語言(比如 PHP )轉向這門語言,他們試圖復制自己已有的測試習慣。

討論最多的Go工具和其他語言
Go 經常在 IT 社區(qū)中被討論,Stack Overflow 就是其中之一。我們從其 Q&A 單元獲取數據來找出哪些標簽與“Go”同時出現次數最多。其中有23種工具和兩種語言(MySQL 和 PostgreSQL)。除了這些工具,還有與其他頂級語言的共存??v軸表示標簽出現的總次數,而橫軸表示帶有“Go”的標簽的提及次數。
專家分析
我早料到 JSON 會是個問題,把 Go 的數據結構序列化和反序列化成 JSON確實是很不容易的,這可能就是 JSON會如此醒目的原因。來自其他語言的人通常很難理解struct,除非它們來自C++或C。
基于AWS本身的受歡迎程度,我認為Amazon Web Services會有很多問題?,F在現在為Google App Engine開發(fā) Go 應用程序更簡單了,但以前并不是這樣,所以才會有這么多問題。
總而言之,Go社區(qū)是一個非常有趣且具有包容性的社區(qū),你可以成為其中的一員。從不排斥新人,鼓勵他們提出問題,探索語言。在一般的主題方面,泛型以及某些語言改進、編譯器改進等都是經常討論的話題。
尤其是泛型,因為它是該語言最需要的特性之一,并且有大量的工作負載將受益于該特性。

