2021 Go 趨勢報告

astaxie發表於2021-02-08

2021 Go 趨勢報告

Ekaterina Zharova

2021.2.3

在當今最流行的程式語言列表裡,Go 語言一直是名列前茅。眾所周知 Go 語言現在很火,寫 Go 程式碼也很有意思,Go 在社群也很受使用者歡迎,主要是 Go 語言的速度塊,效率高。除了這些眾所周知的優點之外,我們期待發現 Go 更多不為人知的資訊。為了發現更多的事實,我們在目前 Go 現有資訊的基礎上,進行了深入研究。我們邀請了 Go 語言專家、Goland開發倡導者 Florin Pățan 來發表他對 Go 語言發展趨勢的看法。

在哪兒

約 110 萬 Go 開發者

總的來說,大約有 110 萬專業的 Go 開發者 使用 Go 作為主要開發語言。 如果我們把那些使用其他語言作為主力開發語言,但是把 Go 當作業餘愛好的開發人員算在內的話,這一數字可能接近270 萬

就全球分佈而言,居住在 亞洲 的 Go 開發者最多,大約有 57 萬開發者使用 Go 作為主要開發語言。

專家分析

這也正是我最期待的使用 Go 開發的地方。就 Go 使用者數量而言,亞洲高居榜首,我認為主要原因是有大量的來自像騰訊、阿里巴巴、華為這些大公司的開發者。這些公司一般都有很多開發人員。

具體在哪裡

下圖顯示了我們在 2020 開發者生態調查 中調查的每個國家使用 Go 作為主要語言的開發者的分佈情況(受訪者最多可以選擇 3 種主要語言)。中國 的開發者集中度最高,有 16% 的中國開發者在使用 Go。

專家分析

看到中國排在榜首,我一點也不驚訝。我本以為俄羅斯會排在第二,美國會高一點,大概在前五位。

中國之所以排在榜首,可能正是因為他們擁有的開發者數量最多。而且我認識的很多公司,比如 PingCAP、騰訊和華為,都有很多開發者來支撐和構建他們的內部工具、基礎設施和後端服務,這些服務都和微服務相結合。這似乎是中國排在榜首關鍵原因。

我知道俄羅斯的 Go 社群非常棒,所以也難怪 Go 在那裡很受歡迎。我對日本和烏克蘭很好奇,因為我沒想到他們會這麼高,我以為德國和印度會更高些。記得四五年前我在柏林的時候,我認識的每一家創業公司都在使用 Go 。

行業洞察

Go 依然保持著開發者主要使用語言的 前 10 名,根據2020 開發者生態調查顯示 Go 的份額約為 9%。

專家分析

我認為 Go 會一直增長。人們通常不會把 Go 作為他們開始程式設計的入門語言,但是會從其他語言遷移過來,例如 PHP Ruby,但據我所知,主要從 C++ C# 遷移過來。

Go 相比 PHP 的優勢是型別安全,因為 Go 是一門靜態型別語言,而 PHP 是門動態型別語言。這就意味著編譯器在執行時做了大量的工作來確保你寫的程式碼能夠編譯並且正常執行。相比於 C++ ,Go 的優勢是簡單。在 Go 裡面,一切都是那麼簡單。

總的來說,Go 的特點就是與生俱來的速度快,無論是寫程式碼還是執行時。一般來說,在不做任何特殊優化的情況下,採用 Go 語言你就能提高 5-10 倍的效能,這對公司來說是一個很重要的生產優勢。同時 Go 也是一門簡單的語言,很容易上手,很容易替換現有專案中的微服務。

許多 IT 基礎設施工具,如 KubernetesDockerVault(舉幾個大型的例子)都是用 Go 構建的。因此雖然很多公司是使用 Java ,但是還是會有一個團隊會用 Go,特別是為了來維護這些專案和給這些專案打補丁。這可能是 Go 採用率保持增長的另外一個原因。 這種技術在公共技術設施和部署中使用的越多,Go 就增長的越快。我認為接下來幾年會有越來越多的人採用 Go,我們將會看到大約有 15%-20% 的開發者會使用 Go 。特別是考慮到開發者生態調查中問的一個問題,“您打算在今後 12 個月內採用或遷移到其他語言嗎?”,13% 的受訪者回答是 Go。

Go 開發的軟體型別

Web 服務 是使用 Go 最受歡迎的領域,根據 2020 開發者生態調查 結果顯示,其佔有 36% 份額。

專家分析

為什麼是 web 服務,我認為主要原因是構建一個 API 服務非常快。他們不需要框架,就可以用 Go 快速啟動和執行一個。

我不認為這張圖在未來會有很大變化,我真心希望看到 web 服務得到更多的分享,因為用 Go 開始一個 web 服務確實很簡單。

