Go語言

 

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 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主要特色:
  1. 支持主流操做系統
    Windows
    Linux
    MacOS X
  2. Go編譯環境管理和切換
    管理和切換多個Go編譯環境
    支持Go語言交叉編譯
  3. 與Go標準一致的項目管理方式
    基於GOPATH的包瀏覽器
    基於GOPATH的編譯系統
    基於GOPATH的Api文檔檢索
  4. Go語言的編輯支持
    類瀏覽器和大綱顯示
    Gocode(代碼自動完成工具)的完美支持
    Go語言文檔查看和Api快速檢索
    代碼表達式信息顯示F1
    源代碼定義跳轉支持F2
    Gdb斷點和調試支持
    gofmt自動格式化支持
  5. 其餘特徵
    支持多國語言界面顯示
    徹底插件體系結構
    支持編輯器配色方案
    基於Kate的語法顯示支持
    基於全文的單詞自動完成
    支持鍵盤快捷鍵綁定方案
    Markdown文檔編輯支持
    實時預覽和同步顯示
    自定義CSS顯示
    可導出HTML和PDF文檔
    批量轉換/合併爲HTML/PDF文檔

Sublime Text

Sublime Text 2(如下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優勢有:
  1. 自動化提示代碼。
  2. 保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。
  3. 支持項目管理
  4. 支持語法高亮[16]  
可是如今Sublime Text 2 已經不支持 GoSublime 插件了,可使用Sublime Text 3。

Vim

Vim是從vi發展出來的一個文本編輯器,享有「編輯器之神」的稱號。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。

Emacs

Emacs是由GNU開源組織開發出來的一個文本編輯器,同時更是一個整合環境,曾被人戲稱「一個假裝成編輯器的操做系統」。

Eclipse

Eclipse也是很是經常使用的開發利器,可使用Eclipse來編寫Go程序。

IntelliJ IDEA

熟悉Java的讀者應該對於idea不陌生,idea是經過一個插件來支持go語言的高亮語法,代碼提示和重構實現。[17]  
參考資料
相關文章
相關標籤/搜索