一起来学 Go -- 背景与特点

栏目: Go · 发布时间: 6年前

内容简介:C/C++ 的发展速度没有跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言。为了解决这一问题,Google 开发了一门新的编程语言 – Go 。Google 当时的现状:Google 当时面临的问题:

C/C++ 的发展速度没有跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言。为了解决这一问题,Google 开发了一门新的编程语言 – Go 。

Google 当时的现状:

  • 项目中主要使用C++,也有 Java 和 Python
  • 开发人员众多
  • 代码量大
  • 分布式编译
  • 服务器数量达百万级别

Google 当时面临的问题:

  • 编译慢
  • 依赖复杂
  • 每个工程师只用了一个语言的一部分特性
  • 代码难以维护,可读性差,文档不清晰
  • 变更功能的成本越来越大
  • 交叉编译困难

Google 设计 Go 的初衷是为了消除各种缓慢和笨重、改进各种低效和扩展。Go 主要面向的是开发大型系统的人,强调解决工程问题。

2007 年 Google 发起 Go 项目,2009 年开源项目,2012 年发布第一个正式版本,之后每半年一个版本。在 Google 内部,一开始 Go 作为一个 20% 的项目运作,也就是员工利用 20% 的空余时间来参与开发。

Go 项目的三位主要领导者对系统编程语言、操作系统和并行都有着深刻理解:

  • Rob Pike,Unix、UTF-8、Plan9 的作者
  • Ken Thompson,B语言、 C语言 的作者、Unix之父。
  • Robert Griesemer,参与开发 JavaScript 执行引擎 V8,Java HotSpot 虚拟机等。

这样强大的创始团队阵容,再加上 Google 制造的光环 ,给 Go 项目带来了极高的人气。

2. Go 语言的适用场景

Go 适用的一些场景:

  • 服务器编程,处理日志、数据打包、虚拟机处理、文件系统等
  • 分布式系统,数据库代理、中间件等
  • 网络编程,Web 应用、API 应用、下载应用、游戏后端等
  • 海量存储,Influxdb、Tidb 等
  • 云平台,CloudFoundry 等

使用 Go 的国外公司有 Google、 Docker 、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、 MongoDB 、AWS 等。

使用 Go 的国内公司有头条、阿里云 CDN、百度、小米、七牛、PingCAP、华为、金山软件、猎豹移动、饿了么等。

3. Go 语言的特点

Go,又称 Golang,是 Google 开发的一种静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。Google 的很多工程师都是 C 系的,所以 Go 和 C++、Java 、C# 一样属于 C 系。

在声明和包的设计方面,Go 受到 Pascal、Modula 和 Oberon 系语言的影响;在并发原理的设计上,Go 从同样受到 Tony Hoare 的通信序列进程 CSP 理论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。

Go 语言的优点:

  • 部署简单,编译之后是一个静态可执行文件,除了 glibc ,没有其他外部依赖
  • 并发性好,Goroutine 和 Channel 从语言层面支持并发,编写高并发的应用不需要考虑锁机制,以及由此带来的各种问题
  • 良好的语言设计,自带完善的 工具 链,例如 gofmt 可自动排版代码
  • 执行性能良好,适合编写瓶颈业务,非常节省内存
  • 丰富的标准库,内置大量的库,可以直接使用

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ajax实战

Ajax实战

Dave Crane Eric Pascarello / 李锟(网名dlee) / 人民邮电出版社 / 2006年4月 / 69

本书是目前 Ajax 领域最为全面深入的一本著作,其中不仅有对于基础知识的介绍,还有对于 Ajax 开发中重大的体系架构问题的深入探讨,总结了大量 Ajax 开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码稍作修改就可以直接应用于项目开发之中,代码源文件可以从图灵网站下载。本书内容广泛且深入,同时适用于各个层次的 Web 应用开发人员。一起来看看 《Ajax实战》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具