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
→
08/12 15:54, , 1F
08/12 15:54, 1F
推
08/12 17:49, , 2F
08/12 17:49, 2F
推
08/12 22:25, , 3F
08/12 22:25, 3F
推
08/12 23:30, , 4F
08/12 23:30, 4F
推
08/12 23:57, , 5F
08/12 23:57, 5F
→
08/13 00:00, , 6F
08/13 00:00, 6F
→
08/13 00:01, , 7F
08/13 00:01, 7F
推
08/13 15:51, , 8F
08/13 15:51, 8F
推
08/13 23:05, , 9F
08/13 23:05, 9F
→
08/13 23:10, , 10F
08/13 23:10, 10F
推
08/14 22:45, , 11F
08/14 22:45, 11F
推
08/16 15:43, , 12F
08/16 15:43, 12F
推
08/16 15:48, , 13F
08/16 15:48, 13F
推
08/21 15:32, , 14F
08/21 15:32, 14F
推
08/21 19:16, , 15F
08/21 19:16, 15F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):
請益
13
53