本文作者:皓禹
曾任獵豹高階工程師、搜狐社交產品中心服務端負責人,現任區塊鏈創業公司 CTO。文章中,他會詳細介紹自己接觸Golang的經歷,以及Golang語言的優勢。
相信有的同學看到這個標題就猜到我說的是哪個程式語言了,它就是由Google推出的Golang語言,以下是我與Golang的故事。
❶
初識 Golang
我第一次接觸 Golang 是在2014年,當時在獵豹工作,換了一個新的專案組,他們正在把基於 Java 寫的核心業務用 Golang 重構一遍。
也是藉著這個專案的契機,我開始學 Golang 。其實工作之後我一直在用動態語言,而開始用 Golang 這種靜態語言之後,給我的程式設計思想帶來了衝擊和震撼,不誇張的說,有一種開啟了另一扇窗的感覺。
如果你之前寫的是 Java,就能一下感受到 Golang 的優越感了,因為 Golang 的語法更簡潔、有函式式程式設計的特性,又不像 Java 做 OOP 那麼複雜,Golang 實現 OOP 非常輕量,上手更容易,而且 Golang 非常容易的就能使程式擁有併發能力。
因為實現高併發更輕鬆,所以可以減少很多人力資源和伺服器資源,這也是我們團隊使用 Golang 重構的原因。
遺憾的是14年的時候 Golang 的第三方庫不太多,所以我們自己寫了一些第三方庫來用,方便自己用著更順手。
❷
從 Golang 到區塊鏈
回想起來,我現在能到區塊鏈公司做自己喜歡的工作,也和當年下決心把 Golang 啃下來有很大關係。但是當年,我根本就沒想過這些,也沒打算把它當一個吃飯的傢伙。
我只是覺得一個好的程式員不可能只掌握一門語言,而我每年都會為自己制定一個技術學習計劃,當我開始思考什麼最值得學,就會想起看 Golang 程式碼時的那種震撼,既然它能承載那麼大的併發,那它的設計方式是很值得我去學習的,即使我需要去花一些時間成本,我也覺得這是值得付出的。
在15年6月的時候,我跳槽到搜狐工作了。在這做的專案規模更大,所以會直接碰到效能上的問題,而動態語言不太容易解決這些問題。於是我們決定,需要快速業務迭代的用 Python 去寫,需要高併發的技術服務用 Golang 去寫,陸陸續續用 Golang 實現了高併發生成器、推送、長連結服務,還有一部分 API 介面。執行速度更快,也更加節省伺服器成本。
這時候我發現,Golang 的生態環境已經更成熟了,標準庫和第三方庫比以前豐富了很多。不需要再自己重造輪子,可以直接拿來用了。我們專案中用了文字處理的庫、序列化的庫、資料庫連線的庫、高併發 web 框架等等。
這一年,Golang 的社群也開始越來越豐富了,雨痕也開始寫 Go 原始碼解析的學習筆記。雨痕對我的影響很深,也是我敬重的前輩,和他接觸多了之後知道,他從 DOS 時期就開始寫程式碼。所以雨痕會把作業系統層面的東西講解的很深入,如果實踐到一定程度了,發現自己掌握的理論不足以支撐自己繼續往前走了,那很適合回過頭來再深入看底層的這些東西。
把底層知識啃下來之後,我對於程式執行時背後發生的事情都一清二楚。比如我定義了一個變數,呼叫函式的時候該變數是值傳遞好還是取用傳遞好?最後這個值是分配在堆上還是分配在棧上?它是一個什麼情況?這些我都瞭如指掌。
到了2018年,我已經做開發7年了,大公司的工作已經滿足不了我的技術熱情,於是我受邀加入了一家由明星團隊創立的區塊鏈創業公司,站在一個更高的視角去看待技術。
❸
反思:Golang 需要什麼樣的人才
這幾年,使用 Golang 的公司越來越多,BAT、今日頭條、小米、京東、七牛雲、滴滴打車、小米等等。Golang 在中國的影響力僅次於美國,這是在其他任何一門語言中都沒有出現過的事情。
我現在自己也在招人,也和同行交流,大家普遍的一個感覺是:Golang 工程師特別難招。
我覺得最主要的原因是 Golang 的學習門檻比較高,讓很多人望而卻步。市面上的書籍、影片是不少的,但很多人遇到的問題是,看過了書、看過了影片,在真正寫東西的時候,還是發現有一些問題沒法解決,如果對 Golang 的 debug 方式不瞭解、對作業系統不瞭解的話,出現異常時會摸不到頭緒,可能一個知識點就卡在這了,很多人都是在這從入門到放棄的。
所以我現在一般都是自己去培養公司需要的 Golang 人才,潛質不錯的人進來之後,讓他嘗試用 Golang 寫東西,加上我在團隊裡去指導他,讓他逐漸成長為合格的 Golang 工程師。
當然,我一個人能帶的新人是有限的,很多人也不具備這種成長環境。所以當受邀加入網易微專業的 Golang 課程團隊時,我想是不是可以透過這次機會,讓 Golang 這門面向未來的語言的學習門檻再降低一點,讓更多人可以開始使用 Golang 並從中受益。
我不想做教條難啃的課程,讓初學者又痛苦又不知道學了用在哪。所以這次課程的整體風格是更實用的,基礎知識部分全程穿插程式碼實體,實戰部分都是我曾經在公司中做過的專案的濃縮版,盡可能的給學習者還原一個在公司中寫 Golang 專案的環境,在實踐中更深的理解。
為了讓同學們更好的認識golang語言,網易雲課堂為大家準備了三大福利:
Part1
golang入門到進階免費直播課
直播導師
▼
皓禹
Golang開發工程師微專業導師
現任區塊鏈創業公司 CTO
前搜狐社交產品中心服務端負責人
10月18日20:00
直播大綱
▼
一 、go 語言工程師從入門到進階
二 、go 的前景怎麼樣
三 、go語言工程師的X大必備技能
四、技術小白:如何快速從零開始學習go
五、進階提升:初中級 go 語言工程師如何提升能力
六、核心競爭力: 優秀工程師如何打造自己的競爭優勢
Part2
Golang免費體驗課
《2小時快速上手Golang》體驗課
課程簡介
▼
後端最流行的開發語言,相容速度與效能,可零基礎入門,獨立完成程式設計實戰。
課程導師:皓禹
課程大綱
▼
第一章:為什麼學習 Golang
1.1 為什麼學習go
第二章:從零開始用 Golang
2.1 開發環境的安裝與除錯
2.2 Golang 語法快速預覽
第三章:邊用邊學 Golang 基礎語法
3.1 體驗變數
3.2 理解變數
3.3 迴圈
3.4 切片
3.5 函式
第四章:用 Golang 做個小專案
4.1 專案:如何用 Go 實現命令列工具
4.2 專案作業:實現命令列工具的更多功能
Part3
網易內部Golang開發學習資料包
那麼如何獲取以上福利呢?
掃碼加入QQ群
即可領取所有福利
群號:928993707
學習就是對自己最好的投資!