1. 程式人生 > >Go語言的前世今生

Go語言的前世今生

今天跟大家分享一下Go語言的發展歷程。

谷歌工程師的20%時間

谷歌的“20%時間”工作方式,允許工程師拿出20%的時間來研究自己喜歡的專案。語音服務Google Now、谷歌新聞Google News、谷歌地圖Google Map上的交通訊息等,全都是20%時間的產物。

Go語言最開始也是20%時間的產物。

誕生時間
Go 語言起源 2007 年,並於 2009 年正式對外發布。它從 2009 年 9 月 21 日開始作為谷歌公司 20% 兼職專案,即相關員工利用 20% 的空餘時間來參與 Go 語言的研發工作。

其實可以看到,Go語言的歷史不算很短。

創始人
該專案的三位領導者均是著名的 IT 工程師:

羅伯特·格瑞史莫(Robert Griesemer)
Robert Griesemer is an employee of Google and one of the initial designers of the Go programming language. Prior to Go, Robert has worked on code generation for Google’s V8 JavaScript engine and Chubby,[1] a distributed lock manager for Google’s GFS distributed filesystem. He has also worked on the design and implementation of the domain-specific language Sawzall, the Java HotSpot virtual machine, and the Strongtalk system. He has also written a vectorizing compiler for the Cray Y-MP and an interpreter for APL.

羅勃特·派克(Rob Pike)
暱稱為羅勃·派克(Rob Pike),來自加拿大的程式設計師,曾經加入貝爾實驗室,為 UNIX小組的成員。曾經參與過貝爾實驗室九號計劃、Inferno,與程式語言 Limbo的開發。他與肯·湯普遜共同開發了UTF-8。

肯尼斯·湯普遜(Ken Thompson)
肯·湯普遜(英語:Ken Thompson),是美國電腦科學學者和工程師。黑客文化圈子通常稱他為“ken”[1]。在貝爾實驗室工作期間,湯普遜設計和實現了Unix作業系統。他創造了B語言——C語言的前身,而且他是Plan 9作業系統的創造者和開發者之一。2006年,湯普遜進入Google公司工作,與他人共同設計了Go語言。他與丹尼斯·裡奇同為1983年圖靈獎得主。
此外,肯·湯普遜還參與過正則表示式和UTF-8編碼的設計,改進了文字編輯器QED,創造了ed編輯器。他曾製造過專門用於下國際象棋的電腦“Belle”,並建立了殘局資料庫。

這裡插一句額外的話,昨天聽說某H公司要清理35歲以上的開發工程師和40歲以上的交付工程師,那我們看看上面大師的年齡:
羅勃特·派克61歲 肯尼斯·湯普遜74歲
也許國外的工程師才是真正的工程師

大事件
2007 年 :雛形設計
2009 年 :首次公開發布
2010 年 :當選 2009 年年度語言,谷歌投入使用
2011 年 :Google App Engine 支援 Go 語言

Go語言的logo和吉祥物

logo如下,有沒有給人快速的感覺:
這裡寫圖片描述

Go語言的吉祥物如下,像鼴鼠:
這裡寫圖片描述

其實是一種英文名為gopher的小動物,中文叫囊地鼠:
這裡寫圖片描述

使用Go的專案

Docker, a set of tools for deploying Linux containers

Doozer, a lock service by managed hosting provider Heroku

Gogs, self-hosted Git Service.

InfluxDB, an open source database specifically to handle time series data with high availability and high performance requirements.

Juju, a service orchestration tool by Canonical, packagers of Ubuntu Linux

Packer, a tool for creating identical machine images for multiple platforms from a single source configuration

Snappy, a package manager for Ubuntu phone developed by Canonical.

Syncthing, an open-source file synchronization client/server application

Go的開源框架

Beego, high-performance web framework in Go, used for web apps and backend services.[citation needed]

Martini, package for web applications/services.[citation needed]

Gorilla, a web toolkit for Go.[citation needed]

Enduro/X ASG, a cluster middleware, application server, distributed transaction and multi-processing framework for Go.

AeroFS, private cloud filesync appliance provider which migrated some microservices from Java to Go with major memory footprint improvements

Chango, a programmatic advertising company uses Go in its real-time bidding systems.