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