為什么需要Go這樣一個(gè)新編程語(yǔ)言?
Go語(yǔ)言最早并不是一個(gè)Google的正式項(xiàng)目,而是作為一個(gè)“20%”的項(xiàng)目出現(xiàn),直到2009年才以開(kāi)源的方式面向大眾,目前Go Team有穩(wěn)定的發(fā)布周期,大約半年一個(gè)新的版本,目前***為1.9版本。
Go語(yǔ)言的出身可以說(shuō)是非常豪華的,最早對(duì)Go語(yǔ)言的討論是由羅伯特·格瑞史莫、羅伯·派克和肯·湯普遜發(fā)起的,主要是為了解決C++中出現(xiàn)的問(wèn)題而發(fā)起的項(xiàng)目???middot;湯普遜是C語(yǔ)言和Unix的***,羅伯特·格瑞史莫參與設(shè)計(jì)了Java的HotSpot虛擬機(jī)和Chrome瀏覽器的JavaScript V8引擎,羅博·派克在大名鼎鼎的Bell Lab任職多年,參與了Plan9操作系統(tǒng)、C編譯器以及多種語(yǔ)言編譯器的設(shè)計(jì)和實(shí)現(xiàn)。
Go語(yǔ)言從2009年開(kāi)源到現(xiàn)在吸引了很多開(kāi)發(fā)者的注意,分別獲得了2009年和2016年的TIOBE之星,如果說(shuō)2009年那一次是因?yàn)镚oogle的影響,那2016年這一次絕對(duì)是自身實(shí)力的厚積薄發(fā),如今已是2017年的下半年,讀者見(jiàn)到本書(shū)會(huì)在18年年初。
在互聯(lián)網(wǎng)蓬勃發(fā)展的今天,越來(lái)越多的編程語(yǔ)言涌入到企業(yè)開(kāi)發(fā)中來(lái)。Go語(yǔ)言作為一個(gè)新生代的編程語(yǔ)言同樣也被開(kāi)發(fā)人員所追捧,但由于Go語(yǔ)言的編程資料很少很多人不知道該如何去入門。即使找到部分資料,但是不夠系統(tǒng)。正所謂知識(shí)來(lái)源于實(shí)踐,本書(shū)追隨由淺入深、系統(tǒng)講解這一本質(zhì)特點(diǎn)帶領(lǐng)讀者真正掌握和運(yùn)用Go語(yǔ)言的程序設(shè)計(jì)特點(diǎn),做到融會(huì)貫通。
傳統(tǒng)的語(yǔ)言如C++,大家花費(fèi)太多時(shí)間來(lái)學(xué)習(xí)如何使用這門語(yǔ)言,而不是如何更好的表達(dá)寫(xiě)作者的思想,同時(shí)編譯花費(fèi)的時(shí)間實(shí)在太長(zhǎng),對(duì)于編寫(xiě)-編譯-運(yùn)行這個(gè)鏈條來(lái)說(shuō)周期太長(zhǎng)。動(dòng)態(tài)語(yǔ)言如Python,由于沒(méi)有強(qiáng)類型的約束,很多問(wèn)題需要在運(yùn)行時(shí)發(fā)現(xiàn),這種低級(jí)錯(cuò)誤更應(yīng)該交給編譯器來(lái)發(fā)現(xiàn)。同時(shí)有如下趨勢(shì):
- 人力成本越來(lái)越高;
- 機(jī)器越來(lái)越便宜;
- 機(jī)器的性能越來(lái)越厲害;
- 在開(kāi)發(fā)效率和運(yùn)行速度上達(dá)到平衡;
這就是Go語(yǔ)言的誕生背景。
Go的哲學(xué)思想
簡(jiǎn)化這門語(yǔ)言必是一門更大的成就 -Rob Pike
Go的思維方式
- 最小心智負(fù)擔(dān)原則;
- 最小特性;
- 最小驚異;
- 最少犯錯(cuò)既會(huì);
Go語(yǔ)言在工程上的設(shè)計(jì)
- Go在工程上的設(shè)計(jì)可謂體貼入微,沒(méi)有依賴地獄,甚至是glibc;
- 編譯一次,隨處拷貝,部署極為方便;
- 交叉編譯只是一個(gè)環(huán)境變量的問(wèn)題;
Go語(yǔ)言的并行和并發(fā)
- 并發(fā)(concurrent)不是并行(parallel)
- 例:node.js具有并發(fā)的能力,但不能充分利用多核
- 寫(xiě)出一個(gè)能充分利用多核的程序需要很深的系統(tǒng)編程積淀
- 得益于優(yōu)秀的設(shè)計(jì),Go可以輕松地寫(xiě)出跑滿所有CPU的程序
Go語(yǔ)言開(kāi)發(fā)的項(xiàng)目
- Docker,火熱的容器化技術(shù);
- Kubernetes,Goole Borg的開(kāi)源實(shí)現(xiàn);
- Etcd, 類似zookeeper的高可用key-value存儲(chǔ);
- TIDB, 國(guó)人開(kāi)發(fā)的Google spanner的開(kāi)源實(shí)現(xiàn);