最近十年來,C/C++在計算領域沒有很好獲得發展,並無新的系統編程語言出現。對開發程度和系統效率在不少狀況下不能兼得。要麼執行效率高,但低效的開發和編譯,如C++;要麼執行低效,但擁有有效的編譯,如.NET、Java;因此須要一種擁有較高效的執行速度、編譯速度和開發速度的編程語言,Go就橫空出世了。html
傳統的語言好比c++,你們花費太多時間來學習如何使用這門語言,而不是如何更好的表達寫做者的思想,同時編譯花費的時間實在太長,對於編寫-編譯-運行這個鏈條來講週期太長。動態語言如Python,因爲沒有強類型的約束,不少問題須要在運行時發現,這種低級錯誤更應該交給編譯器來發現。前端
人力成本愈來愈高c++
機器愈來愈便宜golang
機器的性能愈來愈厲害編程
在開發效率和運行速度上達到平衡七牛雲存儲
go出現以前,不管彙編語言、仍是動態腳本語言,在執行效率和開發效率上都不能兼備。安全
執行效率 execution speed: C/C++ > Java > PHP 開發效率 developing efficiency: PHP > Java > C/C++網絡
谷歌的「20%時間」工做方式,容許工程師拿出20%的時間來研究本身喜歡的項目。語音服務Google Now、谷歌新聞Google News、谷歌地圖Google Map上的交通訊息等,全都是20%時間的產物。session
Go語言最開始也是20%時間的產物。併發
Go的三個做者分別是: Rob Pike(羅伯.派克),Ken Thompson(肯.湯普森)和Robert Griesemer(羅伯特.格利茨默) 。
Rob Pike:曾是貝爾實驗室(Bell Labs)的Unix團隊,和Plan 9操做系統計劃的成員。他與Thompson共事多年,並共創出普遍使用的UTF-8 字元編碼。
Ken Thompson:主要是B語言、C語言的做者、Unix之父。1983年圖靈獎(Turing Award)和1998年美國國家技術獎(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創者。Thompson也發明了後來衍生出C語言的B程序語言。
Robert Griesemer:在開發Go以前是Google V八、Chubby和HotSpot JVM的主要貢獻者。
此外還有Plan 9開發者Russ Cox、和曾改善目前普遍使用之開原碼編譯器GCC的Ian Taylor。
這是一封由 Rob Pike 在 2007 年 9 月 25 號,星期二,下午 3:12 回覆給 Robert Griesemer、Ken Thompson 的有關編程語言討論主題的郵件,郵件正文大意爲:在開車回家的路上我獲得了些靈感。1.給這門編程語言取名爲「go」,它很簡短,易書寫。工具類能夠命名爲:goc、 gol、goa。交互式的調試工具也能夠直接命名爲「go」。語言文件後綴名爲 .go 等等
這就是 Go 語言名字的來源,自此以後 Robert、Rob 和 Ken 三我的開始在 Google 內部進行了研發,一直到了 2009 年,Go 正式開源了,Go 項目團隊將 2009 年 11 月 10 日,即該語言正式對外開源的日字做爲其官方生日。源代碼最初託管在 code.google.com 上,以後幾年才逐步的遷移到 GitHub 上。
第一個事情是在開發設計 Go 語言過程當中的第一個重大驚喜是收到了如下這封郵件:
這是一封由 Ian Lance Taylor 在 2008 年 6月 7 日(星期六)的晚上 7:06 寫給 Robert Griesemer、Rob Pike、 Ken Thompson 的關於 Go gcc 編譯器前端的郵件。郵件正文大意以下:個人同事向我推薦了這個網站 http://…/go_lang.html 。這彷佛是一門頗有趣的編程語言。我爲它寫了一個 gcc 編譯器前端。雖然這個工具仍缺乏不少的功能,但它確實能夠編譯網站上展現的那個素數篩選程序了。
Ian Lance Taylor 的加入以及第二個編譯器 (gcc go) 的實現 在帶來震驚的同時,也伴隨着喜悅。這對 Go 項目來講不只僅是鼓勵,更是一種對可行性的證實。語言的第二次實現對制定語言規範和肯定標準庫的過程相當重要,同時也有助於保證其高可移植性,這也是 Go 語言承諾的一部分。自此以後 Ian Lance Taylor 成爲了設計和實現 Go 語言及其工具的核心人物。
第二件事情是 Russ Cox 在2008年帶着他的語言設計天賦和編程技巧加入了剛成立不久的 Go 團隊。Russ 發現 Go 方法的通用性意味着函數也能擁有本身的方法,這直接促成了 http.HandlerFunc 的實現,這是一個讓 Go 一會兒變得無限可能的特性。Russ 還提出了更多的泛化性的想法,好比 io.Reader 和 io.Writer 接口,奠基了全部 I/O 庫的總體結構。
第三件事情是聘請了安全專家 Adam Langley 幫助 Go 走向 Google 外面的世界。Adam 爲 Go 團隊作了許多不爲外人知曉的工做,包括建立最初的 golang.org 網站以及 build dashboard。不過他最大的貢獻當屬建立了 cryptographic 庫。起先,在咱們中的部分人看來,這個庫不管在規模仍是複雜度上都不成氣候。可是就是這個庫在後期成爲了不少重要的網絡和安全軟件的基礎,而且成爲了 Go 語言開發歷史的關鍵組成部分。許多網絡基礎設施公司,好比 Cloudflare,均重度依賴 Adam 在 Go 項目上的工做,互聯網也因它變得更好。我記得當初 beego 設計的時候,session 模塊設計的時候也獲得了 Adam 的不少建議,所以,就 Go 而言,咱們由衷地感謝 Adam。
第四個事情就是一家叫作 Docker 的公司。就是使用 Go 進行項目開發,並促進了計算機領域的容器行業,進而出現了像 Kubernetes 這樣的項目。如今,咱們徹底能夠說 Go 是容器語言,這是另外一個徹底出乎意料的結果。
除了大名鼎鼎的Docker,徹底用GO實現。業界最爲火爆的容器編排管理系統kubernetes徹底用GO實現。以後的Docker Swarm,徹底用GO實現。除此以外,還有各類有名的項目,如etcd/consul/flannel,七牛雲存儲等等 均使用GO實現。有人說,GO語言之因此出名,是遇上了雲時代。但爲何不能換種說法?也是GO語言促使了雲的發展。
除了雲項目外,還有像今日頭條、UBER這樣的公司,他們也使用GO語言對本身的業務進行了完全的重構。
Go語言是谷歌2009年發佈的第二款開源編程語言(系統開發語言),它是基於編譯、垃圾收集和併發的編程語言。 Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序能夠媲美 C / C++代碼的速度,並且更加安全、支持並行進程。做爲出如今21世紀的語言,其近C的執行性能和近解析型語言的開發效率,以及近乎於完美的編譯速度,已經風靡全球。特別是在雲項目中,大部分都使用了Golang來開發。不得不說,Golang早已深刻人心。而對於一個沒有歷史負擔的新項目,Golang或許就是個不二的選擇。 不少人將Go語言稱爲21世紀的C語言,由於Go不只擁有C的簡潔和性能。並且還很好的提供了21世紀互聯網環境下服務端開發的各類實用特性。被稱爲Go語言之父的羅勃·派克(Rob Pike)就曾說過,你是否贊成Go語言,取決於你是承認少就是多,仍是少就是少(Less is more or less is less)。Go語言的整個設計哲學就是:將簡單、實用體現得淋漓盡致。 現在 Go 已是雲計算編程語言,GO語言背靠Google這棵大樹,又不乏牛人坐鎮,是名副其實的「牛二代」。想象一下:一個只有十幾年發展經歷的編程語言,已經成爲了如此巨大並且正在不斷髮展的行業的主導者,這種成功是每一個人都沒法想象的。