-
Go語言是
谷歌2009發佈的第二款開源編程語言。
Go語言專門針對
多處理器系統應用程序的編程進行了優化,使用Go編譯的程序能夠媲美C或C++代碼的速度,並且更加安全、支持並行進程。
-
中文名
-
Go語言
-
外文名
-
The Go Programming Language (Golang)
-
發表時間
-
2009年
-
類 型
-
開源
編程語言
-
公 司
-
谷歌
-
最新版本
-
Go 1.8(2017年02月17日)
Go語言是
谷歌推出的一種全新的編程語言,能夠在不損失應用程序性能的狀況降低低代碼的複雜性。谷歌首席
軟件工程師
羅布派克(Rob Pike)說:咱們之因此開發Go,是由於過去10多年間軟件開發的難度使人沮喪。
Go是谷歌2009發佈的第二款編程語言。2009年7月份,谷歌曾發佈了
Simple語言,它是用來開發Android應用
Go Logo
的一種
BASIC語言.
北京時間2010年1月10日,Go語言摘得了
TIOBE公佈的2009年年度大獎。該獎項授予在2009年市場份額增加最多的編程語言。
谷歌資深軟件工程師
羅布·派克(Rob Pike)表示,「Go讓我體驗到了從未有過的開發效率。」派克表示,和今天的C++或C同樣,Go是一種系統語言。他解釋道,「使用它能夠進行快速開發,同時它仍是一個真正的編譯語言,咱們之因此如今將其開源,緣由是咱們認爲它已經很是有用和強大。」
2007年,谷歌把Go做爲一個20%項目開始研發,即讓員工抽出本職工做以外時間的20%, 投入在該項目上。除了派克外,該項目的成員還有其餘谷歌工程師也參與研發。
派克表示,編譯後Go代碼的運行速度與C語言很是接近,並且編譯速度很是快,就像在使用一個交互式語言。現有編程語言均未專門對
多核處理器進行優化。Go就是
谷歌工程師爲這類程序編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是很是困難。Go支持
面向對象,並且具備真正的閉包(closures)和反射 (reflection)等功能。
在學習曲線方面,派克認爲Go與Java相似,對於Java開發者來講,應該可以輕鬆學會 Go。之因此將Go做爲一個
開源項目發佈,目的是讓開源社區有機會建立更好的工具來使用該語言,例如 Eclipse IDE中的
插件。
在
谷歌
公開發布的全部網絡應用中,均沒有使用Go,可是谷歌已經使用該語言開發了幾個內部項目。派克表示,Go是否會對谷歌即將推出的Chrome OS產生影響,還言之尚早,不過Go的確能夠和Native Client配合使用。他表示「Go可讓應用完美的運行在瀏覽器內。」例如,使用Go能夠更高效的實現Wave,不管是在前端仍是後臺。
Go 同時具備兩種
編譯器,一種是創建在GCC基礎上的Gccgo,另一種是分別針對64位x64和32位x86計算機的一套編譯器(6g和8g)。谷歌目前正在研發其對ARM芯片和Android設備的支持。派克表示,「Android手機存在的問題是,咱們一直沒有一個數學協處理器。」
Go的目標是但願提高現有編程語言對程序庫等依賴性(dependency)的管理,這些軟件元素會被應用程序反覆調用。因爲存在
並行編程模式,所以這一語言也被設計用來解決多處理器的任務。
谷歌大約2007年開始開發Go,並於2008年投入了一組全職員工。谷歌當初將該語言設計爲一款系統編程語言,能夠被用於
網絡服務器、
存儲系統和數據庫中。可是谷歌認爲,該語言還有望被用於其它領域。
雖然Go還沒有成熟,但
谷歌旗下App Engine和其餘部分產品已經開始使用go語言來編寫。正因如此,谷歌才須要外部編程人員的協助。
派克說:咱們須要更好的
程序庫和工具,而開源社區可以在這些方面爲咱們提供很大的幫助。
經過建立新的編程語言,谷歌將繼續拓展計算領域的各個方面,從而促進這些領域的發展。這一樣也是谷歌開發Android操做系統、
Chrome瀏覽器和Chrome OS的動機所在。
Google對Go寄予厚望。其設計是讓軟件充分發揮多核心處理器同步多工的優勢,並可解決
面向對象程序設計的麻煩。它具備現代的程序語言特點,如垃圾回收,幫助
程序設計師處理瑣碎但重要的
內存管理問題。Go的速度也很是快,幾乎和C或C++程序同樣快,且可以快速製做程序。
Go的網站就是用Go所創建,但Google有更大的野心。該軟件是專爲構建
服務器軟件所設計(如Google的Gmail)。Google認爲Go還可應用到其餘領域,包括在瀏覽器內執行軟件,取代JavaScript的角色。
Pike說:它至少在強度上比JavaScript高一級。Google自建
Chrome瀏覽器,部分緣由就是加速JavaScript和網頁表現,而Google已經融合了自己的技術,如Native Client和Gears。
Pike表示,Go另外一項與網絡相關的特點,是服務器和用戶端設備,如PC或手機,能夠分擔工做。所以,使用Go的服務即可輕鬆適應不一樣的用戶端處理性能。
Go也可解決現今的一大挑戰:
多核心處理器。通常電腦程序一般依序執行,一次進行一項工做,但多核心處理器更適合並行處理許多工做。Pike說:咱們自認有足夠的支持,可改善這方面的問題。
Go團隊正在尋求幫助。其中一個重要領域是改善Go可以使用的runtime library。這類library可提供許多工具和功能,加快程序設計的過程。而Go的library還包括許多重要的設計元素,並供應處理同做、垃圾收集和其餘低層雜務的資源。
Go團隊也須要
編譯器方面的協助。Thompson曾爲32位元和64位元x86處理器,及ARM處理器寫過一些編譯器,Taylor也爲GCC編譯器寫過一個Go前端。
儘管Google對Go有很大的野心,該公司也明白,這項計劃沒法徹底取代現有的技術。Pike說:我不認爲咱們能取代任何東西。咱們只是創造出這個領域的另外一個角色。
簡潔 快速 安全
並行 有趣 開源,
Thompson:1983年
圖靈獎(Turing Award)和1998年
美國國家技術獎(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創者。Thompson也發明了後來衍生出C語言的B程序語言。
Pike:曾是
貝爾實驗室(Bell Labs)的Unix團隊,和Plan 9操做系統計劃的成員。他與Thompson共事多年,並共創出普遍使用的UTF-8 字元編碼。
Robert Griesemer:曾協助製做Java的HotSpot
編譯器,和Chrome瀏覽器的JavaScript引擎V8。
此外還有Plan 9開發者Russ Cox、和曾改善已普遍使用之開源碼編譯器GCC的Ian Taylor。
2007年,
谷歌工程師Rob Pike, Ken Thompson和Robert Griesemer開始設計一門全新的語言,這是Go語言的最初原型。[1]
2009年11月10日,Go語言以開放源代碼的方式向全球發佈。[1]
2011年3月16日,Go語言的第一個穩定(stable)版本r56發佈。[2]
2012年3月28日,Go語言的第一個正式版本Go1發佈。[2]
2013年4月04日,Go語言的第一個Go 1.1beta1測試版發佈。[3]
2013年4月08日,Go語言的第二個Go 1.1beta2測試版發佈。[3]
2013年5月02日,Go語言Go 1.1RC1版發佈。[4]
2013年5月07日,Go語言Go 1.1RC2版發佈。[5]
2013年5月09日,Go語言Go 1.1RC3版發佈。 [6]
2013年5月13日,Go語言Go 1.1正式版發佈。
2013年9月20日,Go語言Go 1.2RC1版發佈。[7]
2013年12月1日,Go語言Go 1.2正式版發佈。[8]
2014年6月18日,Go語言Go 1.3版發佈。[9]
2014年12月10日,Go語言Go 1.4版發佈。[10]
2015年8月19日,Go語言Go 1.5版發佈,本次更新中移除了」最後殘餘的C代碼」。[11]
2016年2月17日,Go語言Go 1.6版發佈。[12]
2016年8月15日,Go語言Go 1.7版發佈。[13]
2017年2月17日,Go語言Go 1.8版發佈。[14]
硬件架構
Go語言設計支持主流的32位和64位的x86平臺,同時也支持32位的ARM架構。
操做系統
Go語言在Go1版本上支持Windows, 蘋果Mac OS X, Linux和FreeBSD操做系統。[15]
LiteIDE
LiteIDE是一款專門爲Go語言開發的跨平臺輕量級集成開發環境(IDE),由QT編寫。
LiteIDE主要特色:
-
支持主流操做系統
Windows
Linux
MacOS X
-
Go編譯環境管理和切換
管理和切換多個Go編譯環境
支持Go語言交叉編譯
-
與Go標準一致的項目管理方式
基於GOPATH的包瀏覽器
基於GOPATH的編譯系統
基於GOPATH的Api文檔檢索
-
Go語言的編輯支持
類瀏覽器和大綱顯示
Gocode(代碼自動完成工具)的完美支持
Go語言文檔查看和Api快速檢索
代碼表達式信息顯示F1
源代碼定義跳轉支持F2
Gdb斷點和調試支持
gofmt自動格式化支持
-
其餘特徵
支持多國語言界面顯示
徹底插件體系結構
支持編輯器配色方案
基於Kate的語法顯示支持
基於全文的單詞自動完成
支持鍵盤快捷鍵綁定方案
Markdown文檔編輯支持
實時預覽和同步顯示
自定義CSS顯示
可導出HTML和PDF文檔
批量轉換/合併爲HTML/PDF文檔
Sublime Text
Sublime Text 2(如下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優勢有:
-
自動化提示代碼。
-
保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。
-
支持項目管理
-
可是如今Sublime Text 2 已經不支持 GoSublime 插件了,可使用Sublime Text 3。
Vim
Vim是從vi發展出來的一個文本編輯器,享有「編輯器之神」的稱號。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。
Emacs
Emacs是由GNU開源組織開發出來的一個文本編輯器,同時更是一個整合環境,曾被人戲稱「一個假裝成編輯器的操做系統」。
Eclipse
Eclipse也是很是經常使用的開發利器,可使用Eclipse來編寫Go程序。
IntelliJ IDEA
熟悉Java的讀者應該對於idea不陌生,idea是經過一個插件來支持go語言的高亮語法,代碼提示和重構實現。[17]
-
參考資料
-