新聞中心
Go語(yǔ)言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門語(yǔ)言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和 C/ C++ 等編譯型語(yǔ)言的性能與安全性”。

Go語(yǔ)言是編程語(yǔ)言設(shè)計(jì)的又一次嘗試,是對(duì)類C語(yǔ)言的重大改進(jìn),它不但能讓你訪問(wèn)底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語(yǔ)言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語(yǔ)言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語(yǔ)言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語(yǔ)言開(kāi)發(fā)項(xiàng)目。
Go語(yǔ)言有時(shí)候被描述為“C 類似語(yǔ)言”,或者是“21 世紀(jì)的C語(yǔ)言”。Go 從C語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語(yǔ)言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無(wú)縫適配。
因?yàn)镚o語(yǔ)言沒(méi)有類和繼承的概念,所以它和 Java 或 C++ 看起來(lái)并不相同。但是它通過(guò)接口(interface)的概念來(lái)實(shí)現(xiàn)多態(tài)性。Go語(yǔ)言有一個(gè)清晰易懂的輕量級(jí)類型系統(tǒng),在類型之間也沒(méi)有層級(jí)之說(shuō)。因此可以說(shuō)Go語(yǔ)言是一門混合型的語(yǔ)言。
此外,很多重要的開(kāi)源項(xiàng)目都是使用Go語(yǔ)言開(kāi)發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。
Go語(yǔ)言創(chuàng)始人
對(duì)語(yǔ)言進(jìn)行評(píng)估時(shí),明白設(shè)計(jì)者的動(dòng)機(jī)以及語(yǔ)言要解決的問(wèn)題很重要。Go語(yǔ)言出自 Ken Thompson 和 Rob Pike、Robert Griesemer 之手,他們都是計(jì)算機(jī)科學(xué)領(lǐng)域的重量級(jí)人物。
1) Ken Thompson
貝爾實(shí)驗(yàn)室 Unix 團(tuán)隊(duì)成員,C語(yǔ)言、Unix 和 Plan 9 的創(chuàng)始人之一,在 20 世紀(jì) 70 年代,設(shè)計(jì)并實(shí)現(xiàn)了最初的 UNIX 操作系統(tǒng),僅從這一點(diǎn)說(shuō),他對(duì)計(jì)算機(jī)科學(xué)的貢獻(xiàn)怎么強(qiáng)調(diào)都不過(guò)分。他還與 Rob Pike 合作設(shè)計(jì)了 UTF-8 編碼方案。
2) Rob Pike
Go語(yǔ)言項(xiàng)目總負(fù)責(zé)人,貝爾實(shí)驗(yàn)室 Unix 團(tuán)隊(duì)成員,除幫助設(shè)計(jì) UTF-8 外,還幫助開(kāi)發(fā)了分布式多用戶操作系統(tǒng) Plan 9、Inferno 操作系統(tǒng)和 Limbo 編程語(yǔ)言,并與人合著了《The Unix Programming Environment》,對(duì) UNIX 的設(shè)計(jì)理念做了正統(tǒng)的闡述。
3) Robert Griesemer
就職于 Google,參與開(kāi)發(fā) Java HotSpot 虛擬機(jī),對(duì)語(yǔ)言設(shè)計(jì)有深入的認(rèn)識(shí),并負(fù)責(zé) Chrome 瀏覽器和 Node.js 使用的 Google V8 JavaScript 引擎的代碼生成部分。
這些計(jì)算機(jī)科學(xué)領(lǐng)城的重量級(jí)人物設(shè)計(jì)Go語(yǔ)言的初衷是滿足 Google 的需求。設(shè)計(jì)此語(yǔ)言花費(fèi)了兩年的時(shí)間,融入了整個(gè)團(tuán)隊(duì)多年的經(jīng)驗(yàn)及對(duì)編程語(yǔ)言設(shè)計(jì)的深入認(rèn)識(shí)。設(shè)計(jì)團(tuán)隊(duì)借鑒了 Pascal、Oberon 和C語(yǔ)言的設(shè)計(jì)智慧,同時(shí)讓Go語(yǔ)言具備動(dòng)態(tài)語(yǔ)言的便利性。因此,Go語(yǔ)言體現(xiàn)了經(jīng)驗(yàn)豐富的計(jì)算機(jī)科學(xué)家的語(yǔ)言設(shè)計(jì)理念,是為全球大的互聯(lián)網(wǎng)公司之一設(shè)計(jì)的。
Go語(yǔ)言的所有設(shè)計(jì)者都說(shuō),設(shè)計(jì)Go語(yǔ)言是因?yàn)?C++ 給他們帶來(lái)了挫敗感。在 Google I/O 2012 的 Go 設(shè)計(jì)小組見(jiàn)面會(huì)上,Rob Pike 是這樣說(shuō)的:
我們做了大量的 C++ 開(kāi)發(fā),厭煩了等待編譯完成,盡管這是玩笑,但在很大程度上來(lái)說(shuō)也是事實(shí)。
Go 是編譯型語(yǔ)言
Go 使用編譯器來(lái)編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
- 使用文本編輯器創(chuàng)建 Go 程序;
- 保存文件;
- 編譯程序;
- 運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語(yǔ)言,它們不包含編譯步驟。Go 自帶了編譯器,因此無(wú)須單獨(dú)安裝編譯器。
為什么要學(xué)習(xí)Go語(yǔ)言
如果你要?jiǎng)?chuàng)建系統(tǒng)程序,或者基于網(wǎng)絡(luò)的程序,Go語(yǔ)言是很不錯(cuò)的選擇。作為一種相對(duì)較新的語(yǔ)言,它是由經(jīng)驗(yàn)豐富且受人尊敬的計(jì)算機(jī)科學(xué)家設(shè)計(jì)的,旨在應(yīng)對(duì)創(chuàng)建大型并發(fā)網(wǎng)絡(luò)程序面臨的挑戰(zhàn)。
在Go語(yǔ)言出現(xiàn)之前,開(kāi)發(fā)者們總是面臨非常艱難的抉擇,究竟是使用執(zhí)行速度快但是編譯速度并不理想的語(yǔ)言(如:C++),還是使用編譯速度較快但執(zhí)行效率不佳的語(yǔ)言(如:.NET、Java),或者說(shuō)開(kāi)發(fā)難度較低但執(zhí)行速度一般的動(dòng)態(tài)語(yǔ)言呢?顯然,Go語(yǔ)言在這 3 個(gè)條件之間做到了最佳的平衡:快速編譯,高效執(zhí)行,易于開(kāi)發(fā)。
Go語(yǔ)言支持交叉編譯,比如說(shuō)你可以在運(yùn)行 Linux 系統(tǒng)的計(jì)算機(jī)上開(kāi)發(fā)可以在 Windows 上運(yùn)行的應(yīng)用程序。這是第一門完全支持 UTF-8 的編程語(yǔ)言,這不僅體現(xiàn)在它可以處理使用 UTF-8 編碼的字符串,就連它的源碼文件格式都是使用的 UTF-8 編碼。Go語(yǔ)言做到了真正的國(guó)際化!
Go語(yǔ)言吉祥物
Go語(yǔ)言有一個(gè)吉祥物,在會(huì)議、文檔頁(yè)面和博文中,大多會(huì)包含下圖所示的 Go Gopher,這是才華橫溢的插畫家 Renee French 設(shè)計(jì)的,她也是 Go 設(shè)計(jì)者之一 Rob Pike 的妻子。
網(wǎng)頁(yè)標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語(yǔ)言簡(jiǎn)介
文章轉(zhuǎn)載:http://www.fisionsoft.com.cn/article/cosogsd.html


咨詢
建站咨詢
