為什麼這篇Golang 優勢鄉民發文收入到精華區:因為在Golang 優勢這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者life1347 (黑人)看板Soft_Job標題Re: [請益] 台灣golang的現況與未來...
小弟目前在公司負責架構設計及技術導入
由於產品是廣告投放平台
能不能在短時間內快速響應使用者請求是很關鍵的因素
先前產品是由 Scala + Nodejs 所開發
後續選擇 Go 重新開發的原因主要會從幾個面向下去思考
1. 效能
Go 的 benchmark 有很多人做過就不多提
但關鍵的一點是你不必到「非常精通」就能寫出效能還不錯的程式
先前看到文章是底層在運作時
會幫你處理掉許多複雜的東西: goroutine、inlining 等等
建議參考由 Dave Cheney 寫的文章
https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast
該位作者針對 Golang 撰寫許多相當深入的文章
值得參考
2. 上手難度、維護性
Golang 很無聊,保留字很少
不像其他語言有許多 syntax sugar
帶來效益是新手也能夠很快的上手
不會出現新手跟老手程式風格差異很多、效能落差等問題
針對團隊 (不見得是大型,有兩三人共同開發時也算)
由於他實在太無聊,語言層面能玩的花樣很少
(除了 design pattern 要學習以外)
導致每個人開發風格極度類似
是好是壞見仁見智
但團隊要快速開發及方便維護上絕對有其好處
--
以下是小弟在 iTHome Gopherday 演講的投影片,可以參考看看
https://tachingchen.com/tw/blog/From-NodeJs-Scala-to-Go/
裡面有包含在不同產品生命週期選擇不同語言的原因
--
另外,goroutine 算是 Golang 內很重要的東西
goroutine 相對 thread 又更輕量化一點
之間切換執行的代價很低、撰寫上也非常方便
go dummyFunction()
function 前面加上 go 就能異步執行,相當方便
但它並非開免錢的、開不用怕的
Golang GPM 調度模型
是將 G map 到對應的 P 上,然後 P 再對應到 M 上
http://tonybai.com/2017/06/23/an-intro-about-goroutine-scheduler/
因為有大量的 G 被開起來時一定會有等待時間
直到他被放到 P 上然後開始執行
在開啟大量 goroutine 時是有可能產生 bug 的
請參考投影片第13頁
--
最後小小建議
雖然 Golang 近幾年有流行趨勢(大陸用蠻兇的)
不過與其執著於語言是否能賺錢、流行
關注為什麼語言這樣設計、什麼場景該應用何種語言
這些背後的思考過程及結論
可能會替職涯發展帶來更多的效益 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.32.131
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1502524097.A.EC8.html