go 是个好语言

2019-04-08 00:38:09 +08:00
 baojiwei

最近在学 go。

去年 Qcon 听了下 go 语言介绍,很多特性当时听怕了,还是让我觉得有点不习惯。不过实际看了下,其实也还好。 如果能够像 python 一样简单明了,少一些约定,就更好用了。(当然 python 的约定也不少,设计理念也要画不少脑力去想,比如鸭子方法)

感觉很多操作都很需要技巧(这点 py 也是,不过 py 的技巧用的很舒服),需要技巧就需要对语言很熟悉的了解,不像 Java、C#一看看上去就很稳重,不搞事情。

  1. 轮子稍显有点少。不知道看哪些主流轮子。求各位大佬推荐。
  2. 想加入一个 go 的社团。python 的社团很强大(至少在国外是很强大,去年国内的 pycon 开成那个样子,和 python 语言的热度形成鲜明对比)。不知道有没有大佬引进圈子。
  3. 各位大佬有没有好的项目或者轮子推荐一下,我想看着代码学 go。最好是能体现语言特性和设计思路,但是入门难度也不要太大的项目。比如,python 下我就会去看 sentry 或者 celery 或 flask 的源码(吐槽下 celery 的源码,:-()。最好是类似于这种类型的项目,能看到语言本身的特性。

谢谢各位大佬推荐。

9666 次点击
所在节点    Go 编程语言
49 条回复
septvean
2019-04-08 01:19:18 +08:00
secondwtq
2019-04-08 01:28:51 +08:00
我觉得 Go 轮子不少啊,楼主有这种感觉应该是和 Python,Java,JS 比吧
我认为一个编程语言,各方面都有一个能用的轮子,并且生产环境验证过,当你想用的时候能找到,这就基本够了
太多的轮子会增加选择成本,影响新入行的人的学习,加重”派系分化“,说是社区活力的体现,其实同时也体现了社区的不稳定,特别对于比较小众的语言,社区在特定方向上有限的精力被分散在不同的具体项目上,旁观者会发现轮子多而不精(是不是说得有些恐怖了)
你看 JS 都淘汰多少轮子了
AngryPanda
2019-04-08 01:35:23 +08:00
看 go 的标准库源码可以吗
orangeade
2019-04-08 02:57:51 +08:00
go 主要看容器 /微服务那块就行了,
web 开发性价比不高,社区也比不上容器 /微服务 /中间件之类
baojiweicn2
2019-04-08 02:58:14 +08:00
@septvean 这就是很尴尬的地方,我完全赞同 @secondwtq 的观点,只需要一到两个有特色的主流框架就好了,awesome – go 有点略多,新手有点懵
halo117
2019-04-08 03:50:29 +08:00
@secondwtq 至少现在看 go 的 web 框架轮子也多到泛滥,设计风格未必相一致,但目的都是在同一件事而重复造轮子
cxh116
2019-04-08 07:37:46 +08:00
Go 语言的优点,缺点和令人厌恶的设计 https://studygolang.com/articles/12907
jjx
2019-04-08 07:50:21 +08:00
业务上的轮子还是不多

应该是原来用 go 的不涉及具体业务场景

不过随着 go 进入具体的业务场景, 这些轮子应该也会多的吧
baojiweicn2
2019-04-08 08:01:42 +08:00
@cxh116 去年 qcon 听到小哥很热情洋溢的说 exception 在前的设计,并且大概说到"我觉得对的,应该不会改"的时候,被吓到了。但是 go 的性能真的好。
baojiweicn2
2019-04-08 08:05:59 +08:00
@secondwtq 我觉得关于社区的坏处说的也对,但是社区火热也是好的,比如同一个方向大家都造轮子,但是思路上不同,社区能够很快筛选出最合适的最热门的来,比如,python 的 backend,3.6 协程出来的时候,sanic 等异步框架大家都叫好,但是很快使用度就证明了这不是协程使用的正确姿势。包括 tf 和 pytorch 之争也一样。
love
2019-04-08 08:22:14 +08:00
听说 go 用 tab 缩进,我就吓得再也没看一眼
BBCCBB
2019-04-08 08:42:01 +08:00
@love 瞎说,没限制用 tab 还是 space,或者几个 space
tt67wq
2019-04-08 08:43:33 +08:00
你应该找个用 go 的公司,啥社区都不好使,天天用你才知道,这个语言就那么回事
love
2019-04-08 09:00:09 +08:00
@BBCCBB 这个格式社区总是有一个标准的吧,我记得好像是用 tab
baojiweicn2
2019-04-08 09:11:29 +08:00
@tt67wq 等我学完,我就成我司全村的 go2school 的希望了
zeromake
2019-04-08 09:18:47 +08:00
laogui
2019-04-08 09:19:20 +08:00
go 的轮子也超多了,不爽的是大部分轮子都不温不火,想找些第三方包很难判断哪个好,哪个比较稳定。
trys1
2019-04-08 09:31:00 +08:00
@baojiweicn2 我最近在看 python,想请问一下,sanic 如果不是现在协程 web 开发的正确姿势,那么正确姿势是什么?
baojiweicn2
2019-04-08 09:41:17 +08:00
@trys1 sanic 是基于 uvloop 的,很多设计有点奇怪。如果做 web 的话,会选择使用常用框架加 uwsgi 或者 gunicorn,或者 gevent
baojiweicn2
2019-04-08 09:48:48 +08:00
@trys1 sanic 很大的问题在于,完全没有办法魔改框架,因为它自己就是魔鬼[手动捂脸],协程的优势在于阻塞 io 会有性能上的突破(主要是躲开了 gil 大锁),不幸的是 asyncio 的非阻塞 io 框架都比较弱,没有经过生产的检验,比如就没有好的协程 orm。aiohttp 是很好的库。
django 的最新版本已经支持协程了,了解一下。
celery 的 future feature list 里面也已经有了对协程支持了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552802

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX