【Golang】Go 语言今年 12 岁,何去何从现状如何?

不说不知道,一说下一跳。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 语言,老项目保留,形成同时维护新老系统,再渐迁的绞杀者模式:

image

在面试中比较常见的是 PHP、C++ 语言,就会在企业中形成了 Go+PHP(新+老系统)的局面,又或是 Go 调 CGO 的运行模式。这也得益于 Go 语言的易用性和一定的胶水特性。

在培训机构层面,各大机构都多少曾经向 Go 语言发起过进攻,但目前 Go 语言大多以中高级人才为主,也就是有过其他语言经验的软件开发从业者为主。因此培训机构的市场行情相对较差。

在社会招聘和岗位层面,狭义上来看,与 2018 年我写的 《带你了解一下Golang的市场行情》基本情况仍保持一致:

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

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

看看数据:TIOBE

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

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

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

总结

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

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

我们一起思考两个问题:

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

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

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

#Go#
全部评论
简洁 没有历史包袱 不过我最讨厌的就是2006-01-02
1 回复 分享
发布于 2021-04-01 01:01
感谢参与【创作者计划2期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz2jsghtlq(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-03-29 14:54

相关推荐

05-21 18:32
已编辑
湖南工学院 Java
这条干货多数是给i人朋友们分享的,知道你们开不了口,可以试试我说的这些方法1.调整心态:接受初期的尴尬刚开始进入一个新环境,双方都属于一个认识对方的过程,尴尬瞬间是难免存在的。首先,你要接受尴尬,允许自己犯错,实习期本身就是来学习的,同事也不会期待你完美无缺。另外,不要太以自我为中心,其实你的尴尬瞬间也许没有人在意,是因你的对自己的关注而放大了不安全感。2.准备一些防止尴尬的话题和工作相关的,可以以请教的方式开启。比如:xx,这个表格我没有看懂,可以给我讲一下吗非工作的话题,可以聊聊中午吃什么、当地的天气如何、通勤远不远之类的。比如:附近有什么好吃的外卖吗?我刚来还不太熟悉3.每日练习,逐渐打...
sweep^0416:内向人,遇到好的领导很重要,我之前一段实习组里全e人就我一个i 刚入职第一周还会带着我聊一下,后面越来越冷落我,实在受不了,每天去到就想亖,mentor还要pua说是我融入不了集体(我真的以为是我的问题)后面我离职了,去了现在这一家公司,我的领导也是e人,但是我融入的很好,组里的人全都很好很好,也不会出现小团体什么的,所以说内向不是不融入环境的根本,就是公司跟带教的问题
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务