InfoQ未来 5 年将是 Go 语言的天下 | 极客大学


不吹不捧 , 也不想挑起语言争论地说 , 如果你是一名后端工程师 , 那我建议你一定要深入学习下 Go 语言 。 因为 , 在未来几年内 , Go 语言的市场份额会越来越大 , 它的前途无可限量 。
为什么能有这样的判断呢?我就谈谈我的两个观察 。
第一 , 现在有个特别流行的词就是云原生 , 如果你在小公司 , 可能听说得比较少 。 但大公司内部 , 这东西基本已经成为口头禅了 。 而云原生体系的那些开源项目 , 大部分都是用 Go 语言编写的 , 比如我们熟知的 Docker、Kubernetes、Istio 。
别的不说 , 就说 Kubernetes , 现在他已经成为了大型分布式系统的标配 。 如果你说你想掌握 Kubernetes 的原理 , 那连 Go 语言都看不懂 , 这个有点说不过吧?
第二 , Go 语言的优势明显 。 它出身高贵 , 背后是 Google 这样的顶级公司 。 另外 , 相比于 Java 这样的老牌语言 , 它不仅简单 , 上手快 , 而且在并行和异步编程几乎无痛点 。
像 C、C++、Java、Python 和 JavaScript 这些语言的并发和异步的编程方式控制起来就比较复杂了 , 并且容易出错 , 但 Go 语言却用非常优雅和流畅的方式解决了这个问题(Goroutine 和 Channel) 。
知名技术专家左耳朵耗子曾经说过 , 他认为 Go 语言在未来会吞食一些用 C、C++、Java 写的中间层的项目 , 比如消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等 。
这话一点都不假 , 你随便打开招聘网站就能看到 , 像阿里云、字节跳动、腾讯、百度、蚂蚁金服这样的一线互联网公司 , 他们都在大规模招聘有 Go 语言经验的工程师 , 并且薪资也不低 , 因为他们做的事情都很底层 , 比如可能是公司的基础平台、基础设施 。
如果你是一名 PHP , 或者 .NET 工程师 , 那我建议你从今天开始 , 果断利用业务时间学习下 Go 语言 , 跟上时代的潮流走 。 如果你是一名 Java 工程师 , 但在 Java 的能力提升方面遇到了瓶颈 , 那你可以考虑下 Go 语言 。
因为 Go 的市场刚刚起来 , 人才还没有那么多 , 竞争也没有 Java 那样激烈 。 前段时间 , 我就和一个 CTO 聊 , 他说现在市场上 Go 的人特别难找 , 如果候选人能够有 Go 语言的项目经验 , 或者熟悉 Go 语言 , 那面试肯定是大大加分项 。 这其实也是错位竞争 。
在这里 , 我也不害臊地给你推荐我和极客时间合作的 Go 进阶训练营 , 这个课程的设计对标字节跳动 2-2 级职位模型 , 目标是让你在 3 个月时间内 , 快速掌握、吃透 Go 语言 , 并胜任一线互联网公司的高级或者资深 Golang 工程师等职位 。
1我是谁? 你好 , 我是毛剑 , 目前在一家大型互联网视频内容公司担任资深总监和技术专家的职位 。
在这里 , 我参与了大型巨石架构到微服务的完整转型 , 我们使用 Go 语言作为主要的开发语言 , 构建了微服务的框架 , 同时 , 围绕分布式服务的可用性和数据一致性进行了大量的设计 , 并结合开源生态补齐了 Go 在微服务可视化上的功能 。 在演进架构的同时 , 我们还使用 Go 语言开发了配套的中间件 , 比如:消息队列、缓存代理、对象存储等等 。
在 DevOps 领域 , 我们也使用 Go 语言做了大量的实践 , 结合 GitLab、Bazel、Kubernetes Prow 实现了完整的 CI/CD Pipeline , 包括分布式增量编译、可靠的持续构建和发布系统 , 以及在线运行时平台(PaaS)等系统 。
这十多年来 , 我主要专注于服务端研发以及高性能、高可用的系统架构设计这些领域 , 对 Go 语言算得上是相当熟悉 , 我开源的行业内比较有影响力的 Go 项目有:goim 分布式 IM 长连接广播服务、bfs 分布式小文件存储以及 Kratos Go 微服务框架 。
我是忠实的 Go 语言粉丝 , 也是一名 Go 语言老手 , 我曾在 GitHub 上开源了几个基于 Go 语言的项目 , 如果你想了解我的技术实力 , 可以点进去看看 , 毕竟 , Talk is cheap , Show you the code 。 我的 GitHub 主页:https://github.com/Terry-Mao