最近,笔者开始使用golang语言。感觉golang是一门很有前途的语言。这不仅仅是因为golang是由大牛们打造出来的。更因为golang语言的特性。最近文章会开始介绍golang语言。
golang历史
2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009年11月10日,Go语言以开放源代码的方式向全球发布。
2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。
2012年3月28日,Go语言的第一个正式版本Go1发布。
2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。
2013年4月08日,Go语言的第二个Go 1.1beta2测试版发布。
2013年5月02日,Go语言Go 1.1RC1版发布。
2013年5月07日,Go语言Go 1.1RC2版发布。
2013年5月09日,Go语言Go 1.1RC3版发布。
2013年5月13日,Go语言Go 1.1正式版发布。
2013年9月20日,Go语言Go 1.2RC1版发布。
设计者包括Robert Griesemer, Rob Pike和Ken Thompson,后来Ian Lance Taylor实现了基于GCC的go编译器gccgo,Russ Rox的加入推动了语言和库的实际可用性。
简介
Go语言是Google于2009年推出的静态编译型语言,旨在为开发人员提供类似Python,Ruby一样简洁的语言环境,同时又具备C/C++一样的运行效率。作为一个开源项目,在过去的两年多时间里,Go以社区协作的形式,不断地完善语言和标准库的设计与实现。2012年3月28日发布了第一个稳定的发行版本:Go version 1,简称Go1。
Go 1的推出,意味着Go语言和它的标准库已经进入了一个稳定阶段。对于谨慎的开发人员来说,开发Go程序正趁当下,现在已经可以放心地开发Go程序,不必再考虑未来语法和标准库的变化。
Go的基本设计理念是:编译效率,运行效率和开发效率要三者兼顾。使用Go开发,要让开发人员感觉到Python的便利,C/C++的运行效率,以及小到可以被忽略的编译时间。为了实现这个理念,形成了Go语言的以下几个特性:
-
编译,静态类型语言。由此可以提供满足对运行效率敏感的系统级应用。
-
垃圾回收,去除复杂的内存释放工作。
-
简洁的符号和语法,极力减少开发人员输入的字符数。
-
平坦的类型系统,去除了复杂的继承关系。使用结构化类型系统(Structural type system),既简化了事前设计工作,也为未来增加抽象层提供了非侵入式的解决方法。
-
基于CSP模型的并行,简化了并发结构之间的通信和数据共享。为多核时代的程序开发打好基础。
-
比线程更轻量的goroutine,让一个线程可以执行多个并发结构。不必使用异步通信,就足以达到线程池与select/poll/epoll的效果。极大简化了多连接的开发。
-
使用一套简单的规范,开发人员不必再单独编写脚本指定依赖关系和编译流程。仅仅使用代码本身和go工具链,就可以处理各种依赖关系。写完代码,一条命令,自动下来各种依赖,直接编译/安装。无需make,autoconf,automake,setup.py等工具支持。
后续文章将会详细讲解golang语言特性。
大牛介绍:
Robert Griesemer参与设计Chrome浏览器中的Javascript执行引擎V8,V8采用即时编译技术和分代(generational)的stop-the-world垃圾收集机制;
Rob Pike乃大名鼎鼎的人物,曾在贝尔实验室工作,是Unix操作系统、Plan9操作系统、Limbo编程语言和UTF-8编码的主要设计者,写过愤青式的文章Systems Software Research is Irrelevant,还有两本书The Unix Programming Environment和The Practice of Programming;
Ken Thompson是图灵奖获得者,是Unix操作系统、Plan9操作系统、UTF-8编码和B编程语言(C的前身)的创立者之一。在google,Ken和Robert还设计过过用于大规模数据分析的Sawzall语言;
Ian Lance Taylor是GCC社区的超级活跃人物,是gold连接器和GCC过程间优化LTO的主要设计者之一,是Zembu公司的创始人之一。
欢迎关注微信公众号:码术(codemanship)
有疑问加站长微信联系(非本文作者)