初探Go語言

GO語言

Go(通常稱爲Golang)是由Google於2009年由Robert Griesemer,Rob Pike和Ken Thompson(C語言作者之一,UNXI創建者)創建的一種編程語言。Go是一個靜態類型、編譯型語言,很像C。具有 存儲器的安全垃圾回收結構輸入CSP式的併發特性。它的編譯器,工具,和源代碼都是免費和開源的。

Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。

誕生背景

設計Go語言是爲了解決當時Google開發遇到的以下這些問題:

  • 大量的C++代碼,同時又引入了Java和Python
  • 成千上萬的工程師
  • 數以萬計行的代碼
  • 分佈式的編譯系統
  • 數百萬的服務器

上面這些問題產生的痛點:

  • 編譯慢
  • 失控的依賴
  • 每個工程師只是用了一個語言裏面的一部分
  • 程序難以維護(可讀性差、文檔不清晰等)
  • 更新的花費越來越長
  • 交叉編譯困難

單純看上面這些問題, 可以看出當時設計Go的目標是爲了消除各種緩慢和笨重、改進各種低效和擴展性。Go是由那些開發大型系統的人設計的,同時也是爲了這些人服務的;它是爲了解決工程上的問題,不是爲了研究語言設計;它還是爲了讓我們的編程變得更舒適和方便。

單純在語言方面,性能好的語言(比如C/C++),沒有很高的開發效率和靈活性;開發效率高的語言(.NET、Python等)又不具備足夠快的性能。 Go語言的誕生在某種意義上也是爲了解決這個問題。

語言特性

  • 垃圾回收
    • 自動回收,不需要開發人員處理,失去了最後的引用的變量將會被銷燬
    • 降低編碼人員工作
  • 支持併發
    • go 操作
    • goroutine 用戶級線程
  • 多返回值
    • 函數的返回值不止一個可以
  • 強調簡單、易學
  • 內存管理和語法簡單
  • 快速編譯
  • 併發支持
  • 靜態類型
  • 部署簡單(go install)
  • 自身就是文檔(通過godoc將代碼中的註釋信息構造成文檔)
  • 開源免費(BSD licensed)

應用場景

它最初的構想是作爲一個系統編程語言,但目前也被用於像Web Server,存儲架構等這類分佈式、高併發系統中。當然也可以用於一般的文字處理和作爲腳本程序。

對於高性能分佈式系統領域而言,Go 語言無疑比大多數其它語言有着更高的開發效率。它提供了海量並行的支持,這對於遊戲服務端的開發而言是再好不過了。

服務器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。

分佈式系統,數據庫代理器等網絡編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用、

內存數據庫,前一段時間google開發的groupcache,couchbase的部分組建

雲平臺,目前國外很多雲平臺在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平臺。

Go的編譯器作爲Native Client被內嵌到Chrome瀏覽器中,可以被Web應用程序用來執行本地代碼;同時Go也可以運行在Intel和ARM的處理器上。

目前已被Google集成到Google APP Engine中,在基於Google App Engine基礎設施的Web應用中也得到了很好的應用。目前GAE中僅支持三種應用程序開發語言:Java、Python和Go。(注:GAE的鏈接)

但不適合應用到對實時性要求很高的系統中,因爲Go的內存模型是基於垃圾回收機制和原子內存分配。

發展未來

但是作爲2009年誕生的一門語言,至今(2018年)已經有九年時間。它的發展並沒有像一個框架那樣迅速鋪展開來,但是藉着Google這顆大樹,市面已經有很多知名公司都在使用這門語言。所以還以有必要了解以下的,主要是體驗一下Go語言的特性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章