在網路上看到這篇『5 Reasons Why We switched from Python To Go』,先發到自己 Facebook 牆上,引發討論,乾脆整理一篇 Blog 來寫自己的感想,底下五大理由讓該篇作者從 Python 轉到 Go 語言。我會針對前四點來寫心得
- 編譯二進制檔案 (加速部署及跨平台)
- 編譯自動檢查 Static 型態 (你不會把 string 欄位帶入 Integer)
- 效能 (Go 並發跟 Python thread 比起來節省許多資源)
- 不需要 web framework (Go 內建大多數 Library 像是 HTTP, JSON, HTML templating)
- 好用的 IDE (內文提到 Webstorm, PHPStorm) 我推薦用 VSCode
除了第五點外,其他四點個人覺得都是工程師的痛點。
1. It Compiles Into Single Binary
由於現在 Web Application 技術越來越先進,所以造成 CI/CD 流程相對複雜,所以每次只要 commit code,部署 + 測試時間相當久,在 Go 語言可以把前端 Source Code 整個包進去 Go Binary,所以 Production 機器根本不需要安裝任何 Package 就可以進行部署,這省下的時間對於大團隊而言是很可觀的。在 Go 語言只需要一個指令,就可以直接 build 出 binary file (不管是 ARM, Linux, MacOS, Windows) 32 bit or 64 bit
2. Static Type System
這點對團隊來說非常重要,每個人寫 Code 的品質真的差異極大,所以每次寫 Function Test 都要寫如果變數帶數字 1 或字串 1,都要寫測試,在函示內也要進行轉換,免的程式出錯,這點解決了大部份工程師會犯錯的問題,並不是每個工程師寫 Code 都會使用 !==
或 ===
3. Performance!!
效能這點就無庸置疑,直接看這連結 Go 1.10 vs Python 3.6.0
4. You Don’t Need Web Framework For Go
可以先看去年這篇『Why I Don’t Use Go Web Frameworks』,如果想寫 web 服務,要最好的效能,就是不要引用複雜第三方套件,直接用 Go 內建的 Package 最快,當然如果是跟其他語言的 Framework 比起來(像是 Django 或 PHP 的 Laravel),開發速度不會比較快,但是得到的就是好的效能以及上述優勢。