我是一名go吹?
從效能上,依照公開的 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就相當於選了一條比較平緩的路線,但是不管用什麼語言或技術做服務端,每個路徑肯定都是指向系統底層的,就看怎麼走而已。
當然做服務端開發還是得越做越往底層走的,底層的技術搞懂了,語言之前的區別就只是招人難不難,用起來開不開心的問題而已!
附類比圖一張:
相關文章
- 我是一名程式設計師而且我很蠢程式設計師
- 沒錯,我就是要吹爆AngularAngular
- 網友:Go 你是 Google 的,Go:我不是Go
- 2019最全Python入門學習路線,不是我吹,絕對是最全Python
- 這篇 Java 基礎,我吹不動了Java
- 我是誰?|一名雙非、大齡青年的轉行之路
- 我是一名90後遊戲策劃,今天我被迫主動辭職了(一)遊戲
- 我是如何從 php 轉型寫 go 的PHPGo
- 我是一名遊戲設計師(1):RPG遊戲與英雄之旅遊戲設計師
- 幽默:我們需要一名醫生
- 我是如何成為一名機器學習工程師,並很快找到工作的?機器學習工程師
- Go是Google的語言,而不是我們的語言Go
- 從 PHP 到 Go:我們是如何將 API 速度提升 8 倍PHPGoAPI
- 兩年前不知如何編寫程式碼的我,現在是一名人工智慧工程師人工智慧工程師
- Go 和 Rust 我都要!GoRust
- 一名技術主管應該是創作者
- 我是如何用go-zero 實現一箇中臺系統的Go
- 一名Java開發的Go語言學習筆記(一)JavaGo筆記
- 我們為什麼要做一名系統管理員?
- 吹爆了!程式設計師自學Python,不如9歲小孩,網友:我不信....程式設計師Python
- 我的 Java 轉 Go 之路JavaGo
- 語言是 Go 還是 Golang?Golang
- [水文] 什麼原因讓我成為一名程式設計師程式設計師
- 一名 IT 經理是如何把專案帶崩的?
- 我是MJ
- 我的 Go 演算法之旅Go演算法
- 我是怎麼一步步用go找出壓測效能瓶頸Go
- 我們是如何做 go 語言系統測試覆蓋率收集的?Go
- 1024程式猿節,吹噓下自己
- 再有人吹自己公司的品牌知名度有多高,我就用資料分析打他的臉
- 使用 Go 優化我們的介面Go優化
- 我為什麼從php轉go?PHPGo
- 作為一名Python開發,我談Linux和mac的使用體驗PythonLinuxMac
- HashMap?面試?我是誰?我在哪?HashMap面試
- 我是伊比利亞人,我叫
- 我是一個請求,我是如何被髮送的?
- 『JVM』我不想知道我是怎麼來滴,我就想知道我是怎麼沒滴JVM
- 如何判斷自己是否是一名優秀開發人員?