-
Go语言是
谷歌2009发布的第二款开源编程语言。
Go语言专门针对
多处理器系统应用程序的编程进行了优化,使用Go编译的程序能够媲美C或C++代码的速度,并且更加安全、支持并行进程。
-
中文名
-
Go语言
-
外文名
-
The Go Programming Language (Golang)
-
发表时间
-
2009年
-
类 型
-
开源
编程语言
-
公 司
-
谷歌
-
最新版本
-
Go 1.8(2017年02月17日)
Go语言是
谷歌推出的一种全新的编程语言,能够在不损失应用程序性能的状况降低低代码的复杂性。谷歌首席
软件工程师
罗布派克(Rob Pike)说:咱们之因此开发Go,是由于过去10多年间软件开发的难度使人沮丧。
Go是谷歌2009发布的第二款编程语言。2009年7月份,谷歌曾发布了
Simple语言,它是用来开发Android应用
Go Logo
的一种
BASIC语言.
北京时间2010年1月10日,Go语言摘得了
TIOBE公布的2009年年度大奖。该奖项授予在2009年市场份额增加最多的编程语言。
谷歌资深软件工程师
罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C同样,Go是一种系统语言。他解释道,“使用它能够进行快速开发,同时它仍是一个真正的编译语言,咱们之因此如今将其开源,缘由是咱们认为它已经很是有用和强大。”
2007年,谷歌把Go做为一个20%项目开始研发,即让员工抽出本职工做以外时间的20%, 投入在该项目上。除了派克外,该项目的成员还有其余谷歌工程师也参与研发。
派克表示,编译后Go代码的运行速度与C语言很是接近,并且编译速度很是快,就像在使用一个交互式语言。现有编程语言均未专门对
多核处理器进行优化。Go就是
谷歌工程师为这类程序编写的一种语言。它不是针对编程初学者设计的,但学习使用它也不是很是困难。Go支持
面向对象,并且具备真正的闭包(closures)和反射 (reflection)等功能。
在学习曲线方面,派克认为Go与Java相似,对于Java开发者来讲,应该可以轻松学会 Go。之因此将Go做为一个
开源项目发布,目的是让开源社区有机会建立更好的工具来使用该语言,例如 Eclipse IDE中的
插件。
在
谷歌
公开发布的全部网络应用中,均没有使用Go,可是谷歌已经使用该语言开发了几个内部项目。派克表示,Go是否会对谷歌即将推出的Chrome OS产生影响,还言之尚早,不过Go的确能够和Native Client配合使用。他表示“Go可让应用完美的运行在浏览器内。”例如,使用Go能够更高效的实现Wave,不管是在前端仍是后台。
Go 同时具备两种
编译器,一种是创建在GCC基础上的Gccgo,另一种是分别针对64位x64和32位x86计算机的一套编译器(6g和8g)。谷歌目前正在研发其对ARM芯片和Android设备的支持。派克表示,“Android手机存在的问题是,咱们一直没有一个数学协处理器。”
Go的目标是但愿提高现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。因为存在
并行编程模式,所以这一语言也被设计用来解决多处理器的任务。
谷歌大约2007年开始开发Go,并于2008年投入了一组全职员工。谷歌当初将该语言设计为一款系统编程语言,能够被用于
网络服务器、
存储系统和数据库中。可是谷歌认为,该语言还有望被用于其它领域。
虽然Go还没有成熟,但
谷歌旗下App Engine和其余部分产品已经开始使用go语言来编写。正因如此,谷歌才须要外部编程人员的协助。
派克说:咱们须要更好的
程序库和工具,而开源社区可以在这些方面为咱们提供很大的帮助。
经过建立新的编程语言,谷歌将继续拓展计算领域的各个方面,从而促进这些领域的发展。这一样也是谷歌开发Android操做系统、
Chrome浏览器和Chrome OS的动机所在。
Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优势,并可解决
面向对象程序设计的麻烦。它具备现代的程序语言特点,如垃圾回收,帮助
程序设计师处理琐碎但重要的
内存管理问题。Go的速度也很是快,几乎和C或C++程序同样快,且可以快速制做程序。
Go的网站就是用Go所创建,但Google有更大的野心。该软件是专为构建
服务器软件所设计(如Google的Gmail)。Google认为Go还可应用到其余领域,包括在浏览器内执行软件,取代JavaScript的角色。
Pike说:它至少在强度上比JavaScript高一级。Google自建
Chrome浏览器,部分缘由就是加速JavaScript和网页表现,而Google已经融合了自己的技术,如Native Client和Gears。
Pike表示,Go另外一项与网络相关的特点,是服务器和用户端设备,如PC或手机,能够分担工做。所以,使用Go的服务即可轻松适应不一样的用户端处理性能。
Go也可解决现今的一大挑战:
多核心处理器。通常电脑程序一般依序执行,一次进行一项工做,但多核心处理器更适合并行处理许多工做。Pike说:咱们自认有足够的支持,可改善这方面的问题。
Go团队正在寻求帮助。其中一个重要领域是改善Go可以使用的runtime library。这类library可提供许多工具和功能,加快程序设计的过程。而Go的library还包括许多重要的设计元素,并供应处理同做、垃圾收集和其余低层杂务的资源。
Go团队也须要
编译器方面的协助。Thompson曾为32位元和64位元x86处理器,及ARM处理器写过一些编译器,Taylor也为GCC编译器写过一个Go前端。
尽管Google对Go有很大的野心,该公司也明白,这项计划没法彻底取代现有的技术。Pike说:我不认为咱们能取代任何东西。咱们只是创造出这个领域的另外一个角色。
简洁 快速 安全
并行 有趣 开源,
Thompson:1983年
图灵奖(Turing Award)和1998年
美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。
Pike:曾是
贝尔实验室(Bell Labs)的Unix团队,和Plan 9操做系统计划的成员。他与Thompson共事多年,并共创出普遍使用的UTF-8 字元编码。
Robert Griesemer:曾协助制做Java的HotSpot
编译器,和Chrome浏览器的JavaScript引擎V8。
此外还有Plan 9开发者Russ Cox、和曾改善已普遍使用之开源码编译器GCC的Ian Taylor。
2007年,
谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。[1]
2009年11月10日,Go语言以开放源代码的方式向全球发布。[1]
2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。[2]
2012年3月28日,Go语言的第一个正式版本Go1发布。[2]
2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。[3]
2013年4月08日,Go语言的第二个Go 1.1beta2测试版发布。[3]
2013年5月02日,Go语言Go 1.1RC1版发布。[4]
2013年5月07日,Go语言Go 1.1RC2版发布。[5]
2013年5月09日,Go语言Go 1.1RC3版发布。 [6]
2013年5月13日,Go语言Go 1.1正式版发布。
2013年9月20日,Go语言Go 1.2RC1版发布。[7]
2013年12月1日,Go语言Go 1.2正式版发布。[8]
2014年6月18日,Go语言Go 1.3版发布。[9]
2014年12月10日,Go语言Go 1.4版发布。[10]
2015年8月19日,Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码”。[11]
2016年2月17日,Go语言Go 1.6版发布。[12]
2016年8月15日,Go语言Go 1.7版发布。[13]
2017年2月17日,Go语言Go 1.8版发布。[14]
硬件架构
Go语言设计支持主流的32位和64位的x86平台,同时也支持32位的ARM架构。
操做系统
Go语言在Go1版本上支持Windows, 苹果Mac OS X, Linux和FreeBSD操做系统。[15]
LiteIDE
LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由QT编写。
LiteIDE主要特色:
-
支持主流操做系统
Windows
Linux
MacOS X
-
Go编译环境管理和切换
管理和切换多个Go编译环境
支持Go语言交叉编译
-
与Go标准一致的项目管理方式
基于GOPATH的包浏览器
基于GOPATH的编译系统
基于GOPATH的Api文档检索
-
Go语言的编辑支持
类浏览器和大纲显示
Gocode(代码自动完成工具)的完美支持
Go语言文档查看和Api快速检索
代码表达式信息显示F1
源代码定义跳转支持F2
Gdb断点和调试支持
gofmt自动格式化支持
-
其余特征
支持多国语言界面显示
彻底插件体系结构
支持编辑器配色方案
基于Kate的语法显示支持
基于全文的单词自动完成
支持键盘快捷键绑定方案
Markdown文档编辑支持
实时预览和同步显示
自定义CSS显示
可导出HTML和PDF文档
批量转换/合并为HTML/PDF文档
Sublime Text
Sublime Text 2(如下简称Sublime)+ GoSublime + gocode + MarGo的组合。
其优势有:
-
自动化提示代码。
-
保存的时候自动格式化代码,让您编写的代码更加美观,符合Go的标准。
-
支持项目管理
-
可是如今Sublime Text 2 已经不支持 GoSublime 插件了,可使用Sublime Text 3。
Vim
Vim是从vi发展出来的一个文本编辑器,享有“编辑器之神”的称号。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被普遍使用。
Emacs
Emacs是由GNU开源组织开发出来的一个文本编辑器,同时更是一个整合环境,曾被人戏称“一个假装成编辑器的操做系统”。
Eclipse
Eclipse也是很是经常使用的开发利器,可使用Eclipse来编写Go程序。
IntelliJ IDEA
熟悉Java的读者应该对于idea不陌生,idea是经过一个插件来支持go语言的高亮语法,代码提示和重构实现。[17]
-
参考资料
-