我是一名go吹?

lightTrace發表於2019-01-17

從效能上,依照公開的 benchmark,Golang 和 Java、Scala 大概在一個量級,是 Python 的 30 倍左右。其次 Golang 的編譯速度較快,這點相對於 Java、Scala 具有比較明顯的優勢,再次其語言特性決定了 Golang 的開發效率較高,此外因為缺乏 trycatch 機制,使得使用 Golang 開發時對異常處理思考較多,因此其上線之後維護成本相對較低。但 Golang 有個明顯缺陷就是目前第三方庫較少,特別跟 AI 相關的庫。
這四種語言我最近都使用過,最喜歡的還是golang,當然它的槽點非常多,比如糟糕的包管理工具(不知道最新的包管理工具是不是有所改善),缺失的泛型設計(go2.0要加入?),到處都是的if err!=nil處理(這裡沒有try catch機制但是反而讓開發人員必須去關心每個異常以及錯誤),那這麼看來go的缺點變成了優點,哈哈哈,不知不覺成為了一名go吹,go在併發程式設計方面十分的方便,誰用誰快樂,用了go的協程和channel,我再也不想用Java的多執行緒(關鍵字又多程式碼又長,攪得人頭皮發麻),而且交叉編譯讓跨平臺變得非常簡單,部署起來更是沒得說,一臺全新的伺服器,我什麼都不用裝,go build成二進位制檔案,不依賴其他庫、無需執行時環境扔上去就完事了!
Go的併發效能語法優勢之類的,網上已經很多人誇了,這裡說一個比較少人提的優點。Go可以讓不熟悉底層的程式設計師平滑的接觸和深入底層。在一開始只學會Go,掌握基本的語法以及程式設計技巧,比如避免遍歷、避免資料拷貝等,就可以做出很好用的服務端程式了。要進一步追求效能,那就可以挖開Go的原始碼,看其內部實現,再配合Go提供的pprof工具分析專案。Go的程式碼很清晰,分析工具也很好用,到了這個階段你就不再需要聽別人說哪個好哪個不好了,你自己會有自己判斷的。Go提供一個功能叫cgo,可以讓Go快速的對接C/C++寫的庫,可以從cgo去逐漸熟悉C/C++的,比較奇葩的學習路線,但是學習曲線不會那麼陡峭,一邊學就可以一邊產出程式碼見到成效。當時google產生goalng的context就是為了解決c/c++能做出來但輪子比較少或者造起來比較難的情況。選了Go就相當於選了一條比較平緩的路線,但是不管用什麼語言或技術做服務端,每個路徑肯定都是指向系統底層的,就看怎麼走而已。

當然做服務端開發還是得越做越往底層走的,底層的技術搞懂了,語言之前的區別就只是招人難不難,用起來開不開心的問題而已!
附類比圖一張:
在這裡插入圖片描述

相關文章