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

开发 后端
在现实工作层面,字节跳动、腾讯向 Go 语言侧偏,以及其它各大一二线厂均出现了不少 Go 的岗位,也正预示着当前已经到了一个比较好风口。

[[352001]]

本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。   

不说不知道,一说下一跳。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 会释出,样例:

  1. // Print prints the elements of any slice. 
  2. // Print has a type parameter T and has a single (non-type) 
  3. // parameter s which is a slice of that type parameter. 
  4. func Print[T any](s []T) { 
  5.  // same as above 

其在 6 月下旬发布了最新的设计草稿,若对泛型有更进一步需求可关注 design/go2draft-type-parameters,而一些不兼容的修改,若确切评估后无法直接实现的,将会到 Go2 的 计划中去:

Milestones

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

总结

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

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

TIOBE Index

我们一起思考两个问题:

  • 你为什么喜欢 Go 语言?他有什么短板?
  • 如果 Go 语言想继续占领更多的市场,需要在什么领域发力?

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

 

 

责任编辑:武晓燕 来源: 脑子进煎鱼了
相关推荐

2014-01-23 09:45:27

程序员

2016-12-26 14:55:06

人工智能现状

2019-03-18 08:23:56

码农Java工程师

2021-02-20 17:16:39

Go语言Go开发者编程

2015-09-16 17:30:20

安装Go语言Linux

2023-05-19 08:01:57

Go 语言map

2020-03-17 10:24:12

Go语言停止写障碍

2018-03-12 22:13:46

GO语言编程软件

2020-02-21 17:07:19

设计师裁员职业

2023-04-03 08:02:16

切片扩容GO

2019-01-02 13:11:53

GO语言缓存

2017-11-16 15:25:54

Go语言算法代码

2021-02-23 08:58:13

Go语言变量

2023-10-11 06:59:48

Go语言切片

2014-11-10 10:52:33

Go语言

2023-11-26 17:15:00

开发者AI

2020-10-21 15:24:42

阿里AI翻译

2023-04-18 08:27:16

日志级别日志包

2012-08-20 09:16:15

Go语言

2013-07-22 16:51:21

山寨app开发者
点赞
收藏

51CTO技术栈公众号