Google Go語言的快樂編程因素
Google在今年發布了一門全新的開源編程語言名為Go語言。Go語言的設計最早始于2007年9月,設計者包括Robert Griesemer, Rob Pike和Ken Thompson,后來Ian Lance Taylor實現了基于GCC的go編譯器gccgo,Russ Rox的加入推動了語言和庫的實際可用性。它于2009年9月被官方正式宣布發布,兼容Linux和Mac操作系統。
Go是一門富有表達力的、并發的、具有垃圾回收功能的編程語言。
用Google的話來說:Go實驗性地將C或者C++語言的性能、安全性與動態語言如Python的速度結合起來。代碼的編譯運行接近于C,甚至大規模的二進制編譯只需要幾秒鐘。
Go中不包含的特性有:
1. 異常處理(Exception handling)
2. 類型繼承(Type inheritance)
3. 泛型編程(Generic programming)
4. 斷言功能(Assertions)
5. 方法重載(Method Overloading)
讓我們來看一下Go語言的Hello World
- package main
- import fmt fmt // Package implementing formatted I/O.
- func main()
- {
- fmt.Printf(Hello world\n);
- }
#T#除了斷言類型(declarations type)之外,Go語言的語法與C語言的非常相似。但是Go的設計簡化頭文件的依賴管理,使用輕量級的類型系統,類型沒有繼承,支持垃圾收集和并發,從而提供在多核系統上設計系統軟件的方案。其他語法上的不同還有:在if和for語句中,Go缺省了括號。
Go是并發的程序設計語言,不同于Limbo,它不提供任何內置的安全觀念。Go有一些PI 演算(Pi calculus)的特性如通道傳遞(channel passing)。概括而言Go語言如下:簡單、快速、安全、并發、快樂編程、開源。
希望Go語言成為支持多進程系統編程的優秀語言,保持清新和輕量來從事面向對象的開發設計,同時具備一些很棒的特性如閉包和映射(reflection)。
Go最初的設計者簡介:
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公司的創始人之一。