這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
[編輯本段]
Go語言簡介:
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團隊成員:
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可以幹嘛?
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語言的特色:
簡潔 快速 安全 並行 有趣 開源 支援泛型程式設計,記憶體管理,數組安全,編譯迅速