GO语言

Go(通常称为Golang)是由Google于2009年由Robert Griesemer,Rob Pike和Ken Thompson(C语言作者之一,UNXI创建者)创建的一种编程语言。Go是一个静态类型、编译型语言,很像C。具有 存储器的安全垃圾回收结构输入CSP式的并发特性。它的编译器,工具,和源代码都是免费和开源的。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

诞生背景

设计Go语言是为了解决当时Google开发遇到的以下这些问题:

  • 大量的C++代码,同时又引入了Java和Python
  • 成千上万的工程师
  • 数以万计行的代码
  • 分布式的编译系统
  • 数百万的服务器

上面这些问题产生的痛点:

  • 编译慢
  • 失控的依赖
  • 每个工程师只是用了一个语言里面的一部分
  • 程序难以维护(可读性差、文档不清晰等)
  • 更新的花费越来越长
  • 交叉编译困难

单纯看上面这些问题, 可以看出当时设计Go的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是由那些开发大型系统的人设计的,同时也是为了这些人服务的;它是为了解决工程上的问题,不是为了研究语言设计;它还是为了让我们的编程变得更舒适和方便。

单纯在语言方面,性能好的语言(比如C/C++),没有很高的开发效率和灵活性;开发效率高的语言(.NET、Python等)又不具备足够快的性能。 Go语言的诞生在某种意义上也是为了解决这个问题。

语言特性

  • 垃圾回收

    • 自动回收,不需要开发人员处理,失去了最后的引用的变量将会被销毁
    • 降低编码人员工作
  • 支持并发

    • go 操作
    • goroutine 用户级线程
  • 多返回值

    • 函数的返回值不止一个可以
  • 强调简单、易学
  • 内存管理和语法简单
  • 快速编译
  • 并发支持
  • 静态类型
  • 部署简单(go install)
  • 自身就是文档(通过godoc将代码中的注释信息构造成文档)
  • 开源免费(BSD licensed)

应用场景

它最初的构想是作为一个系统编程语言,但目前也被用于像Web Server,存储架构等这类分布式、高并发系统中。当然也可以用于一般的文字处理和作为脚本程序。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

分布式系统,数据库代理器等网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用、

内存数据库,前一段时间google开发的groupcache,couchbase的部分组建

云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。

Go的编译器作为Native Client被内嵌到Chrome浏览器中,可以被Web应用程序用来执行本地代码;同时Go也可以运行在Intel和ARM的处理器上。

目前已被Google集成到Google APP Engine中,在基于Google App Engine基础设施的Web应用中也得到了很好的应用。目前GAE中仅支持三种应用程序开发语言:Java、Python和Go。(注:GAE的链接)

但不适合应用到对实时性要求很高的系统中,因为Go的内存模型是基于垃圾回收机制和原子内存分配。

发展未来

但是作为2009年诞生的一门语言,至今(2018年)已经有九年时间。它的发展并没有像一个框架那样迅速铺展开来,但是借着Google这颗大树,市面已经有很多知名公司都在使用这门语言。所以还以有必要了解以下的,主要是体验一下Go语言的特性。

本文固定链接: http://www.js-code.com/cpp/cpp_60807.html