8

Go 语言今年 11 岁,何去何从,现状到底如何?

 3 years ago
source link: http://developer.51cto.com/art/202011/631752.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

不说不知道,一说下一跳。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的市场行情》基本情况仍保持一致:

2018 年市场行情分析

以下为 GoCN 所收集的 “2020 中国Go 开发者调查报告” 的地域分布:

2020 中国Go 开发者调查报告

Go 语言的大热门地区依然是:北京、上海、深圳,主体集中在一线城市,机会这里最多。

看看数据:TIOBE

从 TIOBE 的编程语言排行榜来看,整体上 Go 语言的热门程度并不会特别高(与老牌语言相比),但作为一门编程语言在短短 11 年内已有很不错的表现:

TIOBE 排行榜

同时业内时常说 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 的 计划中去:

Milestones

相信 Go2 发布时,肯定也不是 go run xxx 了,估计会变更命令集,以示区分。

总结

11 岁,Go 语言目前在国内已经火起来了,最近接触的一个运营大佬称 Go 语言为 “准备霸占未来语言半壁江山” 的语言。还在观望的读者可以考虑下手,吃一波红利。

但现阶段的 ”成功“ 并不代表后续一定持续强劲,背后离不开所有开发者在社区开源的努力。

TIOBE Index

我们一起思考两个问题:

你为什么喜欢 Go 语言?他有什么短板?

如果 Go 语言想继续占领更多的市场,需要在什么领域发力?

你的答案是什么?在评论区告诉大家吧!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK