標籤:log 分享 服務 第一個 font 社區 自己 團隊 面向
Go的發展史
Go 是一個開源的程式設計語言,它能讓構造簡單、可靠且高效的軟體變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發布了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。
當前行業背景
電腦一直在演化,但是程式設計語言並沒有以同樣的速度演化。現在的手機,內建的CPU核心數可能都多於我們使用的第一台電腦。高效能伺服器擁有64核、128核,甚至更多核。但是我們依舊在使用為單核設計的技術在編程。
編程的技術同樣在演化。大部分程式不再由單個開發人員來完成,而是由處於不同時區、不同時間段工作的一組人來完成。大項目被分解為小項目,指派給不同的程式員,程式員開發完成後,再以可以在各個應用程式中交叉使用的庫或者包的形式,提交給整個團隊。
如今的程式員和公司比以往更加信任開源軟體的力量。Go語言是一種讓代碼分享更容易的程式設計語言。Go 語言內建一些工具,讓使用別人寫的包更容易,並且 Go 語言也讓分享自己寫的包更容易。
GO解決現代編程難題
Go語言Team Dev花了很長時間來解決當今軟體開發人員面對的問題。開發人員在為項目選擇語言時,不得不在快速開發和效能之間做出選擇。C和C++這類語言提供了很快的執行速度,而Ruby、PHP和Python這類語言則擅長快速開發。Go語言在這兩者間架起了橋樑,不僅提供了高效能的語言,同時也讓開發更快速。
作為一門語言,Go不僅定義了能做什麼,還定義了不能做什麼。Go語言的文法簡潔到只有幾個關鍵字,便於記憶。Go語言的編譯器速度非常快,有時甚至會讓人感覺不到在編譯。所以,Go開發人員能顯著減少等待項目構建的時間。因為Go語言內建並發機制,所以不用被迫使用特定的線程庫,就能讓軟體擴充,使用更多的資源。Go語言的類型系統簡單且高效,不需要為物件導向開發付出額外的心智,讓開發人員能專註於代碼複用。Go語言還內建記憶體回收行程,不需要使用者自己管理記憶體。讓我們快速探索一下這些關鍵特性(當然,Go的記憶體回收機制還是沒有java語言中的那麼強大,雖然開發人員揚言要趕超JVM記憶體回收機制,那就讓我們拭目以待吧。截止到我發這篇部落格的時間:2017-03-16 22:13:42 版本已經升級到了1.8)
資源充分利用
作為程式員,要開發出能充分利用硬體資源的應用程式是一件很難的事情。現代電腦都擁有多個核,但是大部分程式設計語言都沒有有效工具讓程式可以輕易利用這些資源。這些語言需要寫大量的線程同步代碼來利用多個核,很容易導致錯誤。
Go語言對並發的支援是這門語言最重要的特性之一。goroutine很像線程,但是它佔用的記憶體遠少於線程,使用它需要的代碼更少。通道(channel)是一種內建的資料結構,可以讓使用者在不同的goroutine之間同步發送具有類型的訊息。這讓編程模型更傾向於在goroutine之間發送訊息,而不是讓多個goroutine爭奪同一個資料的使用權。
Go 語言用途
Go 語言被設計成一門應用於搭載 Web 服務器,儲存叢集或類似用途的巨型中央伺服器的系統程式設計語言。
對於高效能分布式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支援,這對於遊戲服務端的開發而言是再好不過了。
第一個Go 程式
接下來我們來編寫所有初學程式必會的列印程式,列印:Hello World!。 hello.go(Go 語言源檔案的擴充是 .go),代碼如下:
package mainimport "fmt"func main() { fmt.Println("Hello, World!")}
以上代碼運行結果如下:
go run hello.goHello, World!
GO_00:GO語言開篇