Google釋出go程式語言
Google釋出go程式語言,目前為實驗版本。快速編譯,型別和訪存安全,併發,快樂編碼,開源。
// a simple Helloworld program: hello.go
package main
import "fmt"
func main()
{
fmt.Printf("Hello, iCompiler/n")
}
Go於2007年9月開始設計,主要設計者為Robert Griesemer,Rob Pike和Ken Thompson。後來Ian Lance Taylor實現了基於GCC的go編譯器gccgo。Russ Rox的加入推動了語言和庫的實際可用性。設計團隊相當豪華。
Robert Griesemer參與設計Chrome瀏覽器中的Javascript執行引擎V8,V8採用即時編譯技術和分代(generational)的stop-the-world垃圾收集機制。Rob Pike乃大名鼎鼎的人物,曾在貝爾實驗室工作,是Unix作業系統、Plan9作業系統、Limbo程式語言和UTF-8編碼的主要設計者,寫過憤青式的文章Systems Software Research is Irrelevant,還有兩本書The Unix Programming Environment和The Practice of Programming。Ken Thompson是圖靈獎獲得者,是Unix作業系統、Plan9作業系統、UTF-8編碼和B程式語言(C的前身)的創立者之一。在google,Ken和Robert還設計過過用於大規模資料分析的Sawzall語言。Ian Lance Taylor是GCC社群的超級活躍人物,是gold聯結器和GCC過程間優化LTO的主要設計者之一,是Zembu公司的創始人之一。Russ Rox在MIT的博士論文是關於Xoc編譯器的設計。
高效編譯,高效執行和簡單編碼是開發者的期待。Go是面向系統程式設計的語言,其設計動機基於以下情景。C語言的標頭檔案引起的依賴管理無法進行快速編譯,C++和Java中麻煩的型別系統使得人們更傾向於python和javascript中的動態型別,垃圾收集和並行等基本概念沒有在目前的系統程式語言中得到很好的支援。因此go的設計簡化標頭檔案的依賴管理,使用輕量級的型別系統,型別沒有繼承,支援垃圾收集和併發,從而提供在多核系統上設計系統軟體的方案。在併發支援方面,go提供了儲存模型文件描述原子性,使用sync包支援互斥,基於通訊(而不是共享記憶體)來共享儲存。
為何不通過庫擴充套件已有的語言(比如C和C++)?他們認為C和C++的設計存在太多問題,比如缺乏垃圾收集,標頭檔案巢狀和依賴鏈太長,缺乏併發支援等。目前Intel設計的面向資料並行的Ct程式設計系統是通過擴充套件C++來實現,Cilk++是通過擴充套件c/c++實現。歡迎感興趣的讀者探討!目前Go只是實驗版本,仍有一些開放性的問題,比如是否支援例外和範型。Go Language Design FAQ中有很多關於語言設計權衡的解釋。
對於一個程式語言,開發者重點要關注編譯器(compiler)和執行時(runtime)。Go編譯器支援Linux和Mac OS X兩種作業系統,以及x86-64、x86和ARM三種體系結構。google現在的很多設計都支援ARM,這是因為Android系統的一個重要後端就是ARM。Go編譯器有兩套實現,一個為gc,另一個為使用GCC後端的gccgo。由於go的一些設計者來自Plan9團隊,編譯器的命名也使用了Plan9中的編譯器命名傳統,比如6g是x86-64上的編譯器,8g是386上的編譯器,5g是ARM上的編譯器。他們曾經考慮使用LLVM編譯器來實現go,由於大且慢,無法滿足效能目標而放棄。他們特別強調go是一個實現編譯器的好語言!Go執行時包括mark-and-sweep垃圾回收器,陣列和字串分片支援,段式棧支援,和go函式庫實現。目前gccgo所帶的執行時基於glibc實現,不支援段式棧管理和垃圾回收,由於棧大小固定,因此一次能建立的go函式數量受限。gc的編譯速度比gccgo快,執行時系統更健壯,但是生成程式碼質量稍微遜色。目前推薦開發者使用gc來玩go。
Let’s go!http://golang.org
6g hello.go 6l hello.6 ./6.out
相關文章
- Go 語言 1.1 版釋出Go
- Google的Go語言速度提升Go
- 全新程式語言V釋出
- Go 語言 Excel 類庫 Excelize 2.0.0 版本釋出GoExcelize
- 支援泛型的Go語言1.18釋出泛型Go
- Go是Google的語言,而不是我們的語言Go
- Go 語言 Excel 文件類庫 excelize 釋出 1.4.1 版本GoExcelize
- Egison 3.5.1 釋出,模式匹配程式語言模式
- Go 語言開發工具 LiteIDE X35 釋出,支援 Go modulesGoIDE
- Excelize 釋出 2.0.1 版本,Go 語言 Excel 文件基礎庫ExcelizeGo
- Excelize 釋出 2.5.0 版本,Go 語言 Excel 文件基礎庫ExcelizeGo
- Excelize 釋出 2.7.1 版本,Go 語言 Excel 文件基礎庫ExcelizeGo
- LiteIDE X31 釋出,Go 語言開發工具IDEGo
- LiteIDE X32.1 釋出,Go 語言開發工具IDEGo
- Go 語言框架 Gin 終於釋出 v1.2 版本Go框架
- LiteIDE X33 釋出,Go 語言開發工具IDEGo
- LiteIDE X32 釋出,Go 語言開發工具IDEGo
- LiteIDE X32.2 釋出,Go 語言開發工具IDEGo
- Go語言開發工具 LiteIDE X27 釋出GoIDE
- Go語言開發工具 LiteIDE X25.1 釋出GoIDE
- TIOBE 釋出 12 月程式語言排行榜,4個程式語言角逐年度語言
- go語言偵錯程式Go
- 使用Go語言構建一個解釋型語言Go
- Go 語言 Excel 文件類庫 excelize 釋出1.4.1版本GoExcelize
- 基於 Web 的 Go 語言 IDE - Wide 1.5.2 釋出!WebGoIDE
- LiteIDE X30.3 釋出,Go 語言開發工具IDEGo
- LiteIDE X33.1 釋出,Go 語言開發工具IDEGo
- 函數語言程式設計語言 Elixir 1.0 正式版釋出函數程式設計
- 這是一個程式語言的釋出貼
- Xcode 6 beta 釋出,支援Swift程式語言XCodeSwift
- Go語言————1、初識GO語言Go
- Go語言(1)——程式結構Go
- Excelize釋出2.0.1版本,Go語言Excel文件基礎庫ExcelizeGo
- 程式語言註釋大法
- TIOBE釋出年度程式語言,JavaScript成最大贏家JavaScript
- Nim 0.10.2 釋出,指令式程式設計語言程式設計
- GO語言Go
- Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go