Go 的誕生與發展概述

導語:古語有云:「往古者,因此知今也」。在決定學習探究 Go 語言以前,瞭解一下它的誕生背景與發展脈絡是頗有必要的。這不只能解開咱們心中關於 Google 爲何要重複「造輪子」的疑惑,還有助於咱們理解這門語言的設計哲學和應用場景。html

Go 誕生前夕:Google 正「負重」前行

時間回溯到 2007 年,那個時候,GitHub 還未問世,Intel 也纔在前一年剛推出自家的第一個多核微處理器 Core 2(微處理器,簡單來講,就是將 CPU 的全部元件都放入同一塊芯片中的東東)。彼時的 Google 已然成長爲一家全球科技巨頭,與之相隨的即是行數與複雜度不斷增加的代碼量。這些數以百萬計的代碼行運行在數以百萬計的機器上。它們大多由 C++、Java,並輔以 Python 寫成,天天都有成千上萬的工程師在圍繞着這些代碼工做,以保證各項服務的正常運行。面對如此龐大的開發規模,人才輩出的谷歌雖然經過各類技術手段得以「逆風飛翔」,可是此種狀態卻帶來了慢速、低效,甚至稍顯笨拙的開發體驗。前端

另外一方面,超線程技術、CPU 多核化的發展和普及爲並行計算提供了技術支持與編程需求,可是反觀編程語言領域卻沒有什麼大的動做,在和多核 CPU 高效安全地協做方面,主流語言能作的並非不少。面對主流編程語言,開發者不得不在其簡潔性、編譯和運行的高效性、代碼的可讀性、類型系統的輕量性等方面糾結徘徊,或者像 Google 同樣採起多語言並行的策略。可是,隨着項目規模的不斷擴大,開發和維護的複雜性着實會讓人叫苦連天。golang

「霹雷一聲震天響,來了Golang當鄉長」

正遭趕上述問題的 Google 工程師們開始坐立不安了,他們一邊對現狀充滿沮喪,一邊回望過去,沉思良久,但願搞明白問題所在。這些在計算機語言領域已深耕多年,富有經驗的工程師們意識到,不能簡單地經過現有語言的單個特性,或添加某些庫就能很好地解決現存問題,站在軟件工程的更高角度,順應技術的發展創造一門全新的語言纔是當下亟須要作的事情。web

關於 Go 的初步構想始於 2007 年 9 月 20 號下午的一次討論,正是此次討論纔有了次日組織在位於加利福尼亞的山景城 43 號樓的三人會議。沒錯,與會的三人 Robert Griesemer,Rob Pike 和 Ken Thompson 就是 Go 的創始人,他們均在 Google 任職,其中的 Ken 就是那個發明了 UNIX、C 語言的神同樣的男子。剛開始,只是一些想法和願望,可是隸屬行動派的三人很多天以內就敲定了目標和接下來要作的事情,在他們的第 1 封有關語言設計的郵件列表中,這門語言的名稱 「Go」 就已初漏端倪:編程

第 1 封有關語言設計的郵件列表摘要

Go VS Golang
因爲 Google 在註冊 Go 的官網域名時,go.org 已被迪士尼搶注,golang.org 才得以「上位」,這也就產生了不少人誤覺得 Golang 就是其正式名稱的誤會,而事實卻偏偏相反,咱們能夠認爲 Golang 只是 Go 的綽號。安全

在接下來的日子裏,Go 的設計等相關工做始終以兼職的形式進行着。直到 2008 年年中,Go 項目才正式「轉正」,成爲一個全職項目。併發

此間,第一件使人驚喜的事就來自那三位創始人收到的這份郵件:機器學習

Ian 發給三位創始人的驚喜郵件

郵件中 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,將來可期!

參考列表

歡迎關注個人公衆號「GoTalk」,一塊兒交流,共同成長。

相關文章
相關標籤/搜索