這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
其中包含GO語言基礎教程,和開發工具。
http://pan.baidu.com/s/1eQ1fd3W
1簡介
Go語言是Google推出的一種全新的程式設計語言,可以在不損失應用程式效能的情況下降低代碼的複雜性。Google首席軟體工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟體開發的難度令人沮喪。Go是Google2009發布的第二款程式設計語言。2009年7月份,Google曾發布了Simple語言,它是用來開發Android應用的一種BASIC語言.北京時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。該獎項授予在2009年市場份額增長最多的程式設計語言。Google資深軟體工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發效率。”派克表示,今天的C++或C一樣,Go是一種系統語言。他解釋道,“使用它可以進行快速開發,同時它還是一個真正的編譯語言,我們之所以現在將其開源,原因是我們認為它已經非常有用和強大。”2007年,Google把Go作為一個20%項目開始研發,即讓員工抽出本職工作之外時間的20%, 投入在該項目上。除了派克外,該項目的成員還其它一些Google工程師。派克表示,編譯後Go代碼的運行速度與C語言非常接近,而且編譯速度非常快,就像在使用一個互動式語言。現有程式設計語言均未專門對多核處理器進行最佳化。Go就是Google工程師為這類程式編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是非常困難。Go支援物件導向,而且具有真正的封裝(closures)和反射 (reflection)等功能。在學習曲線方面,派克認為Go與Java類似,對於Java開發人員來說,應該能夠輕鬆學會 Go。之所以將Go作為一個開源項目發布,目的是讓開源社區有機會建立更好的工具來使用該語言,例如 Eclipse IDE中的外掛程式。在Google公開發布的所有網路應用中,均沒有使用Go,但是Google已經使用該語言開發了幾個內部項目。派克表示,Go是否會對Google即將推出的Chrome OS產生影響,還言之尚早,不過Go的確可以和Native Client配合使用。他表示“Go可以讓應用完美的運行在瀏覽器內。”例如,使用Go可以更高效的實現Wave,無論是在前端還是後台。Go 同時具有兩種編譯器,一種是建立在GCC基礎上的Gccgo,另外一種是分別針對64位x64和32位x86電腦的一套編譯器(6g和8g)。Google目前正在研發其對ARM晶片和Android裝置的支援。派克表示,“Android手機存在的問題是,我們一直沒有一個數學副處理器。”
2目標
Go的目標是希望提升現有程式設計語言對程式庫等依賴性(dependency)的管理,這些軟體元素會被應用程式反覆調用。由於存在並行編程模式,因此這一語言也被設計用來解決多處理器的任務。Google大約2007年開始開發Go,並於2008年投入了一組全職員工。Google當初將該語言設計為一款系統程式設計語言,可以被用於網路伺服器、儲存系統和資料庫中。但是Google認為,該語言還有望被用於其它領域。
3應用
由於Go尚未成熟,因此Google旗下App Engine和其他部分產品已經開始使用go語言來編寫。正因如此,Google才需要外部編程人員的協助。派克說:我們需要更好的程式庫和工具,而開源社區能夠在這些方面為我們提供很大的協助。通過建立新的程式設計語言,Google將繼續拓展計算領域的各個方面,從而促進這些領域的發展。這同樣也是Google開發Android作業系統、Chrome瀏覽器和Chrome OS的動機所在。
4功能
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說:我不認為我們能取代任何東西。我們只是創造出這個領域的另一個角色。
5特色
簡潔 快速 安全並行 有趣 開源,記憶體管理,數組安全,編譯迅速
6團隊成員
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。
7簡史
2007年,Google工程師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正式版發布。 [7]2013年9月20日,Go語言Go 1.2RC1版發布。[8]
8支援平台
硬體架構
Go語言設計支援主流的32位和64位的x86平台,同時也支援32位的ARM架構。
作業系統
Go語言在Go1版本上支援Windows, 蘋果Mac OS X, Linux和FreeBSD作業系統。[9]
9開發工具
LiteIDE
LiteIDE是一款專門為Go語言開發的跨平台輕量級整合式開發環境(IDE),由visualfc編寫。
LiteIDE主要特點:
- 支援主流作業系統WindowsLinuxMacOS X
- Go編譯環境管理和切換管理和切換多個Go編譯環境支援Go語言交叉編譯
- 與Go標準一致的專案管理方式基於GOPATH的包瀏覽器基於GOPATH的編譯系統基於GOPATH的Api文檔檢索
- Go語言的編輯支援類瀏覽器和大綱顯示Gocode(代碼自動完成工具)的完美支援Go語言文檔查看和Api快速檢索代碼錶達式資訊顯示F1原始碼定義跳轉支援F2Gdb斷點和調試支援gofmt自動格式化支援
- 其他特徵支援多國語言介面顯示完全外掛程式體繫結構支援編輯器色彩配置基於Kate的文法顯示支援基於全文的單詞自動完成支援鍵盤快速鍵綁定方案Markdown文檔編輯支援即時預覽和同步顯示自訂CSS顯示可匯出HTML和PDF文檔批量轉換/合并為HTML/PDF文檔
Sublime Text
Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。其
優點有:
- 自動化提示代碼。
- 儲存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。
- 支援專案管理
- 支援文法高亮[10]
Vim
Vim是從vi發展出來的一個文字編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用。
Emacs
Emacs傳說中的神器,她不僅僅是一個編輯器,它是一個整合環境,或可稱它為整合式開發環境,這些功能如讓使用者置身於全功能的作業系統中。
Eclipse
Eclipse也是非常常用的開發利器,可以使用Eclipse來編寫Go程式。
IntelliJ IDEA
熟悉Java的讀者應該對於idea不陌生,idea是通過一個外掛程式來支援go語言的高亮文法,代碼提示和重構實現。[11]