为什么是 Go 语言

1 前言

Go 语言是在 2009 年底开源的,如今已有10载。在2019年04月的 TIOBE 语言排名 (TIOBE Index for April 2019,https://www.tiobe.com/tiobe-index/)中,位于第18位,较2018年04月的第19名上升一名。

一些朋友问什么的是Go语言,Go语言该不该学,有什么优势,发展如何等这些问题,主要是之前做 PHP 和 Python 培训时的一些学员。我给的答案是肯定的,下面就集中阐述一下为什么是 Go 语言。

2 语言定位,编码效率和执行效率的平衡点

网上一个陈述说 Go 语言是“C 语言的理念加 Python 的姿态”,个人非常认同这个观点。从我的角度看,就是 Go 语言找到了一个开发效率和执行效率的最佳平衡点。这点非常类似于 Java,就是将效率和开发很好的结合在一起了。

在我熟悉(了解)的语言中,C、C++ 是执行效率最高的语言了,而 Python、PHP、JavaScript 执行效率就相对低些。但是从开发实现业务逻辑的角度,PHP、Python、JavaScript 确实很快的,他们内置了大量的常见数据结构,函数方法。做一个坐标图表示就是:

平衡

C(C++) 语言的特征是要尽量保持语言的小巧,不屏蔽底层且底层友好,关注语言的执行效率和性能。而 Python(PHP,JavaScript) 的特征是用尽量少的代码完成尽量多的事,尽量不要关注底层 OS,程序员的精力尽量在业务逻辑实现上。Go语言的就是尽量平衡。

3 简约的异步并发处理方案,Goroutine 和 Channel

Go 语言语法第一个惊艳到我的地方,就是关于并发的处理机制。经典的并发处理机制就是多线程,程序中需要去创建新线程,并考虑进程间通讯问题,还要考虑进程占用资源,锁等复杂问题。而在 Go 中,仅仅需要 Goroutine 和 Channel 即可完成,语法简洁,底层封装就意味着出错的可能性降低。此处盗用一副图片(来自:Why should you learn Go?),来说明并发编程的 Go 的优势:

并发优势

其中横轴是编码的简洁和直观性,而纵轴是并发效率。可见 Go 在并发处理上的优势多明显。

PS:如果图片内容是真实的,有点夸张哈。因为不了解图中的全部语言

4 简单的语法,快速的入门

若您有其他语言基础,那么学习 Go 简直不要太容易。基础语法,我个人是花费1周左右学会的(有没有点吹的成分)。因此如果您想了解和学习,你绝对是有精力的。

5 Google 后台 和 杀手级应用 Docker

除了语言本身的特征外,Go 语言有 Google 这个世界一流的技术公司在后面支持,同时拥有 Docker 这个几乎火到爆的容器技术应用。在目前在云计算应用中,Go 语言和 Docker 已经成为新一代的云计算技术,发展态势非常迅猛。有这两个大靠山,Go 语言的前景还是比较光明的。

6 应用领域

道理上说,Go 语言属于全功能语言,目前除了 JS 在浏览器端能做的事情 Go 不能处理外,其他事情 Go 理论上都能处理。但是从其语法特征上看,应该更侧重于中间间的开发,不会太底层也不会太业务,典型的功能例如:消息中间件、服务发现、服务代理、控制系统、日志收集等功能。目前也用 Go 充当了 Web 开发的后台,基于 Beego 实现的。

以上几个特征就是推荐 Go 语言的主要原因。除了推荐外,个人还在从事 Go 的相关培训工作,有兴趣学习的,可以来 http://www.hellokang.net/golang/,或者关注微信:小韩说课。获取更多资料!