Go语言并发编程系列: 第一章:Go的前世今生
Go语言并发编程系列: 第二章:Go安装部署
Go语言并发编程系列: 第三章:Go语法介绍
Go语言并发编程系列: 第四章:多线程编程概述
Go语言并发编程系列: 第五章:Go的并发原理
Go语言并发编程系列: 第六章:Go锁的应用
Go语言并发编程系列: 第七章:实战-聊天机器人
Go语言并发编程系列: 第八章:实战-Go实现一个软件性能测试工具
Go语言并发编程系列: 第九章:实战-Go实现Concurrent Map
Go语言并发编程系列: 第十章:实战-Go实现网络爬虫
一,Go语言历史和特性
1.1,Go语言的历史
-
2007年9月
罗伯·派克在Google分布式编译平台上进行C++编译,在漫长的等待过程中,他和罗伯特·格瑞史莫探讨了程序设计语言的一些关键性问题,他们认为,简化编程语言相比于在臃肿的语言上不断增加新特性,会是更大的进步。随后他们在编译结束之前说服了身边的肯·汤普逊,觉得有必要为此做一些事情。几天后,他们发起了一个叫Golang的项目,将它作为自由时间的实验项目。
-
2008年5月
Google无意中发现了Go语言的巨大潜力,得到了Google的全力支持,这些人开始全职投入Go语言的设计和开发。 -
2009年11月
Go语言第一个版本发布。2012年3月 第一个正式版本Go1.0发布。 -
2015年8月
Go1.5发布,这个版本被认为是历史性的。完全移除C语言部分,使用Go编译Go,少量代码使用汇编实现。另外,他们请来了内存管理方面的权威专家罗克·赫德森,对GC进行了重新设计,支持并发GC,解决了一直以来广为诟病的GC时延问题。并且在此后的版本中,又对GC做了更进一步的优化。到Go1.8时,相同业务场景下的GC时延已经可以从Go1.1的数秒,控制在1ms以内。GC问题的解决,可以说Go语言在服务端开发方面,几乎抹平了所有的弱点。
在Go语言的版本迭代过程中,语言特性基本上没有太大的变化,基本上维持在Go1.1的基准上,并且官方承诺,新版本对老版本下开发的代码完全兼容。事实上,Go开发团队在新增语言特性上显得非常谨慎,而在稳定性、编译速度、执行效率以及GC性能等方面进行了持续不断的优化。
1.2,Go语言的特性
Go语言主要有以下这几个关键词的语言特性
-
开源性
Go的作者严格遵守软件世界里的开源精神,源代码完全开源,为Go的生态建设奠定了坚实的基础。 -
静态类型和编译型
在Go中,每个变量都必须在声明时指定变量的类型,这点和Java一致。另外,程序必须通过编译生成可执行文件,而后才能被执行。不过,Go的语法非常简洁,就像一些解释型脚本语言那样,非常简单易用。 -
平台无关性
这主要是指计算平台和操作系统的无关性,目前,Go已经支持几乎所有主流的计算平台和操作系统。只要下载相应的Go语言安装包,并且经过简单的安装和配置,就可以使用Go了。 -
自动GC
Go的应用程序在运行过程中的垃圾回收工作一般由Go运行时系统全权负责。当然,Go也提供了我们对此工作进行干预的接口。 -
独特的并发模型:
Go拥有自己的并发编程模型,主要的组成部分有goroutine(也可以叫Go程)
-
齐全的构建工具集合:
Go自带了很多强大的命令和工具,可以轻松的完成Go应用程序的获取,编译,测试,安装,运行,分析等一系列工作。 -
多编程范式:
Go支持函数式编程。函数类型为第一等类型,函数类型可以传递和赋值。此外,Go还支持像Java那样的面向对象编程,有接口类型与实现类的概念,Go没有继承的概念,用嵌入实现了继承的功能。 -
代码风格的统一:
Go安装包中有自己的代码格式化工具,可以用来统一程序的代码风格。 -
高效的编程和运行
Go语言简洁,直接的语法使我们可以快速的编写程序。Go的底层做了大量的性能优化,可以充分利用机器的资源快速运行。 -
丰富的标准库
Go是通用的编程语言,标准库中提供了很多开箱即用的API。 -
完善的第三方生态
Go语言拥有完善的第三方生态,全球目前有上百万的开发者在Go的社区作着巨大的贡献,贡献了很多非常有价值的开源软件,例如:Goat,grpc等等。
二,总结
Go语言拥有如此多的先进特性,笔者相信在Go在未来人工智能,区块链,物联网,5G等领域定能大有作为!