8

Go 的诞生与发展概述

 4 years ago
source link: https://studygolang.com/articles/25433
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

时间回溯到 2007 年,那个时候,GitHub 还未问世,Intel 也才在前一年刚推出自家的第一个多核微处理器 Core 2(微处理器,简单来说,就是将 CPU 的所有元件都放入同一块芯片中的东东)。彼时的 Google 已然成长为一家全球科技巨头,与之相随的便是行数与复杂度不断增长的代码量。这些数以百万计的代码行运行在数以百万计的机器上。它们大多由 C++、Java,并辅以 Python 写成,每天都有成千上万的工程师在围绕着这些代码工作,以保证各项服务的正常运行。面对如此庞大的开发规模,人才济济的谷歌虽然通过各种技术手段得以“逆风飞翔”,但是此种状态却带来了慢速、低效,甚至稍显笨拙的开发体验。

另一方面,超线程技术、CPU 多核化的发展和普及为并行计算提供了技术支持与编程需求,但是反观编程语言领域却没有什么大的动作,在和多核 CPU 高效安全地协作方面,主流语言能做的并不是很多。面对主流编程语言,开发者不得不在其简洁性、编译和运行的高效性、代码的可读性、类型系统的轻量性等方面纠结徘徊,或者像 Google 一样采取多语言并行的策略。但是,随着项目规模的不断扩大,开发和维护的复杂性着实会让人叫苦不迭。

“霹雷一声震天响,来了Golang当乡长”

正遭遇上述问题的 Google 工程师们开始坐立不安了,他们一边对现状充满沮丧,一边回望过去,沉思良久,希望搞明白问题所在。这些在计算机语言领域已深耕多年,富有经验的工程师们意识到,不能简单地通过现有语言的单个特性,或添加某些库就能很好地解决现存问题,站在软件工程的更高角度,顺应技术的发展创造一门全新的语言才是当下亟需要做的事情。

关于 Go 的初步构想始于 2007 年 9 月 20 号下午的一次讨论,正是这次讨论才有了第二天组织在位于加利福尼亚的山景城 43 号楼的三人会议。没错,与会的三人 Robert Griesemer,Rob Pike 和 Ken Thompson 就是 Go 的创始人,他们均在 Google 任职,其中的 Ken 就是那个发明了 UNIX、C 语言的神一样的男子。刚开始,只是一些想法和愿望,但是隶属行动派的三人数日之内就敲定了目标和接下来要做的事情,在他们的第 1 封有关语言设计的邮件列表中,这门语言的名称 “Go” 就已初漏端倪:

aMNnYnF.png!web

Go VS Golang

由于 Google 在注册 Go 的官网域名时, go.org 已被迪士尼抢注, golang.org 才得以“上位”,这也就产生了很多人误以为 Golang 就是其正式名称的误会,而事实却恰恰相反,我们可以认为 Golang 只是 Go 的绰号。

在接下来的日子里,Go 的设计等相关工作始终以兼职的形式进行着。直到 2008 年年中,Go 项目才正式“转正”,成为一个全职项目。

此间,第一件令人惊喜的事就来自那三位创始人收到的这份邮件:

YFviUfF.png!web

邮件中 Ian 讲到自己为 Go 实现了一个能进行语法分析、词法分析和语义分析的 gcc 前端编译组件。后来,Ian 也成为了 Go 的核心开发人员。

2008 年末,另一位技术大神 Russ Cox 也加入到了 Go 开发团队。在他的助攻下,Go 语言和标准库从原型变成了现实。

2009 年 11 月 10 号,Go 宣布开源,这一天也被选定为 Go 的生日:birthday:。

2012 年 3 月, Go version 1 正式发布,这标志着 Go 作为一门全新的编程设计语言已可投身生产,根据 Go 的 兼容性原则 ,我们可以放心地使用它编写简单、高效、稳定可靠的应用了。

大事记

目前,Go 的最新稳定版本是 1.13,下面我们以时间轴的方式梳理了在这个迭代过程中,发生了哪些里程碑式的大事件。

BF3m6rr.png!web

更多详细信息,可参阅 Go 语言的历史回顾 这篇译文。

发展中的 Go :最有前途的编程语言

Go 从诞生之初,就有一个明确的目标,那就是解决 Google 内部正面临的软件开发问题,这些问题并非 Google 独自的遭遇,业界普遍存在。所以,GO 不仅是一门通用编程设计语言(general-purpose language),更是一门着眼解决现实问题的实用编程语言。历经多年,核心开发者与社区众多优秀成员不断地完善改进这门语言,Go 已经发展成为了一门成熟的现代编程语言,在 web、移动应用、图形处理、以及云计算、机器学习、区块链等领域都能见到它的身影,其语言本身的简洁性、内置的并发编程支持、垃圾回收机制等特性深受开发者青睐。

JetBrains 近期发布的一份分析报告—— 2019 开发人员生态系统现状 在对比了主流开发语言后,得出一个结论:Go 是最有前途的编程语言。

核心开发者的持续支持,活跃的社区,日益增长的开发者众,越来越多的企业开始转投 Go 阵营,Russ Cox 在 GopherCon 2017 上做了对 Go 2 畅想的 演讲 ……Go,未来可期!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK