作者life1347 (黑人)
看板Soft_Job
标题Re: [请益] 台湾golang的现况与未来
时间Sat Aug 12 15:48:12 2017
小弟目前在公司负责架构设计及技术导入
由於产品是广告投放平台
能不能在短时间内快速响应使用者请求是很关键的因素
先前产品是由 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://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1502524097.A.EC8.html
1F:→ dreamnook: 还蛮想在golang/nodejs应用环境工作QQ 08/12 15:54
2F:推 kkk003: 推 08/12 17:49
3F:推 nurockplayer: 推 08/12 22:25
4F:推 chiel: 推大大庆 08/12 23:30
5F:推 ripple0129: 风格相似是优点,降低新进人员的训练成本 08/12 23:57
6F:→ life1347: 个人也喜欢风格相近,但有人认为写起来不像其他语言顺手 08/13 00:00
7F:→ life1347: 为获取工程面效益,只能说是权衡後的结果 XD 08/13 00:01
8F:推 ian90911: 推 08/13 15:51
9F:推 Clain66: golang 的 package management 目前还是很不方便呀 08/13 23:05
10F:→ life1347: 敝公司使用 glide 管理,也正在等官方的 godep 出现 08/13 23:10
11F:推 Daidouji: 太强ler8 崇拜你的小粉丝 08/14 22:45
12F:推 shedoh: 推强者大庆 08/16 15:43
13F:推 chrome: 推 08/16 15:48
14F:推 kkdai: Dave Cheney 九月要来台湾喔 08/21 15:32
15F:推 nochoice: 推推有幸听到原po现场演讲 08/21 19:16