Go語言

Go語言

Go語言是谷歌2009年發布的第二款開源程式語言。Go語言專門針對多處理器系統應用程式的編程進行了最佳化,使用Go編譯的程式可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。台北時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。Go語言設計支持主流的32位和64位的x86平台,同時也支持32位的ARM架構。谷歌資深軟體工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發效率。2013年5月07日,Go語言Go 1.1RC2版發布。Vim是從vi發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。

基本信息

背景介紹

Go語言是谷歌推出的一種全新的程式語言,可以在不損失套用程式性能的情況下降低代碼的複雜性。谷歌首席軟體工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟體開發的難度令人沮喪。

Go語言Go語言

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手機存在的問題是,我們一直沒有一個數學協處理器。”

目標

Go的目標是希望提升現有程式語言對程式庫等依賴性(dependency)的管理,這些軟體元素會被應用程式反覆調用。由於存在並行編程模式,因此這一語言也被設計用來解決多處理器的任務。

谷歌大約2007年開始開發Go,並於2008年投入了一組全職員工。谷歌當初將該語言設計為一款系統程式語言,可以被用於網路伺服器、存儲系統和資料庫中。但是谷歌認為,該語言還有望被用於其它領域。

套用

雖然Go尚未成熟,但谷歌旗下AppEngine和其他部分產品已經開始使用go語言來編寫。正因如此,谷歌才需要外部編程人員的協助。

派克說:我們需要更好的程式庫和工具,而開源社區能夠在這些方面為我們提供很大的幫助。

通過創建新的程式語言,谷歌將繼續拓展計算領域的各個方面,從而促進這些領域的發展。這同樣也是谷歌開發Android作業系統、Chrome瀏覽器和ChromeOS的動機所在。

功能

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主要特點:

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文檔

SublimeText

SublimeText3(以下簡稱Sublime)+GoSublime+gocode+MarGo的組合。
其優點有:
1.自動化提示代碼
2.保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。
3.支持項目管理
4.支持語法高亮
Vim是從vi發展出來的一個文本編輯器,享有“編輯器之神”的稱號。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。
Emacs是由GNU開源組織開發出來的一個文本編輯器,同時更是一個整合環境,曾被人戲稱“一個偽裝成編輯器的作業系統”。
Eclipse也是非常常用的開發利器,可以使用Eclipse來編寫Go程式。
Goland是專門針對Go語言的集成開發環境,目前已成為付費軟體。
Goland主要特點:
1.支持主流作業系統
作業系統 安裝包後綴
Windows .msi
Linux .tar.gz
macOS .pkg
FreeBSD .tar.gz

2.Go編譯環境管理和切換

管理和切換多個Go編譯環境
支持Go語言交叉編譯
3.其他特徵
最新版支持Go1.9,支持類型別名
語法高亮顯示
片段中內嵌的C語法高亮顯示
與Go標準一致的項目管理方式
gofmt、goimports自動格式化支持
代碼自動完成、重構
大綱顯示
原始碼跳轉
快速API檢索
代碼表達式信息顯示
斷點調試支持(支持運行到游標、條件斷點等)
使用Delve進行遠程調試
支持Docker容器的遠程調試
參數名稱顯示
編輯器樣式風格調整
鍵盤快捷鍵自定義配置
Markdown支持(外掛程式)
安裝外掛程式實現更多功能

Vim

Vim是從vi發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。

Emacs

Emacs傳說中的神器,她不僅僅是一個編輯器,它是一個整合環境,或可稱它為集成開發環境,這些功能如讓使用者置身於全功能的作業系統中。

Eclipse

Eclipse也是非常常用的開發利器,可以使用Eclipse來編寫Go程式。

IntelliJIDEA

熟悉Java的讀者應該對於idea不陌生,idea是通過一個外掛程式來支持go語言的高亮語法,代碼提示和重構實現。

關於GO程式語言

Go程式語言是一個開源項目,其目的是提高開發人員的生產效率。Go語言的特點是表達力強、簡明、整潔和高效。可以使用它的並發機制輕易地編寫運行在多核或網路計算機上的程式,其新型的類型系統使程式的構建變得更加靈活和模組化。Go程式能快速地被編譯為機器碼,並且具有垃圾回收和運行時反射功能。它是一個快速的、靜態類型的、編譯型的語言,但使用起來卻像一個動態類型的、解釋型的語言。

示例

基本入門

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 packagemain import ( "fmt" ) funcmain(){ var( a,b,cint array[]int ) fmt. Println ( "HelloWorld." ) a=2 b=3 fmt. Println (a+b) fmt. Println (a-b) fmt. Println (a*b) fmt. Println (a/b) //數組append fori:=0;i<10;i++{ array=append(array,a) } fmt. Println ( "array:%v" ,array) }

相關詞條

相關搜尋

熱門詞條

聯絡我們