随着时代发展,编程语言种类越来越繁多,老牌强将势头仍然强劲,不过也很难抵挡住新兴编程语言的实力和发展。GO语言就是这样一个年纪很小的实力新星。
Go语言是谷歌发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
Go语言的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。
GO语言目前的用户群体暂时并不大,不过用过的人对其评价很高,那我们来看看什么是GO语言吧。
0.什么是Go语言?
Golang(GO)是由Google在年推出的编程语言,是一门全新的、现代的、语法简洁并容易上手的编程语言,是具备独立的运行时库,就像C语言一样。
曾协助实现Java的HotSpot编译器和JavaScriptV8引擎的RobertGriesemer,曾是贝尔实验室的Unix团队和Plan9操作系统成员,与Thompson一起创造了UTF-8字符编码的RobPike以及技术圣殿的人物,创造了C语言和Unix,获得了年图灵奖和国家技术奖的KenThompson。
据说这些大神们创建Go语言的初衷是:近十年来开发程序之难让我们有点沮丧。于是Go诞生了。
1.Go语言的优势?
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
语言层面支持并发,这个就是Go语言最大的特色,天生的支持并发,天生的基因和整容是有区别的,大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go语言就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。
2.GO语言适合用来做什么
服务器编程,用Go语言来做很合适,比如处理日志、数据打包、虚拟机处理、文件系统等;分布式系统,数据库代理器等等;网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用;内存数据库,前一段时间google开发的groupcache,couchbase的部分组建;云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台;
3.Go语言成功的项目
nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息;docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建;packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者;skynet:分布式调度框架;Doozer:分布式同步工具,类似ZooKeeper;Heka:mazila开源的日志处理系统;cbfs:couchbase开源的分布式文件系统;tsuru:开源的PAAS平台,和SAE实现的功能一模一样;groupcache:memcahe作者写的用于Google下载系统的缓存系统;god:类似redis的缓存系统,但是支持分布式和扩展性;gor:网络流量抓包和重放工具;文中若有表述错误的地方欢迎大家留言指正。
分享IT技术和行业经验,请