看板 Soft_Job 關於我們 聯絡資訊
小弟目前在公司負責架構設計及技術導入 由於產品是廣告投放平台 能不能在短時間內快速響應使用者請求是很關鍵的因素 先前產品是由 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
dreamnook: 還蠻想在golang/nodejs應用環境工作QQ 08/12 15:54
kkk003: 推 08/12 17:49
nurockplayer: 推 08/12 22:25
chiel: 推大大慶 08/12 23:30
ripple0129: 風格相似是優點,降低新進人員的訓練成本 08/12 23:57
life1347: 個人也喜歡風格相近,但有人認為寫起來不像其他語言順手 08/13 00:00
life1347: 為獲取工程面效益,只能說是權衡後的結果 XD 08/13 00:01
ian90911: 推 08/13 15:51
Clain66: golang 的 package management 目前還是很不方便呀 08/13 23:05
life1347: 敝公司使用 glide 管理,也正在等官方的 godep 出現 08/13 23:10
Daidouji: 太強ler8 崇拜你的小粉絲 08/14 22:45
shedoh: 推強者大慶 08/16 15:43
chrome: 推 08/16 15:48
kkdai: Dave Cheney 九月要來台灣喔 08/21 15:32
nochoice: 推推有幸聽到原po現場演講 08/21 19:16