一、知名编程语⾔发展简史

(⼀)、知名编程语⾔或系统的发展简史

1、B语⾔之⽗

Ken Thompson(肯.汤普森)。该语⾔得名于汤姆森的妻⼦
Bonnie,⼀⻔剑桥于60年代中期开发的语⾔。

2、C语⾔之⽗

美国著名计算机专家、C语⾔发明⼈、UNIX之⽗Dennis
Ritchie(丹尼斯·⾥奇)在1969-1973年期间发明了C语⾔和Unix操作系统。

3、Unix之⽗

Dennis Ritchie(丹尼斯·⾥奇)及Ken Thompson(肯.汤普森)
在73年左右发明了Unix操作系统。两⼈因此获得1983年图灵奖。

4、C++之⽗

Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)。1982年,美国
⻉尔实验室的Bjarne Stroustrup博⼠在C语⾔的基础上引⼊并扩充了⾯向对象的
概念,发明了—种新的程序语⾔。为了表达该语⾔与c语⾔的渊源关系,它被命
名为C++。

5、Python之⽗

Guido von Rossum(吉多.范.罗苏姆)。1989年,为了打发圣
诞节假期,Guido开始写Python语⾔的编译/解释器。1994年发布1.0版本。1995
年9⽉发布了Python3.5版。

6、Java

James Gosling(詹姆斯.⾼斯林)。1991年开发Oak,1994年更名为
Java。1995年5⽉正式发布。

7、Javascript

Brendan Eich(布兰登.艾奇)。艾奇对Java⼀点兴趣也没有,为
了应付公司安排的任务,他于1995年5⽉只⽤10天时间就把Javascript设计出来
了。

8、Go语⾔

Go的三个作者分别是:Robert Griesemer(罗伯特.格利茨默),
Rob Pike(罗伯.派克) 和 Ken Thompson(肯.汤普森)。

  • Robert在开发Go之前是Google V8、Chubby和HotSpot JVM的主要贡献
    者;
  • Rob主要是Unix、UTF-8、plan9的作者;
  • Ken主要是B语⾔、C语⾔的作者、Unix之⽗。

(⼆)、Go语⾔主要发展过程

1、2007年9⽉,Rob Pike(罗伯.派克) 正式命名为Go;
2、2008年5⽉,Google全⼒⽀持该项⽬;
3、2009年11⽉,Go将代码全部开源,它获得了当年的年度语⾔;
4、2012年3⽉28⽇,Go发布第⼀个正式的稳定版本。

  • Go稳定版发布时,Go Team承诺后续的版本都会兼容之前的版本。这对
    于开发者来说⾮常重要,Go后续的版本也⼀直在提升内功,从⽽可以让⽤
    户⽆缝的升级Go版本。

⼆、Go语⾔的特点及优势

(⼀)、Go语⾔设计初衷(为什么会设计Go语⾔?)

1、设计Go语⾔是为了解决当时Google开发遇到的问题

  • ⼤量的C++代码,同时⼜引⼊了Java和Python
  • 成千上万的⼯程师
  • 数以万计⾏的代码
  • 分布式的编译系统
  • 数百万的服务器

    2、Google开发中的痛点

  • 编译慢
  • 失控的依赖
  • 每个⼯程师只是⽤了⼀个语⾔⾥⾯的⼀部分
  • 程序难以维护(可读性差、⽂档不清晰等)
  • 更新的花费越来越⻓
  • 交叉编译困难

