為什麼明星公司會選擇Go作為程式語言
編者按
最近很多人都看到了郝林通過大病籌款平臺輕鬆籌發起籌款的事情,小編受作者所託,感謝開發者們在他生病期間的經濟與精神上的支援和鼓勵。
關於郝林老師的近況及技術專欄的說明
目前郝林病情暫時穩定,並已決定把籌集的 10 萬元捐款退回,接下來將會通過在極客時間寫專欄籌集醫療開支,極客邦科技也將從企業公益基金中拿出 10 萬幫助其治療,如果你喜歡這個專欄,請訂閱並推薦給需要的人,這是對郝林老師最好的鼓勵。
近日,Hacker News 釋出了 2018 年 7 月的程式語言招聘趨勢排行榜,其中,Go 語言已經反超 Java 進入了前三名的行列。從淺綠色的 Go 語言走勢圖可以看出來,企業對於 Go 語言的採用情況在逐年上升。
從公司角度看,許多大廠都已經開始擁抱 Go 語言,包括以 Java 打天下的阿里巴巴,更別提深愛著 Go 語言的滴滴、今日頭條、小米、奇虎 360、京東等明星公司。同時,創業公司諸如輕鬆籌、快手、知乎、探探、美圖、獵豹移動也鍾愛 Go 語言,因為 Go 語言具有入門快、程式庫多、執行迅速等特點,也比較適合快速構建網際網路軟體產品。
說到 Go 語言的應用場景,它基本可以用在所有對於效能有較高要求的系統中,比如分散式系統、網路程式設計、高併發系統、服務端程式設計。目前流行的 Docker、Kubernetes、istio、nsp、etcd 等開源專案都是基於 Go 語言的。
對某種語言的需求也同時意味著人才的需求,2018 年的春招剛剛過去,Go 語言開發工程師的薪水也隨之水漲船高。騰訊、阿里巴巴、今日頭條等熱門公司甚至一度在招聘條件中特別標註了掌握 Go 語言優先考慮的字樣。
對於 Go 語言來說,這樣的火熱程度僅僅是一個開始。去年是 Go 語言的 10 週年,Go 語言之父,Google 大神 Rob Pike 曾在自己的部落格中說道:“Go 已經成為雲端計算時代的標準語言,它已經逐漸成為這個行業的主導者,特別是在中國。”七牛雲 CEO 許式偉就曾一度預測:Go 是網際網路時代的 C 語言。
Go 語言儼然已經成為網際網路時代的 C 語言,它融合了 C 語言的小巧和 Python 語法簡潔的優勢,效能極高,使用 Go 語言實現一套完整的 MVC 開發框架,整合 HTTP Server 的同時,整個框架的核心程式碼不會超過 300 行,從這樣的案例中,你就可以實際感受到 Go 的語言描述效率之高。
2015 年初,我開始幫助公司招聘 Go 程式設計師,我面試過的 Go 程式設計師已經有幾百個,雖然一場面試的交流內容遠不止技術能力這種硬技能,更別提只限於一門程式語言,但就事論事,在所有的應聘者當中,真正掌握 Go 語言基礎知識的比例恐怕超不過 50%,而真正熟悉 Go 語言高階技術的比例也不超過 30%。我們不能因為希望快速掌握一門語言,而忽略了穩紮穩打建立一個牢固知識體系的重要性。
我是從 2012 年底開始關注 Go 語言的,不敢自稱佈道師,但算得上國內比較早期的使用者。我希望通過我多年對 Go 語言的研究、實戰總結、還有大量一線的面試經驗,幫助 Go 語言愛好者以一種比較友好的路徑去精通這門語言,當然在應聘 Go 語言相關崗位的時候,也可以更加遊刃有餘。
我是誰?
我是郝林,是 GoHackers 技術社群發起人,暢銷榜書籍《Go 併發程式設計實戰》的作者,前輕鬆籌大資料負責人。13 年軟體開發從業經驗,做過銀行、電信軟體和網際網路社交產品。從 2012 年底開始關注 Go 語言,對 Go 語言和 Docker 技術都情有獨鍾,是 Go 語言的忠實擁護者。
我希望本專欄能幫助或推動你去做更多的實踐和思考,當然我也會通過先點、後線、再面的方式幫你佔領一個個重要的陣地。別的不敢說,如果你認真地跟我一起走完這個專欄,那麼基本掌握 Go 語言是肯定的。為什麼說基本掌握?因為軟體技術,尤其是程式設計技術,必須經過很多的實踐甚至歷練才能完全掌握,這需要時間而不能速成。不過,專欄裡的幾十篇文章足以成為你學習 Go 語言最重要的敲門磚和墊腳石。
課程介紹
在這個專欄中,我會為你梳理出知識脈絡,把 Go 語言的精華共分成 5 大模組,共 36 篇 精拆細說。
第一模組基礎概念: 講述 Go 語言基礎中的基礎,包括一些基本概念和運作機制。它們都應該是你初識 Go 語言時必須知道的,同時也有助於你理解後面的知識。
第二模組資料型別和語句:Go 語言中的資料型別大都是很有特色的,你只有理解了它們,才能真正玩轉 Go 語言。我將和你一起與探索它們的奧妙。另外,我也會一一揭示怎樣使用各種語法和語句操縱它們。
第三模組 Go 程式的測試: 很多程式設計師總以為測試是另一個團隊的事情,其實不然。單元測試甚至介面測試其實都應該是程式設計師去做的,並且應該受到重視。在 Go 語言中怎樣做好測試這件事?我會跟你說清楚、講明白。
第四模組標準庫的用法: 雖然 Go 語言提供了自己的高效併發程式設計方式,但是同步方法依然不容忽視。這部分還涉及了位元組和字元問題、OS 操控方法和 Web 服務寫法等,這些都是我們在日常工作中很可能會用到的。
第五模組 Go 語言拾遺: 這部分將會講述一些我們使用 Go 語言做軟體專案的過程中很可能會遇到的問題,至少會包含兩篇文章,是附贈給廣大 Go 語言愛好者的。