對於實用小程式,我見過很多類似的,因為 Go 很容易快速寫一個小應用來幫你處理大量的資料,寫一個小的實用程式或需要消耗大量資源的一次性任務。越來越多的人採用DockerKubernetes,就會有越來越多的人使用 Go,僅僅是因為他們都是用 Go 寫的。任何型別的 DevOps 的工作都可以從 Go 中獲益,因為它提供了型別安全和速度。與基礎設施的雲端互動很容易(Google、Amazon、Azure 等),因為他們都有很好的 SDK 。我認為未來幾年,當泛型到來時,我們還可以期待下 “Libraries / Frameworks” 的一些提升。

系統軟體——我認為隨著越來越多的人開始使用像 Rust 這樣的語言編寫系統軟體,這一數字將會下降。資料庫也是如此。所以這大約 6% 市場,在未來這可能會變成一個商機。程式設計工具——我很驚訝它在列表中份額這麼高,我非常感興趣去了解一下 Go 有哪些程式設計工具。

使用 Go 的頂級行業

根據 2020 開發者生態調查 ,Go 程式設計師主要從事 IT 服務,其次是 金融和金融科技雲技術/雲平臺 和其他行業。

專家分析

金融和金融科技。這是我希望看到的,因為據我所知有相當多的銀行已經開始採用 Go 或者正在廣泛使用 Go 作為他們的基礎設施。例如,來自英國的 Monzo 使用 Go 構建了他們整個銀行系統。雲端計算和雲平臺也很有意義,因為它們對於使用 Go 編寫的應用來說是很自然的。

移動開發,這是意料之外的。Go 並沒有好的移動開發歷史。如果有什麼不同的話,我希望大家使用 Go 來為移動程式提供網路服務或者後端服務,但僅此而已。

有幾個行業,我不認為 Go 的使用率會很快增加。比如,任何基於機器學習的東西,因為這仍然是 Python 的地盤。人們正在努力讓機器學習在 Go 中變得受歡迎和變得更好,但是我認為至少要幾年之後才會有一些結果。

Go 工具

包管理

Go Modules 是 Go 開發者中最受歡迎的包管理工具。根據 2020 開發者生態調查 其使用率從 2019 到 41% 上升到到 2020 的 82%。

專家分析

我認為在某種程度上我們可能不得不停止問這個問題,因為 Go Modules 已經被設定為標準預設模型,而且 Go 團隊也想要棄用 GOPATH。到那時,其他的所有的包管理工具都將會被淘汰。

Go 路由

根據 20202018 的開發者生態調查顯示,Gorilla / Mux標準庫 自 2018 年以來一直是使用最多的 Go 路由。

專家分析

標準庫之所以如此受歡迎,可能是因為每當你去 Reddit、Slack 或其他地方,人們通常都會建議你堅持使用標準庫,只有在你真正需要的時候才使用其他東西。我使用gorilla/mux,是因為它在標準庫的基礎上有更多的抽象,又不會犧牲太多的效能。也可能是因為它是最接近標準庫的,而且它使得編寫服務端更容易。總的來說,這種分佈可能是我希望看到的。

5 大 web 框架

根據 20202018 的開發者生態調查顯示,Gin 的使用量自 2018 年以來幾乎翻了一倍,而其他 web 框架基本保持穩定。

專家分析

Gin 在 web 上如此受歡迎,因為它是一個速度快的框架,而且也得到了很好的推薦。它也是最古老的框架之一。因為會有很多文件擺在那兒,很多使用者已經在使用它和推薦它。

測試框架

使用 內建測試框架 的比例從 2018 64% 下降到 2020 的 44%,而使用其他測試框架的比例略有增長。

專家分析

內建的測試框架比例很高是因為 Go 標準庫有一個非常好的開箱即用的測試庫。

內建測試可能會下降主要是因為越來越多的人從其他語言 (比如 PHP ) 轉向這門語言,他們試圖複製自己已有的測試習慣。

討論最多的 Go 工具和其他語言

Go 經常在 IT 社群中被討論,Stack Overflow 就是其中之一。我們從其 Q&A 單元獲取資料來找出哪些標籤與 “Go” 同時出現次數最多。其中有 23 種工具和兩種語言(MySQLPostgreSQL)。除了這些工具,還有與其他頂級語言的共存。縱軸表示標籤出現的總次數,而橫軸表示帶有 “Go” 的標籤的提及次數。

專家分析

我早料到JSON 會是個問題,把 Go 的資料結構序列化和反序列化成JSON確實是很不容易的,這可能就是 JSON會如此醒目的原因。來自其他語言的人通常很難理解struct,除非它們來自 C++ 或 C。

基於AWS本身的受歡迎程度,我認為Amazon Web Services會有很多問題。現在現在為Google App Engine開發 Go 應用程式更簡單了,但以前並不是這樣,所以才會有這麼多問題。

總而言之,Go 社群是一個非常有趣且具有包容性的社群,你可以成為其中的一員。從不排斥新人,鼓勵他們提出問題,探索語言。在一般的主題方面,泛型以及某些語言改進、編譯器改進等都是經常討論的話題。

尤其是泛型,因為它是該語言最需要的特性之一,並且有大量的工作負載將受益於該特性。


更多原創文章乾貨分享,請關注公眾號
  • 2021 Go 趨勢報告
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章