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

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

内容简介: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 可自动排版代码
  • 执行性能良好,适合编写瓶颈业务,非常节省内存
  • 丰富的标准库,内置大量的库,可以直接使用

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

查看所有标签

猜你喜欢:

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

Java Servlet & JSP Cookbook

Java Servlet & JSP Cookbook

Bruce W. Perry / O'Reilly Media / 2003-12-1 / USD 49.99

With literally hundreds of examples and thousands of lines of code, the Java Servlet and JSP Cookbook yields tips and techniques that any Java web developer who uses JavaServer Pages or servlets will ......一起来看看 《Java Servlet & JSP Cookbook》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具