不說不知道,一說下一跳,Go 語言已經開源 11 周年了,感覺是一路高歌,Release History (polarisxu 整理)如下:
2011 年 3 月 16 日,Go 語言的第一個穩定版本 r56 發布;
2012 年 3 月 28 日,Go 語言的第一個正式版本 Go1 發布,并承諾 1.x 的 兼容性;
2013 年 5 月 13 日,Go1.1 正式版才發布,
2013 年 12 月 1 日,Go1.2 正式發布;
2014 年 6 月 18 日,Go1.3 正式發布;
2014 年 12 月 10 日,Go1.4 正式發布;
2015 年 8 月 19 日,Go1.5 正式發布,該版本實作了自舉,即移除了 C 代碼,使用 Go 開發 Go 語言;
2016 年 2 月 17 日,Go1.6 正式發布;
2016 年 8 月 15 日,Go1.7 正式發布;引入 context 包;
2017 年 2 月 17 日,Go1.8 正式發布;
2017 年 8 月 24 日,Go1.9 正式發布;引入別名;
2018 年 2 月 16 日,Go1.10 正式發布;
2018 年 8 月 25 日,Go1.11 正式發布,開始強勢支持 Go modules;
2019 年 3 月 1 日,Go1.12 正式發布;
2019 年 9 月 3 日,Go1.13 正式發布;
2020 年 2 月 25 日,Go1.14 正式發布;goroutine 支持異步搶占調度;
2020 年 8 月 11 日,Go1.15 正式發布;
2021 年 2 月,預計 Go1.16 正式發布;將包含新的檔案系統介面和支持在構建時的靜態檔案嵌入,聯結器的重寫,Go modules 默認開啟且正式對 Apple Silicon(GOARCH=arm64)Mac 進行支持,
目視現在
現在的 Go 語言在國內已經掀起了一浪又一浪的熱潮,炒的非常火熱,各大平臺極客時間、拉勾教育、掘金小冊、慕課網等紛紛出現了大量 Go 語言相關的付費專欄/視頻,
在現實作業層面,位元組跳動、騰訊向 Go 語言側偏,以及其它各大一二線廠均出現了不少 Go 的崗位,也正預示著當前已經到了一個比較好風口,
在開源專案層面,Kubernetes、Etcd、Prometheus、Docker 等大量的云原生相關組件均以 Go 語言開發,懂一門 Go 語言,排查問題也更方便了,
與企業開發層面,出現了大量其他語言的開發者向 Go 語言轉型,在企業的軟體開發中出現,新專案用 Go 語言,老專案保留,形成同時維護新老系統,再漸遷的絞殺者模式:
在面試中比較常見的是 PHP、C++ 語言,就會在企業中形成了 Go+PHP(新+老系統)的局面,又或是 Go 調 CGO 的運行模式,這也得益于 Go 語言的易用性和一定的膠水特性,
在培訓機構層面,各大機構都多少曾經向 Go 語言發起過進攻,但目前 Go 語言大多以中高級人才為主,也就是有過其他語言經驗的軟體開發從業者為主,因此培訓機構的市場行情相對較差,
在社會招聘和崗位層面,狹義上來看,與 2018 年我寫的 《帶你了解一下Golang的市場行情》基本情況仍保持一致:
以下為 GoCN 所收集的 “2020 中國Go 開發者調查報告” 的地域分布:
Go 語言的大熱門地區依然是:北京、上海、深圳,主體集中在一線城市,機會這里最多,
看看資料:TIOBE
從 TIOBE 的編程語言排行榜來看,整體上 Go 語言的熱門程度并不會特別高(與老牌語言相比),但作為一門編程語言在短短 11 年內已有很不錯的表現:
同時業內時常說 Go 語言要干掉 PHP、C++、Java 等,目前來看短期內不現實,官方也沒有這方面打算,因為合適的場景選擇合適的語言就好了,
TIOBE 提示本月的排名在第 13 名,且最高排名出現在 2020 年 5 月,在第 10 名,近期基本穩定在這個位數附近,至少近年是干不掉老大哥們的,
展望未來
Go1 目前一如既往的遵守了 Go1 兼容性承諾,這給不少正在使用 Go 語言的企業帶來了一注強心針,但給 Go 語言也帶來了一些 “麻煩”,那就是存在破壞性變更的變動無法在 Go1 中實作,
因此為了解決一些 ”問題“,也想達到更好的特性目標,2018 年時釋出了 Go2 的計劃,詳細可參見Go 2, here we come!,其中包含了大量的功能特性,
從目前的基本論調和實際情況來看,可兼容實作的,都會在 Go1 實作,例如大家最期待的功能之一 ”泛型“,預計最早會在 Go1.17 會釋出,樣例:
// Print prints the elements of any slice.
// Print has a type parameter T and has a single (non-type)
// parameter s which is a slice of that type parameter.
func Print[T any](s []T) {
// same as above
}
其在 6 月下旬發布了最新的設計草稿,若對泛型有更進一步需求可關注 design/go2draft-type-parameters,而一些不兼容的修改,若確切評估后無法直接實作的,將會到 Go2 的 計劃中去:
相信 Go2 發布時,肯定也不是 go run xxx 了,估計會變更命令集,以示區分,
總結
11 歲,Go 語言目前在國內已經火起來了,最近接觸的一個運營大佬稱 Go 語言為 “準備霸占未來語言半壁江山” 的語言,還在觀望的讀者可以考慮下手,吃一波紅利,
但現階段的 ”成功“ 并不代表后續一定持續強勁,背后離不開所有開發者在社區開源的努力,
我們一起思考兩個問題:
你為什么喜歡 Go 語言?他有什么短板?
如果 Go 語言想繼續占領更多的市場,需要在什么領域發力?
你的答案是什么?在評論區告訴大家吧!
分享 Go 語言、微服務架構和奇怪的系統設計
???? 長按關注煎魚,在知識的海洋里遨游
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/218546.html
標籤:其他
