最近在学 go。
去年 Qcon 听了下 go 语言介绍,很多特性当时听怕了,还是让我觉得有点不习惯。不过实际看了下,其实也还好。 如果能够像 python 一样简单明了,少一些约定,就更好用了。(当然 python 的约定也不少,设计理念也要画不少脑力去想,比如鸭子方法)
感觉很多操作都很需要技巧(这点 py 也是,不过 py 的技巧用的很舒服),需要技巧就需要对语言很熟悉的了解,不像 Java、C#一看看上去就很稳重,不搞事情。
谢谢各位大佬推荐。
1
septvean 2019-04-08 01:19:18 +08:00 1
|
2
secondwtq 2019-04-08 01:28:51 +08:00 1
我觉得 Go 轮子不少啊,楼主有这种感觉应该是和 Python,Java,JS 比吧
我认为一个编程语言,各方面都有一个能用的轮子,并且生产环境验证过,当你想用的时候能找到,这就基本够了 太多的轮子会增加选择成本,影响新入行的人的学习,加重”派系分化“,说是社区活力的体现,其实同时也体现了社区的不稳定,特别对于比较小众的语言,社区在特定方向上有限的精力被分散在不同的具体项目上,旁观者会发现轮子多而不精(是不是说得有些恐怖了) 你看 JS 都淘汰多少轮子了 |
3
AngryPanda 2019-04-08 01:35:23 +08:00 via Android
看 go 的标准库源码可以吗
|
4
orangeade 2019-04-08 02:57:51 +08:00 via Android 2
go 主要看容器 /微服务那块就行了,
web 开发性价比不高,社区也比不上容器 /微服务 /中间件之类 |
5
baojiweicn2 2019-04-08 02:58:14 +08:00 via Android
|
6
halo117 2019-04-08 03:50:29 +08:00 via iPhone
@secondwtq 至少现在看 go 的 web 框架轮子也多到泛滥,设计风格未必相一致,但目的都是在同一件事而重复造轮子
|
7
cxh116 2019-04-08 07:37:46 +08:00 via Android 4
Go 语言的优点,缺点和令人厌恶的设计 https://studygolang.com/articles/12907
|
8
jjx 2019-04-08 07:50:21 +08:00
业务上的轮子还是不多
应该是原来用 go 的不涉及具体业务场景 不过随着 go 进入具体的业务场景, 这些轮子应该也会多的吧 |
9
baojiweicn2 2019-04-08 08:01:42 +08:00 via Android
@cxh116 去年 qcon 听到小哥很热情洋溢的说 exception 在前的设计,并且大概说到"我觉得对的,应该不会改"的时候,被吓到了。但是 go 的性能真的好。
|
10
baojiweicn2 2019-04-08 08:05:59 +08:00 via Android
@secondwtq 我觉得关于社区的坏处说的也对,但是社区火热也是好的,比如同一个方向大家都造轮子,但是思路上不同,社区能够很快筛选出最合适的最热门的来,比如,python 的 backend,3.6 协程出来的时候,sanic 等异步框架大家都叫好,但是很快使用度就证明了这不是协程使用的正确姿势。包括 tf 和 pytorch 之争也一样。
|
11
love 2019-04-08 08:22:14 +08:00 via Android 2
听说 go 用 tab 缩进,我就吓得再也没看一眼
|
13
tt67wq 2019-04-08 08:43:33 +08:00 1
你应该找个用 go 的公司,啥社区都不好使,天天用你才知道,这个语言就那么回事
|
15
baojiweicn2 2019-04-08 09:11:29 +08:00 via Android
@tt67wq 等我学完,我就成我司全村的 go2school 的希望了
|
16
zeromake 2019-04-08 09:18:47 +08:00
|
17
laogui 2019-04-08 09:19:20 +08:00 via Android
go 的轮子也超多了,不爽的是大部分轮子都不温不火,想找些第三方包很难判断哪个好,哪个比较稳定。
|
18
trys1 2019-04-08 09:31:00 +08:00 via Android
@baojiweicn2 我最近在看 python,想请问一下,sanic 如果不是现在协程 web 开发的正确姿势,那么正确姿势是什么?
|
19
baojiweicn2 2019-04-08 09:41:17 +08:00 via Android 1
@trys1 sanic 是基于 uvloop 的,很多设计有点奇怪。如果做 web 的话,会选择使用常用框架加 uwsgi 或者 gunicorn,或者 gevent
|
20
baojiweicn2 2019-04-08 09:48:48 +08:00 via Android
@trys1 sanic 很大的问题在于,完全没有办法魔改框架,因为它自己就是魔鬼[手动捂脸],协程的优势在于阻塞 io 会有性能上的突破(主要是躲开了 gil 大锁),不幸的是 asyncio 的非阻塞 io 框架都比较弱,没有经过生产的检验,比如就没有好的协程 orm。aiohttp 是很好的库。
django 的最新版本已经支持协程了,了解一下。 celery 的 future feature list 里面也已经有了对协程支持了。 |
21
Vegetable 2019-04-08 09:53:05 +08:00 1
@trys1 我觉得 sanic 这个姿势没问题.python3 已经发布这么多年了还不是一大票人用 py2?async/await 出来之后大家觉得很棒,但是并不会马上切过去而已.同时 sanic 现在也并不成熟,3.6 和 3.7 下的代码都不能通用.
python web 这么多年下来,能生存就意味着协程不是必要的.说协程不是 web 最佳实践我是认同的.没那么大必要.uvloop 提供的所谓 blazing fast 更多是一种炫技 |
22
no1xsyzy 2019-04-08 10:27:29 +08:00
@love Linux 内核的代码规范甚至是 8 宽 tab
https://www.kernel.org/doc/html/v4.17/process/coding-style.html#indentation 也别看了。 |
23
jojopro 2019-04-08 14:32:44 +08:00
首先一些被墙的包会让你抓狂 虽然可以使用代理
|
25
LifStge 2019-04-08 15:11:48 +08:00 via iPhone
so let ’ s go
|
26
blacklee 2019-04-08 15:28:02 +08:00
那么到底用哪个包管理工具呢?
|
27
secondwtq 2019-04-08 18:48:42 +08:00
@baojiweicn2 我只是专门挑坏处说的
|
29
ManjusakaL 2019-04-08 22:36:27 +08:00
可以吐槽下去年的 pycon (我是北京和成都场的负责人。。
欢迎黑&提建议。。 今年继续改进。。 |
30
ManjusakaL 2019-04-08 22:40:59 +08:00 1
@baojiweicn2 实际上目前的协程库都没法规避 GIL。没法规避 GIL 带来的副作用也很多。。典型的一个 block,全局 block。
而且 asyncio 就不说了,17 年的爆出来的 SSL 链接泄露问题到现在都没修,官方直接劝退 可以参看我之前的吐槽 https://www.zhihu.com/question/266094857/answer/304655007 和官方的 BPO https://bugs.python.org/issue29406 所以 Python 的协程路还长。。 |
31
baojiwei OP @ManjusakaL 有种背后说坏话被抓到的赶脚。[给大佬跪了]
|
32
ligyxy 2019-04-08 23:22:51 +08:00
|
33
b00tyhunt3r 2019-04-09 02:19:16 +08:00 via iPad
可惜我们做大型游戏开发 go 完全不能用
|
34
SlipStupig 2019-04-09 07:00:15 +08:00
go 没有 sklearn、gensim 和 pandas 这种生态,如果有了,果断放弃 python
|
35
yesono 2019-04-09 08:09:41 +08:00
对运维来说,go 太方便了。就一个二进制 平台通用。在 k8s 跑起来简单,镜像小,性能等等特点。现在很大公司后端微服务等底层基础架构用 go 开发的多。
|
36
kios 2019-04-09 08:11:23 +08:00
@jojopro golang.org 的包在 github 有 mirror
|
38
baojiweicn2 2019-04-09 09:33:38 +08:00 via Android
@yesono 编译后是方便,但是 docker+k8s 对很多语言和框架都很友好了,运维难度都大大降低
|
39
baojiweicn2 2019-04-09 09:34:48 +08:00 via Android
@SlipStupig go 还是有一些不方便的,而且 go 作为工程化数学语言还是要比 r 和 python 弱一些
|
40
dabaibai 2019-04-09 09:42:24 +08:00
go 很好玩 对于我这种写了 10 年的 C/C++的来讲 简直不要太舒服
|
41
toma77 2019-04-09 09:44:10 +08:00
gin
|
43
BosenY 2019-04-09 10:05:57 +08:00
beego , gin
|
44
wangxiaoaer 2019-04-09 10:37:02 +08:00
就想问一个问题,商业公司能提供闭源的 go SDK 供二次开发吗? 不能的话还是洗洗睡吧。
|
45
liuxin5959 2019-04-09 11:03:12 +08:00
P......PHP 是...
|
46
1762628386 2019-04-09 11:07:52 +08:00
世界上最好的语言
|
47
ManjusakaL 2019-04-09 12:55:37 +08:00 via Android
@baojiwei 不存在……随意吐槽,我们本来就有很多不足,吐槽才能进步
|
48
baojiwei OP @1762628386 php...是
|
49
opentrade 2019-04-09 19:11:36 +08:00 via Android
go 最蛋疼的地方是没有模板支持,interface{}到处飞,增加代码冗余度。没有 exception,error 检查嵌套又增加了代码冗余度。go2 已经着手解决模板这个问题。广告一下我的 go 项目
https://github.com/opentradesolutions/opentick |