首頁 後端開發 Golang 《2021 年 Go 官方開發者調查報告》

《2021 年 Go 官方開發者調查報告》

Aug 07, 2023 pm 04:22 PM
go

每年 Go 官方都會舉辦一次 Go 開發者的調查,去年也不例外。不過調查完,收集了資料後就不見人影了...不然是社區和某時間的朋友們都會問我在哪裡可以看到。

這不,最近官方終於發布了《Go Developer Survey 2021 Results[1]》,我直接翻譯了(有刪減,僅展示重點內容),大家可以看看,了解下Go 的社群行情發展。

Go 開發者調查結果

亮點

  • ##大多數答覆與往年一致。例如,對 Go 的滿意度仍然很高,達到 92%,75% 的受訪者在工作中使用 Go。
  • 今年,我們使用 Go VSCode 外掛程式對一些參與者進行了隨機抽樣,這導致了對調查作出回應的人發生了一些變化。
  • 缺少關鍵程式庫、語言功能和基礎設施是使用 Go 的最常見障礙。 (註:這項調查是在Go1.18 發布之前進行的,其中泛型是報告中最缺的第一大功能)
  • 受訪者希望優先改善調試和依賴性管理。
  • 在使用模組時,最大的挑戰是版本管理、使用私人倉庫和多模組工作流程。 (注意:這項調查是在Go 1.18之前進行的,Go 1.18引入了工作空間,解決了許多這些問題)。
  • 81% 的受訪者對 Go 計畫的長期發展方向有信心。

我們聽了誰的聲音?

我們的人口統計逐年保持穩定(見 2020 年的結果)。與往年一致,Go主要用於科技業。 70% 的受訪者是軟體開發人員,少數是 IT 或 DevOps,76% 的受訪者表示他們在工作中用 Go 編程。

《2021 年 Go 官方開發者調查報告》
《2021 年 Go 官方開發者調查報告》
《2021 年 Go 官方開發者調查報告》
#2021 年的一些新人口統計:

  • 大多數受訪者將他們的組織描述為企業或中小型企業,約四分之一的人將他們的組織描述為新創公司。諮詢公司和公共機構的情況要少得多。
  • 絕大多數受訪者在不到 10 人的團隊中工作。
  • 超過一半(55%)的受訪者每天在工作中使用 Go。受訪者在工作以外使用 Go 的頻率較低。
《2021 年 Go 官方開發者調查報告》
《2021 年 Go 官方開發者調查報告》
《2021 年 Go 官方開發者調查報告》

Go 應用面臨的挑戰

我們問受訪者在過去一年中是否評估過使用其他語言來取代Go。 43% 的受訪者表示,他們曾評估切換到 Go,或在先前沒有既定語言的情況下採用 Go。

這些評估中的 80% 主要是出於商業原因。

《2021 年 Go 官方開發者調查報告》

我們預期 Go 最常見的用例將是評估 Go 的人最常見的預期用途。到目前為止,API/RPC 服務是最常見的用途,但令人驚訝的是,資料處理是第二常見的預期用例。

《2021 年 Go 官方開發者調查報告》

在那些評估了 Go 的受訪者中,有 75% 最終使用了Go。 (當然,由於幾乎所有的調查對像都報告說在使用 Go,我們很可能沒有聽到那些評估過 Go 但決定不使用它的開發者的聲音)。

《2021 年 Go 官方開發者調查報告》

對於那些評估了 Go 但沒有使用 Go 的人,我們接著問他們有哪些挑戰阻礙了他們使用 Go,其中哪一個是主要障礙。

《2021 年 Go 官方開發者調查報告》

我們從這些結果中得到的情況支持了先前的發現,即缺少功能和缺乏生態系統/庫支持是採用Go的最重要的技術障礙。

我們詢問了更多關於受訪者缺少哪些功能或函式庫的細節,發現泛型是最常見的關鍵性缺失功能-- 我們希望在Go1.18 引入泛型之後,這將成為一個不那麼重要的障礙。接下來最常見的缺失功能是與 Go 的類型系統有關的。

我們希望在做出更多改變之前,看看引入泛型會如何影響或解決圍繞 Go 類型系統的潛在需求。

目前,我們將收集更多關於這些需求背景的信息,並可能在未來探索不同的方式來滿足這些需求,例如透過工具、函式庫或對類型系統的修改。

至於缺少的函式庫,對於增加什麼樣的函式庫可以解開最大比例的想採用Go的人的障礙,並沒有明確的共識。這需要進一步的探索。

那麼,當受訪者不選擇 Go 時,他們用什麼來代替呢?

《2021 年 Go 官方開發者調查報告》

Rust、Python 和 Java 是最常見的選擇。

Rust 和 Go 有互補的功能集,所以當 Go 無法滿足專案的功能需求時,Rust 可能是個不錯的選擇。

使用 Python 的主要原因是缺少庫和現有的基礎設施支持,所以 Python 的大型軟體包生態系統可能會使其難以轉換為 Go。

同樣地,使用 Java 的最常見的原因是 Go 的功能缺失,這可能會因為 1.18 版本中引入泛型而得到緩解。

Go 滿意度和優先順序

讓我們看看 Go 在哪些方面做得好,哪些方面可以改進。

與去年一致,92% 的受訪者表示他們在過去一年中對 Go 的使用非常滿意或比較滿意。

《2021 年 Go 官方開發者調查報告》

今年,我們引入了一個新的問題,以探索在特定領域中確定工作優先順序的其他方法。

問題:"假設你有10 個GopherCoins 可以用來改善圍棋工作的以下方面。你會如何分配你的硬幣?"

突出的兩個領域是依賴性管理(使用模組)和診斷錯誤,這些領域我們將在2022 年投入資源。

《2021 年 Go 官方開發者調查報告》

在Go 依賴管理上,最常見的挑戰是:

  • 在多個模組之間工作(19% 的受訪者)。
  • 是關於版本的評論(包括對承諾穩定的 V1 版 API 的恐懼)。

與版本有關,9% 的答案討論了版本管理或更新依賴關係。排在前五名的是關於私有倉庫的挑戰(包括對 GitLab 的認證)和記住不同的 go mod 命令以及理解它們的錯誤訊息。

開發者工具與實務

與往年一樣,絕大部分調查對象表示在Linux(63%)與macOS(55%)系統上使用Go。隨著時間的推移,主要在 Linux 上開發的受訪者的比例似乎略有下降的趨勢。

《2021 年 Go 官方開發者調查報告》

在使用 VSCode 外掛程式進行調查的受訪者中,有 91% 的受訪者在使用 Go 時更喜歡使用 VSCode。

《2021 年 Go 官方開發者調查報告》

目標(部署)平台

#超過90% 的受訪者以Linux 為目標!儘管在macOS 上開發的受訪者比Windows多,但他們更常部署到Windows 而不是macOS。

《2021 年 Go 官方開發者調查報告》

總結

整體回顧我們 2021 年的開發者調查結果 重申一下,一些關鍵的收穫。

  • 我們的大多數同比指標保持穩定,大多數變化是由於我們的樣本變化。
  • 對Go 的滿意程度仍然很高!
  • #四分之三的受訪者在工作中使用Go,許多人每天都在使用Go,所以幫助你完成工作是首要任務。
  • 我們將優先考慮對偵錯和依賴性管理工作流程的改進。
  • 我們將繼續努力,讓 Go 成為各種 Gophers 的包容性社群。

簡單來講,就是欣欣向榮,大部分人對 Go 都比較滿意。

最大矛盾點是泛型和依賴管理。泛型已在 Go1.18 已經釋出,依賴管理持續在改進,也會加大對調試工具的最佳化。

#

以上是《2021 年 Go 官方開發者調查報告》的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入理解 Golang 函數生命週期與變數作用域 深入理解 Golang 函數生命週期與變數作用域 Apr 19, 2024 am 11:42 AM

在Go中,函數生命週期包括定義、載入、連結、初始化、呼叫和返回;變數作用域分為函數級和區塊級,函數內的變數在內部可見,而區塊內的變數僅在區塊內可見。

如何在 Go 中使用正規表示式匹配時間戳記? 如何在 Go 中使用正規表示式匹配時間戳記? Jun 02, 2024 am 09:00 AM

在Go中,可以使用正規表示式比對時間戳記:編譯正規表示式字串,例如用於匹配ISO8601時間戳記的表達式:^\d{4}-\d{2}-\d{2}T \d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ 。使用regexp.MatchString函數檢查字串是否與正規表示式相符。

Go WebSocket 訊息如何發送? Go WebSocket 訊息如何發送? Jun 03, 2024 pm 04:53 PM

在Go中,可以使用gorilla/websocket包發送WebSocket訊息。具體步驟:建立WebSocket連線。傳送文字訊息:呼叫WriteMessage(websocket.TextMessage,[]byte("訊息"))。發送二進位訊息:呼叫WriteMessage(websocket.BinaryMessage,[]byte{1,2,3})。

Golang 與 Go 語言的區別 Golang 與 Go 語言的區別 May 31, 2024 pm 08:10 PM

Go和Go語言是不同的實體,具有不同的特性。 Go(又稱Golang)以其並發性、編譯速度快、記憶體管理和跨平台優點而聞名。 Go語言的缺點包括生態系統不如其他語言豐富、文法更嚴格、缺乏動態類型。

Golang 技術效能優化中如何避免記憶體洩漏? Golang 技術效能優化中如何避免記憶體洩漏? Jun 04, 2024 pm 12:27 PM

記憶體洩漏會導致Go程式記憶體不斷增加,可通過:關閉不再使用的資源,如檔案、網路連線和資料庫連線。使用弱引用防止記憶體洩漏,當物件不再被強引用時將其作為垃圾回收目標。利用go協程,協程棧記憶體會在退出時自動釋放,避免記憶體洩漏。

如何在 IDE 中查看 Golang 函數文件? 如何在 IDE 中查看 Golang 函數文件? Apr 18, 2024 pm 03:06 PM

使用IDE檢視Go函數文件:將遊標停留在函數名稱上。按下熱鍵(GoLand:Ctrl+Q;VSCode:安裝GoExtensionPack後,F1並選擇"Go:ShowDocumentation")。

如何使用 Golang 的錯誤包裝器? 如何使用 Golang 的錯誤包裝器? Jun 03, 2024 pm 04:08 PM

在Golang中,錯誤包裝器允許你在原始錯誤上追加上下文訊息,從而創建新錯誤。這可用於統一不同程式庫或元件拋出的錯誤類型,簡化偵錯和錯誤處理。步驟如下:使用errors.Wrap函數將原有錯誤包裝成新錯誤。新錯誤包含原始錯誤的上下文資訊。使用fmt.Printf輸出包裝後的錯誤,提供更多上下文和可操作性。在處理不同類型的錯誤時,使用errors.Wrap函數統一錯誤類型。

Go 並發函數的單元測試指南 Go 並發函數的單元測試指南 May 03, 2024 am 10:54 AM

對並發函數進行單元測試至關重要,因為這有助於確保其在並發環境中的正確行為。測試並發函數時必須考慮互斥、同步和隔離等基本原理。可以透過模擬、測試競爭條件和驗證結果等方法對並發函數進行單元測試。

See all articles