导语:古语有云:“往古者,所以知今也”。在决定学习探究 Go 语言之前,了解一下它的诞生背景与发展脉络是很有必要的。这不仅能解开我们心中关于 Google 为什么要重复“造轮子”的疑惑,还有助于我们理解这门语言的设计哲学和应用场景。
Go 诞生前夕:Google 正“负重”前行
时间回溯到 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” 就已初漏端倪:
Go VS Golang
由于 Google 在注册 Go 的官网域名时,go.org
已被迪士尼抢注,golang.org
才得以“上位”,这也就产生了很多人误以为Golang
就是其正式名称的误会,而事实却恰恰相反,我们可以认为Golang
只是Go
的绰号。
在接下来的日子里,Go 的设计等相关工作始终以兼职的形式进行着。直到 2008 年年中,Go 项目才正式“转正”,成为一个全职项目。
此间,第一件令人惊喜的事就来自那三位创始人收到的这份邮件:
邮件中 Ian 讲到自己为 Go 实现了一个能进行语法分析、词法分析和语义分析的 gcc 前端编译组件。后来,Ian 也成为了 Go 的核心开发人员。
2008 年末,另一位技术大神 Russ Cox 也加入到了 Go 开发团队。在他的助攻下,Go 语言和标准库从原型变成了现实。
2009 年 11 月 10 号,Go 宣布开源,这一天也被选定为 Go 的生日????。
2012 年 3 月,Go version 1 正式发布,这标志着 Go 作为一门全新的编程设计语言已可投身生产,根据 Go 的 兼容性原则,我们可以放心地使用它编写简单、高效、稳定可靠的应用了。
大事记
目前,Go 的最新稳定版本是 1.13,下面我们以时间轴的方式梳理了在这个迭代过程中,发生了哪些里程碑式的大事件。
更多详细信息,可参阅 Go 语言的历史回顾 这篇译文。
发展中的 Go :最有前途的编程语言
Go 从诞生之初,就有一个明确的目标,那就是解决 Google 内部正面临的软件开发问题,这些问题并非 Google 独自的遭遇,业界普遍存在。所以,GO 不仅是一门通用编程设计语言(general-purpose language),更是一门着眼解决现实问题的实用编程语言。历经多年,核心开发者与社区众多优秀成员不断地完善改进这门语言,Go 已经发展成为了一门成熟的现代编程语言,在 web、移动应用、图形处理、以及云计算、机器学习、区块链等领域都能见到它的身影,其语言本身的简洁性、内置的并发编程支持、垃圾回收机制等特性深受开发者青睐。
JetBrains 近期发布的一份分析报告——2019 开发人员生态系统现状 在对比了主流开发语言后,得出一个结论:Go 是最有前途的编程语言。
核心开发者的持续支持,活跃的社区,日益增长的开发者众,越来越多的企业开始转投 Go 阵营,Russ Cox 在 GopherCon 2017 上做了对 Go 2 畅想的 演讲……Go,未来可期!
参考列表
- Frequently Asked Questions (FAQ) - Origins
- Go: Ten years and climbing
- Go at Google: Language Design in the Service of Software Engineering
- The Go Programming Language
欢迎关注我的公众号“GoTalk”,一起交流,共同成长。
有疑问加站长微信联系(非本文作者)