Google Go語言的快樂編程因素
Google在今年發(fā)布了一門全新的開源編程語言名為Go語言。Go語言的設(shè)計(jì)最早始于2007年9月,設(shè)計(jì)者包括Robert Griesemer, Rob Pike和Ken Thompson,后來Ian Lance Taylor實(shí)現(xiàn)了基于GCC的go編譯器gccgo,Russ Rox的加入推動了語言和庫的實(shí)際可用性。它于2009年9月被官方正式宣布發(fā)布,兼容Linux和Mac操作系統(tǒng)。
Go是一門富有表達(dá)力的、并發(fā)的、具有垃圾回收功能的編程語言。
用Google的話來說:Go實(shí)驗(yàn)性地將C或者C++語言的性能、安全性與動態(tài)語言如Python的速度結(jié)合起來。代碼的編譯運(yùn)行接近于C,甚至大規(guī)模的二進(jìn)制編譯只需要幾秒鐘。
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的設(shè)計(jì)簡化頭文件的依賴管理,使用輕量級的類型系統(tǒng),類型沒有繼承,支持垃圾收集和并發(fā),從而提供在多核系統(tǒng)上設(shè)計(jì)系統(tǒng)軟件的方案。其他語法上的不同還有:在if和for語句中,Go缺省了括號。
Go是并發(fā)的程序設(shè)計(jì)語言,不同于Limbo,它不提供任何內(nèi)置的安全觀念。Go有一些PI 演算(Pi calculus)的特性如通道傳遞(channel passing)。概括而言Go語言如下:簡單、快速、安全、并發(fā)、快樂編程、開源。
希望Go語言成為支持多進(jìn)程系統(tǒng)編程的優(yōu)秀語言,保持清新和輕量來從事面向?qū)ο蟮拈_發(fā)設(shè)計(jì),同時具備一些很棒的特性如閉包和映射(reflection)。
Go最初的設(shè)計(jì)者簡介:
Robert Griesemer,參與設(shè)計(jì)Chrome瀏覽器中的Javascript執(zhí)行引擎V8,V8采用即時編譯技術(shù)和分代(generational)的stop-the-world垃圾收集機(jī)制;
Rob Pike乃大名鼎鼎的人物,曾在貝爾實(shí)驗(yàn)室工作,是Unix操作系統(tǒng)、Plan9操作系統(tǒng)、Limbo編程語言和UTF-8編碼的主要設(shè)計(jì)者,寫過憤青式的文章Systems Software Research is Irrelevant,還有兩本書The Unix Programming Environment和The Practice of Programming;
Ken Thompson是圖靈獎獲得者,是Unix操作系統(tǒng)、Plan9操作系統(tǒng)、UTF-8編碼和B編程語言(C的前身)的創(chuàng)立者之一。在google,Ken和Robert還設(shè)計(jì)過過用于大規(guī)模數(shù)據(jù)分析的Sawzall語言。
Ian Lance Taylor是GCC社區(qū)的超級活躍人物,是gold連接器和GCC過程間優(yōu)化LTO的主要設(shè)計(jì)者之一,是Zembu公司的創(chuàng)始人之一。