新學一門語言,你們都想先弄清楚爲何要學它?玩知乎一段時間更是讓我感覺深入,諸如php
之類問題常常出如今眼前。之前學語言時倒沒怎麼關心過這類問題。今年公司因爲新業務須要開始全面從PHP轉型到Golang。因此我學習它也就是爲了工資。額?不能這麼俗氣,仍是具體想一想本身爲何要學習Golang吧。python
做爲一名golang新人,在寫這篇文章時我搜羅到很多golang的優秀資料,在文章最後分享出來。nginx
趨勢如此,這應該是多數朋友開始學習它的緣由。追漲殺跌,這是大多數人喜歡的操做手法。git
何以證實這個趨勢呢?es6
首先,個人親生經歷是聽到看到golang這個詞的頻率愈來愈高,不過,這個太難量化了。來介紹一款工具,google trend,即google趨勢。它是google利用自身優點,經過對搜索關鍵詞進行統計分析,根據單詞頻率分析特定時期某類事物發展趨勢的一款分析工具。github
咱們能夠用google趨勢來分析一下近年來golang的發展趨勢,點擊連接。golang
先看看時間線上的表現,歷史的變化趨勢:web
能夠看出,從2015年到2019年golang的發展趨勢一直處在穩定上升階段;redis
不過咱們會想,這隻能說明golang在世界上總體趨勢表現較好,但在中國是否同樣火熱。這個大可沒必要擔憂,google趨勢中也有區域的統計信息:docker
能夠看出,Golang在世界區域的分佈狀況,前五名分別是,中國、新加坡、聖赫勒拿、韓國、香港。其中,Golang在中國的流行程度簡直就是一騎絕塵、遙遙領先。
注:若是想分析中國各城市的表現狀況,能夠點擊地圖就可進入特定國家進行分析。
除了google趨勢,還能夠來看看在TIOBE語言排行榜上的表現。點擊連接
額?怎麼才十六名,好緊張、好難過,難道學錯語言了嗎?不對,得找幾個理由安慰下本身。
Golang是一門很是年輕的語言,僅用十年時間就從世界上數以千計的編程語言中脫穎而出,發展速度迅猛。諸如Java、Python、PHP、Javascript都和我同樣處在了奔三的路上,近30載的發展纔有當前的生態與地位;
Golang在2018年的最好成績曾到達過前十名,這個成績足以說明golang的流行程度。並且排名存在浮動也是很正常的事情,Golang這些年穩步的發展趨勢還不能給咱們足夠的信心嗎?
經過以上的數據分析,咱們獲得了一些結論,不過感受說服力不足,有種空喊口號 "咱們能贏" 的感受。趨勢很好,就認爲穩贏,顯然這是很不合理的。因此,咱們還須要分析一些更層次的緣由。
爲何要了解核心成員呢?核心成員某種意義上是語言的招牌。就像投資,確定選擇相信巴菲特,而不是你。
Golang的核心開發組成員由一羣大神級人物組成。其中,最核心的三人分別是Ken Thompson、Rob Pike、Robert Griesemer。
Robert Griesemer,參與開發了 Java HotSpot 虛擬機和Javascript的Chrome V8引擎;
Ken Thompson,C和B語言的設計者、Unix創始人之一,操做系統Plan 9的主要做者,1983年圖靈獎得主;
Rob Pike,UTF8的主要設計者,與Ken Tompson爲貝爾實驗室的同事,共同參與了Plan9。並且Golang的logo,聽說是囊地鼠,英文gopher,就是Rob Pike的妻子設計的;
都是如此這般牛人坐鎮,可見golang的層次已經高出其餘語言不少個臺階了。
清楚它的產生背景與發展歷史,才能更好了解它的特性與使用場景。
首先,Golang誕生於google。有了大廠庇護,纔好開掛。google曾經一直有個傳統,容許員工自由支配本屬於工做時間的20%來用於創新實踐,這爲google帶來不少開創性的項目,其中就包括Golang。但據說,前幾年該傳統已經被取消了。
Golang早起的討論由前面介紹的三位大牛發起,針對性分析了當時的環境背景。
首先,當時傳統的編程語言一般都會有以下一些缺點:
針對如上的各類狀況,因而在2007年,他們正式開始着手Golang的設計與開發,並在2009年的11月正式發佈。咱們列舉下,接下來一段時間,Golang發展中幾個關鍵節點。
更新迭代速度多,基本保持了每半年更新一個版本;
如此給力的團隊與穩定的版本迭代速度,某種程度也促成了golang快速發展。
各類介紹go的文章講的最多的兩點特性:靜態語言與高併發。可是取交集的話,特性就太少了。介紹細緻些吧,但如此一來,這段就顯得非常無聊,
瞭解golang特性前,可先來看看它的幾個設計原則。在網上搜羅了些資料,總結出大概幾點:
從產生背景咱們能夠知道,Golang在主要針對其餘語言痛點而設計的。它有哪些特性?
那麼多特性,好無聊,不對,應該是好厲害。以前在知乎上看到過有位朋友寫了個十分鐘GO快速入門的文章,挺有趣的,分享出來。看過以後應該對上面這些特性有更直觀的認知。
知乎地址在 GO十分鐘快速入門,代碼在 GO Play 代碼體驗。
已經說了那麼多Golang的牛x之處,但之前出現過的不少語言也都是這麼宣傳的。 語言的目標是用於項目開發,並能打造出不少優秀的產品。那麼,Golang有哪些好像優秀的項目呢?不搜不知道,一搜嚇一跳!列舉一下我收集到的golang開發的優秀項目, 以下:
項目列舉了這麼多,今後也可看出如今不少新項目都在使用Golang開發,涉及到不少領域。
接下來了解下Golang具體擅長哪些領域,若是不適合本身所在行業,暫時就不必去學習了。
當前的兩個主流區塊鏈框架,分佈式記帳本框架hyperledger和以太坊合約框架go-ethereum都是使用Golang開發;下圖是某招聘網站關於區塊鏈職位要求技能的分析。
如今愈來愈多的項目會採用微服務架構,前面介紹的優秀項目中也看到不少go提供的微服務框架,如git-kit、micro等。
舉一些具體公司的例子,好比今日頭條使用Golang構建了千萬級微服務;
雲服務,如國內著名的七牛雲全站採用Golang開發;還有如盛大CDN、阿里雲CDN等;
不少的雲平臺基礎設施如docker、kubernetes等爲Golang開發;
京東的消息推送與分佈式存儲也是如此;
諸如數據庫中間件、代理服務等不少採用Golang開發,好比前面的介紹codis、cockroachdb、etcd等;
不少領域都能看到Golang的影子,諸如直播領域、遊戲開發等等,在其中golang爲後臺的調度系統、任務處理,批量的數據計算、系統監控等提供了各類解決方案。 好比,最近知乎近也使用Golang進行重構了本身的推薦系統。
不少涉及領域就不一一列舉了。反正一句話就是很牛。
說這麼多,主要是爲給本身好好學習找個藉口。接下來分享一些近期收集的Golang學習資料。
Golang官方地址: golang.org,不管學習什麼知識,第一手資料基本都是首發於官網。進入到官網後,會看到不少資源,好比:
等等。
官網是個寶庫,咱們須要認真仔細去挖掘其中的內容;但因爲一些緣由,golang的官方站點咱們沒法訪問,不過golang爲咱們提供了中國的官網,地址:golang.google.cn;
一門語言的發展須要有大批牛人的分享佈道,也須要咱們這些菜鳥學習有更多的參考路徑。這一切都離不開社區。國內外也有不少優秀的go語言社區;
在整理資料時,發現太多優秀的開源項目與書籍,重複工做就不作了,分享幾個別人整理的優秀資源。以下: