背景介紹
Go語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的複雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟件開發的難度令人沮喪。
Go是谷歌2009發布的第二款編程語言。2009年7月份,谷歌曾發布了Simple語言,它是用來開發Android應的一種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手機存在的問題是,我們一直沒有一個數學協處理器。”
功能
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語言的最初原型。
2009年11月10日,Go語言以開放源代碼的方式向全球發布。
2011年3月16日,Go語言的第一個穩定(stable)版本r56發布。
2012年3月28日,Go語言的第一個正式版本Go1發布。
2013年4月04日,Go語言的第一個Go 1.1beta1測試版發布。
2013年4月08日,Go語言的第二個Go 1.1beta2測試版發布。
2013年5月02日,Go語言Go 1.1RC1版發布。
2013年5月07日,Go語言Go 1.1RC2版發布。
2013年5月09日,Go語言Go 1.1RC3版發布。
2013年5月13日,Go語言Go 1.1正式版發布。
2013年9月20日,Go語言Go 1.2RC1版發布。
2014年6月19日,Go語言Go 1.3版發布。
2015年8月20日,Go語言Go 1.5版發布,本次更新中移除了”最後殘餘的C代碼”。
支持平台
硬件架構
Go語言設計支持主流的32位和64位的x86平台,同時也支持32位的ARM架構。
操作系統
Go語言在Go1版本上支持Windows,蘋果Mac OS X, Linux和FreeBSD操作系統。
開發工具
LiteIDE
LiteIDE是一款專門為Go語言開發的跨平台輕量級集成開發環境(IDE),由visualfc編寫。
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文檔
SublimeText
Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優點有:
自動化提示代碼。
保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的标準。
支持項目管理
支持語法高亮
Vim
Vim是從vi發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特别豐富,在程序員中被廣泛使用。
Emacs
Emacs傳說中的神器,她不僅僅是一個編輯器,它是一個整合環境,或可稱它為集成開發環境,這些功能如讓使用者置身于全功能的操作系統中。
Eclipse
Eclipse也是非常常用的開發利器,可以使用Eclipse來編寫Go程序。
IntelliJIDEA
熟悉Java的讀者應該對于idea不陌生,idea是通過一個插件來支持go語言的高亮語法,代碼提示和重構實現。



















