Go語言
Go語言-簡介
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中的插件,目前還沒有支持Go的IDE。
在目前Google公開發布的所有網絡應用中,均沒有使用Go。但是Google已經使用該語言開發了幾個內部項目。
派克表示,Go是否會對Google即將推出的Chrome OS產生影響,現在還言之尚早,不過Go的確可以和Native Client配合使用。他表示,“Go可以讓應用完美的運行在瀏覽器內。”例如,使用Go可以更高效的實現Wave,無論是在前端還是后臺。
Go 同時具有兩種編譯器,一種是建立在GCC基礎上的Gccgo,另外一種是分別針對64位x86和32位x86計算機的一套編譯器(6g和8g)。Google目前正在研發其對ARM芯片和Android設備的支持·派克表示,“Android手機存在的問題是,我們一直沒有一個數字協處理器.”
Go語言-目標
Go的目標是希望提升現有編程語言對程序庫等依賴性(dependency)的管理,這些軟件元素會被應用程序反復調用。由于存在并行編程模式,因此這一語言也被設計用來解決多處理器的任務。
Google大約2007年開始開發Go,并于2008年投入了一組全職員工。Google當初將該語言設計為一款系統編程語言,可以被用于網絡服務器、存儲系統和數據庫中。但是Google認為,該語言還有望被用于其它領域。
Go語言-應用
由于Go尚未成熟,因此Google旗下各類面向用戶的服務或應用都沒有采用該語言。正因如此,Google才需要外部編程人員的協助。
派克說:我們需要更好的程序庫和工具,而開源社區能夠在這些方面為我們提供很大的幫助。
通過創建新的編程語言,Google將繼續拓展計算領域的各個方面,從而促進這些領域的發展。這同樣也是Google開發Android操作系統、Chrome瀏覽器和Chrome OS的動機所在。
北京時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。該獎項授予在2009年市場份額增長最多的編程語言。
Go語言-Go團隊成員
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。
Go語言-Go可以干嘛?
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說:我不認為我們能取代任何東西。我們只是創造出這個領域的另一個角色。
Go語言-Go語言的特色
簡潔、快速、安全、并行、有趣、開源 ,支持泛型編程,內存管理,數組安全,編譯迅速。