3、如何解决当前的问题和痛点?

  • Go希望成为互联⽹时代的C语⾔。多数系统级语⾔(包括Java和C#)的
    根本编程哲学来源于C++,将C++的⾯向对象进⼀步发扬光⼤。但是Go语⾔
    的设计者却有不同的看法,他们认为值得学习的是C语⾔。C语⾔经久不衰
    的根源是它⾜够简单。因此,Go语⾔也是⾜够简单。
  • 所以,他们当时设计Go的⽬标是为了消除各种缓慢和笨重、改进各种低
    效和扩展性。Go是由那些开发⼤型系统的⼈设计的,同时也是为了这些⼈
    服务的;它是为了解决⼯程上的问题,不是为了研究语⾔设计;它还是为了
    让我们的编程变得更舒适和⽅便。
  • 但是结合Google当时内部的⼀些现实情况,如很多⼯程师都是C系的,所
    以新设计的语⾔⼀定要易学习,最好是类似C的语⾔;20年没有出新的语⾔
    了,所以新设计的语⾔必须是现代化的(例如内置GC)等情况。最后根据
    实战经验,他们向着⽬标设计了Go这个语⾔。

    4、Go语⾔的特⾊:

  • 没有继承多态的⾯向对象
  • 强⼀致类型
  • interface不需要显式声明(Duck Typing)
  • 没有异常处理(Error is value)
  • 基于⾸字⺟的可访问特性
  • 不⽤的import或者变量引起编译错误
  • 完整⽽卓越的标准库包
  • Go内置runtime(作⽤是性能监控、垃圾回收等)

(⼆)、Go语⾔的优势

1、学习曲线容易

Go语⾔语法简单,包含了类C语法。因为Go语⾔容易学习,所以⼀个普通
的⼤学⽣花⼏个星期就能写出来可以上⼿的、⾼性能的应⽤。在国内⼤家都追求
快,这也是为什么国内Go流⾏的原因之⼀。

2、效率:快速的编译时间,开发效率和运⾏效率⾼

开发过程中相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是⼀
个主要的效率优势。Go拥有接近C的运⾏效率和接近PHP的开发效率。

3、出身名⻔、⾎统纯正

之所以说Go出身名⻔,从Go语⾔的创造者就可⻅端倪,Go语⾔绝对⾎统纯
正。其次Go语⾔出⾃Google公司,Google在业界的知名度和实⼒⾃然不⽤多
说。Google公司聚集了⼀批⽜⼈,在各种编程语⾔称雄争霸的局⾯下推出新的
编程语⾔,⾃然有它的战略考虑。⽽且从Go语⾔的发展态势来看,Google对它
这个新的宠⼉还是很看重的,Go⾃然有⼀个良好的发展前途。

4、⾃由⾼效:组合的思想、⽆侵⼊式的接⼝

Go语⾔可以说是开发效率和运⾏效率⼆者的完美融合,天⽣的并发编程⽀
持。Go语⾔⽀持当前所有的编程范式,包括过程式编程、⾯向对象编程、⾯向
接⼝编程、函数式编程。程序员们可以各取所需、⾃由组合、想怎么玩就怎么
玩。

5、强⼤的标准库

这包括互联⽹应⽤、系统编程和⽹络编程。Go⾥⾯的标准库基本上已经是
⾮常稳定了,特别是我这⾥提到的三个,⽹络层、系统层的库⾮常实⽤。

6、部署⽅便:⼆进制⽂件,Copy部署

这⼀点是很多⼈选择Go的最⼤理由,因为部署太⽅便了,所以现在也有很
多⼈⽤Go开发运维程序。

7、简单的并发

  • Go 是⼀种⾮常⾼效的语⾔,⾼度⽀持并发性。Go是为⼤数据、微服务、并
    发⽽⽣的⼀种编程语⾔。
  • Go 作为⼀⻔语⾔致⼒于使事情简单化。它并未引⼊很多新概念,⽽是聚
    焦于打造⼀⻔简单的语⾔,它使⽤起来异常快速并且简单。其唯⼀的创新之
    处是 goroutines 和通道。Goroutines 是 Go ⾯向线程的轻量级⽅法,⽽通
    道是 goroutines 之间通信的优先⽅式。
  • 创建 Goroutines 的成本很低,只需⼏千个字节的额外内存,正由于此,
    才使得同时运⾏数百个甚⾄数千个 goroutines 成为可能。可以借助通道实
    现 goroutines 之间的通信。Goroutines 以及基于通道的并发性⽅法使其⾮
    常容易使⽤所有可⽤的 CPU 内核,并处理并发的 IO。相较于
    Python/Java,在⼀个 goroutine 上运⾏⼀个函数需要最⼩的代码。

    8、稳定性

    Go拥有强⼤的编译检查、严格的编码规范和完整的软件⽣命周期⼯具,具有很强的稳定性,稳定压倒⼀切。那么为什么Go相⽐于其他程序会更稳定呢?
    这是因为Go提供了软件⽣命周期(开发、测试、部署、维护等等)的各个环节
    的⼯具,如go tool、gofmt、go test。

    (三)、Go语⾔的核⼼特性和优势

  • Go主要有静态语⾔、函数多返回值、天⽣并发、内置GC(⾃动垃圾回
    收)、安全性⾼、语法简单、编译快速这⼏个⽅⾯的特性。这些特性决定了
    Go的三个⾼富帅特性:运⾏快、开发快和部署快。
    • 静态类型语⾔是指在编译时变量的数据类型即可确定的语⾔,要求在使⽤变量之前必须声明数据类型(具有类型推导能⼒的现代语⾔可能能够部分减轻这个要求);
    • 动态类型语⾔是在运⾏时确定数据类型的语⾔,变量使⽤之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
  • Go语⾔是⽬前项⽬转型⾸选的语⾔,也是软件⼯程师转型⾸选的语⾔,
    是添加技术栈的⾸选语⾔。Go常常是⼀种为转型⽽量身定制的语⾔。

    (四)、Go语⾔能开发什么?

  • 1、服务器编程
    以前你如果使⽤C或者C++做的那些事情,⽤Go来做很合适,
    例如处理⽇志、数据打包、虚拟机处理、⽂件系统等。
  • 2、分布式系统、数据库代理器、中间件等,例如Etcd。
  • 3、⽹络编程,这⼀块⽬前应⽤最⼴,包括Web应⽤、API应⽤、下载应⽤,⽽且Go内置的net/http包基本上把我们平常⽤到的⽹络功能都实现了。
  • 4、数据库操作
  • 5、开发云平台,⽬前国外很多云平台在采⽤Go开发

    (五)、采⽤Go语⾔的国内外知名企业

  • 1、Go发布之后,很多公司特别是云计算公司开始⽤Go重构他们的基础架构,很
    多都是直接采⽤Go进⾏了开发,最近热⽕朝天的Docker就是采⽤Go开发的;
  • 2、采⽤Go的⼀些国外公司,如Google、Docker、Apple、Cloud Foundry、
    CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司;
  • 3、采⽤Go开发的国内企业:如阿⾥云CDN、百度、⼩⽶、七⽜、PingCAP、华
    为、⾦⼭软件、猎豹移动、饿了么等公司。

参考相关源

Golang菜鸟教程

Go语言入门教程-C语言中文网

Go语言中文网

下载安装

由于官方网站需要翻墙,所有我们在国内可以去
Go语言中文网中进行下载安装

其中提供多种操作系统环境的安装,安装形式分为压缩版和安装包版本