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




























