[爆卦]Golang 優勢是什麼?優點缺點精華區懶人包

為什麼這篇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
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

你可能也想看看

搜尋相關網站