占用内存小
当你用 maven 下载了半个互联网,同时启动要占用 800M 虚拟内存,或者当你运行一个 RoR 的应用的时候占用了 200M ,这和 Go 平均 5-20M 的运行时想比真是相差巨大。
恰好搞定工作
在旧金山,有一大群的开发人员每天想着朝九晚五的上下班,回到家后就不再碰触电脑。他们可能是形形色色的,但我想他们都有一个共同的特点,那就是他们“编码只是为了完成任务”。
Go 在这方面很出色(去掌握这门技术吧)。它真真正正的让开发人员做到了恰好搞定工作。
全文真正说 Go 的优势的就上面两点,也就是跟同类脚本语言比比。况且不成熟,为 Go 社区做贡献显然会增加小公司成本。值得一试?
1
mahone3297 2015-12-15 12:57:27 +08:00
期待负面消息。。。
|
2
angelface 2015-12-15 12:59:45 +08:00 5
对于这篇文章,这种人,把 go 换成其它任何一种语言都可以,因为这是一个模板。
|
3
ixiaohei 2015-12-15 13:00:38 +08:00
其实 go 某些方面很有优势,但是统治,只能呵呵
|
4
loading 2015-12-15 13:02:32 +08:00 via Android
广告站点的手机界面很差!
|
5
yvanhe 2015-12-15 13:02:45 +08:00
用 maven 下载了半个互联网 噗
|
6
sun2920989 2015-12-15 13:02:50 +08:00 1
什么叫统治呢,我觉得只有 js 敢说可以统治前端.其他的语言都不敢这么说吧,包括 C 和 JAVA 等等
|
7
chaucerling 2015-12-15 13:03:50 +08:00 1
然后就被 google 抛弃了
|
8
luoway OP |
9
X_Del 2015-12-15 13:11:37 +08:00
|
10
sun2920989 2015-12-15 13:17:29 +08:00
@X_Del 抬杠成功 我无言以对 o(∩_∩)o 所以说统治这个说法就是扯淡
在合适的项目用合适的语言写合适的代码 |
11
luoway OP |
12
yongzhong 2015-12-15 13:19:10 +08:00
请问这几年被啥"统治"?
|
13
luoway OP @yongzhong
> Go 替代 JVM 和 .NET 成为企业级编程语言是很显而易见的。 > 例如,我在旧金山演讲的时候几乎所有的 Scale 企业都在一点一点的迁移到 Go ,许多欧洲的企业也在做着同样的事情。 据作者描述,答案应该是 JVM 、.NET 和 Scale |
14
china521 2015-12-15 13:24:17 +08:00 8
转载一下 zhihu 上的回答:
Go 好比 Web 框架里的 Angularjs.... 这算是是 Google 的开发哲学 像 Angularjs 只能做单页面应用一样, 应用场景不一样... 怎么跟做一个 CMS 上与 PHP 有可比性??? 但做 Web 后台应用你比比 PHP 跟 angularjs 的代码量就知道了. 我不是一个 Go 粉 但我现在是大并发网络后台服务有关的项目就用 Go 做, 因为用过他写过 N 多上万行的项目. 这些项目用 C++或 Java 可能要一个星期, 用 Go 两天就能做好. 没认识 Go 之前, 我做网络并发用的是 ACE 这个网络库, 被 boost 坑过, 也被 erlang 困扰过, python 的 tornado 也做过一些项目. 最后发现, 开发成本不在于项目复杂度..在于你所用的框架的坑有多少. 而 Go 的坑, 做这么久项目以来, 没有遇到 遇到了最后也证明是自己滥用了一些特性, 比如 defer 个人 喜欢专注一种应用场景的语言 比如 PHP 专业做 Web, C 专门做系统, Go 专门做网络服务, ASM 负责调优性能, 语言学习成本又不高,一个个学就是了,未来混合语言编程是主流。。 我是一个爆栈工程师, 做一个项目在 N 种语言中切换. 没有什么不适应的, 反而感觉很自如. 性能也能发挥最大化. 像 node 这一种试图通吃的语言. 只是一个失败的尝试, 时间会证明的.. 不知道上面这句会不会引来口水 重要的事情说三遍: 语言的好坏是对应用场景来说的 ! 语言的好坏是对应用场景来说的 ! 语言的好坏是对应用场景来说的 ! 没有最好的语言, 只有最适合你开发场景的语言 ! 没有最好的语言, 只有最适合你开发场景的语言 ! 没有最好的语言, 只有最适合你开发场景的语言 ! 好比中国男人的 Size 一般是不能跟西方女人好好的体验生活一样... 你用 Go 的模板做下前台试试?? 能让你疯掉... 但你拿他来做后端试下, 能让你多出来时间陪家人朋友. 最后: 上面纯属个人观点。。欢迎指证, 但我不会鸟你们的. 因为我用过 就用一门语言写过几个小项目的人, 不要用评价这门语言的好坏, 等你用他来写过几十万行的代码以后, 你就会发现, 原来这么设计他妈的是有原因的...或者原来尼玛的我又选错语言了... 语言学习成本真不高。。。可以说没有成本. 相对收获来说 如果你感觉学习一门新语言成本高, 只能说,你不适合作个码农.. |
15
messyidea 2015-12-15 13:24:55 +08:00 via Android
可惜 mips 只有 gccgo 。。
|
16
vietor 2015-12-15 13:27:14 +08:00
go 用不了多久,就会向 Java 那样,遍地轮子
|
17
typcn 2015-12-15 13:30:15 +08:00
Go 只能说是比 Python NodeJS PHP 快,占用低。
C 艹 单核单线程 17000 RPS ( boost asio ),本体 30MB 内存占用,不过系统内核占了很多内存,估计是 tcp buffer 之类的。同样的机子上 Go 只有 1500 RPS 左右。 至于 Java 早就 rm 掉了,没有测试。 Go 写起来的复杂度跟 C 艹 差不多,性能差距还这么远,反正我是不会去用。。。 还有那个难以吐槽的 cgo 链接。。。。 |
20
typcn 2015-12-15 13:41:19 +08:00
@clino 可能是我 C 系写的顺手了吧, go 我只试过一两次,没有真正的用起来。
感觉 go 里面各种奇怪的看不懂的特性,各种奇奇怪怪的符号,实在是难以阅读。。 以及我用 py 之类的程序的时候,基本上下载即运行,没碰到过坑。用 C/C++ 之类的程序,下载编译即运行,偶尔遇到包没装 pacman 搞定,很少有坑。 用 Go 程序几乎下载一个踩一次坑,先 cgo 编译链接,等个半小时突然蹦出个错误,装包装依赖,编译,再等大半天,又出错,然后看看代码,哪里有问题,哪里少东西,再改。。。反复。。。。 总共尝试两次用 go 搭建服务的时候,都是折腾了好几个小时,才勉强跑起来 /跑失败。。。 |
22
typcn 2015-12-15 13:45:33 +08:00
@clino 比如要搭建 web 服务, go 可能 import http 就好了, 不需要造轮子,但是相应的 C++ 也一样,上 Google 找一个轮子,也是很快的,毕竟也是有多年历史的老语言,除非太奇怪的库,基本上都可以轻易搜到的。 除去这些基础的轮子, C++ 可能需要一些时间搜索查找之外, 真正写业务逻辑的时候, go 和 C++ 写起来开发效率基本是相同的,实际只会取决于程序员的熟练程度。
|
23
boro 2015-12-15 15:14:25 +08:00 via iPhone
用来写网站,靠谱不?
|
24
odirus 2015-12-15 15:18:43 +08:00
我倒是觉得,数十年后的今天,会出现一门人工智能语言,高度整合现在的各种语言、轮子。到时候我们人类慢慢被统治了。
|
26
typcn 2015-12-15 16:51:14 +08:00
@njutree 我 c \ c++ \ oc \ php \ node \ 前端几种语言 写的很多代码已经在 PROD 环境跑了很久了,以及 Java / Python 写过几千行,还是难以接受 go 。。。
|
27
clino 2015-12-15 16:52:48 +08:00
@typcn 不是说 go 的编译速度奇快到飞起咩...
"真正写业务逻辑的时候, go 和 C++ 写起来开发效率基本是相同的" 这个估计不会吧...至少 go 有 gc goroutine 之类的 c++没有的东西,至少开发效率应该能到 java 以上才对 |
28
lightening 2015-12-15 16:58:28 +08:00 via iPhone
我觉得 golang, rust, swift 三者间 go 是最没前途的。
Rust 非常漂亮,性能与 C 相当,但更好写,非常不错。 Swift 有 Apple 强推,而且 Apple 的上一个项目 llvm 非常成功。 |
29
jjx 2015-12-15 17:19:14 +08:00
@lightening
swift 要在 linux/windows 上成功, 同 coreclr 在 linux/osx 上成功一样难度大 rust 易用性和上手不如 golang 这三种语言中, golang 是最简单的, 成熟度相对最高的 至于前景, 不评价 |
30
raincious 2015-12-15 17:29:47 +08:00
@lightening
Golang 除非 Google 放弃了,否则不会没前途。毕竟自带的库诚意就是满满的,可以方便的构建各种服务器,进而构建服务架构。 Rust 现在只是一个语言,除非他能达到 Golang 这样诚意满满的程度,或者有一个足够稳定的社区来提供足够高质量的库,否则想要去用会感觉出处碰壁。这并不是说 Rust 不好,只是它还需要时间。 而且就我的观点而言,多学一个语言又不会怀孕,都学了呗。 |
31
njutree 2015-12-15 17:39:22 +08:00
@typcn 既然学了这么多语言, go 有什么特性和符合让你觉得奇怪我倒是很好奇。反正我最开始学 go 基本语法就用了一天,现在已经用了几年了。
|
32
typcn 2015-12-15 17:47:00 +08:00
@clino go 的编译速度不到 C++ 的一半,不到 C 的 10%。
除非你用 malloc 需要对应 free , or 处理非常大的数据得在一个函数内清理内存,其他情况出生命周期是自动销毁的, GC 最大的作用就是降低性能,正面作用微乎其微。 |
33
china521 2015-12-15 17:51:01 +08:00
应该让七牛的 CTO 给你们洗洗脑. 66666
|
35
clino 2015-12-15 18:10:26 +08:00
@typcn 随便找了一个:
http://cyukang.com/2014/06/22/go-dev.html "Go 的编译速度很快,我的机器上这里 20w 行左右的 Go 代码基本编译在 13s 左右,这和 C++比起来要快很多很多。" 我之前看到的评论比较多是这类,像你这样说它编译慢的第一次看到 有空要去找个东东玩玩看到底哪个说法是对的... 我之前做过很多年的 C 程序的嵌入式开发,内存管理这块感觉是非常麻烦的,这块我觉得 gc 还是会让人省心不少. |
36
typcn 2015-12-15 18:14:59 +08:00
@clino 做嵌入式确实管理内存麻烦,但是这些程序面向的都是服务器,内存都是按 G 计算的,很多时候完全可以不管内存,只要别忘记释放 malloc 的内存给漏了就好
|
37
maomaomao001 2015-12-15 18:41:47 +08:00
@typcn 不会吧? 我也想学学 go 来着? go 和 java 相比怎么样? 学起来和 java 一样容易吗?
|
38
loading 2015-12-15 18:43:29 +08:00 via Android
go 在 web 开发上究竟是什么角色呢?
|
39
typcn 2015-12-15 18:46:44 +08:00
@maomaomao001 肯定比 Java 要快不少的。。。至于学起来是否容易,我也没仔细研究过,只是试了试
|
40
seki 2015-12-15 18:54:16 +08:00
From Python to Go … and Back Again
https://docs.google.com/presentation/d/1LO_WI3N-3p2Wp9PDWyv5B6EGFZ8XTOTNJ7Hd40WOUHo/mobilepresent?pli=1&slide=id.g70b0035b2_1_168 |
41
spacewander 2015-12-15 19:45:51 +08:00
@typcn
编译速度这个……求实际的 benchmark 。 |
42
Dexter123 2015-12-15 20:26:42 +08:00
我眼瞎看成 “ GD 会统治接下来的十年?” 勿谈国是啊药丸啊药丸啊
|
43
raincious 2015-12-15 20:39:32 +08:00
@spacewander
给一个语言的编译器做 Benchmark 很难的,最靠谱的还是看产生的 OP 码。 如果只是纯粹看运行效率,刚搜了下这里: http://benchmarksgame.alioth.debian.org/u64q/go.html 网页最下面有和其他语言的比较,比如 vs Rust 。 当然,这个网站本身是我大最好的语言 PHP 的,这里还有 PHP 7 的速度比较: http://benchmarksgame.alioth.debian.org/u64q/php.html 嗯,默认是跟 Python 3 比( CPython ),你们不要拿 pypy 出来打我…… 另外还有 Rust 的: http://benchmarksgame.alioth.debian.org/u64q/rust.html |
44
spacewander 2015-12-15 20:46:28 +08:00
@raincious
呃,我说的是编译速度的 benchmark ,不是运行速度的。 |
45
caliven 2015-12-15 20:49:12 +08:00
@china521 说的对
重要的事情说三遍: 语言的好坏是对应用场景来说的 ! 语言的好坏是对应用场景来说的 ! 语言的好坏是对应用场景来说的 ! 没有最好的语言, 只有最适合你开发场景的语言 ! 没有最好的语言, 只有最适合你开发场景的语言 ! 没有最好的语言, 只有最适合你开发场景的语言 ! |
47
mengzhuo 2015-12-15 21:01:54 +08:00 via iPhone
服务端编程 go 不称霸我不信
生产环境里用 go 做接入服务 比 python 、 node 、 php 快 多核不用脑 比 c 艹省心 不怕泄漏 业务服务还没试过 |
48
chai2010 2015-12-15 21:11:34 +08:00
@typcn go get 常见的坑就 2 个,一个是 GOPATH ,一个是墙。
cgo 因为涉及到 C/C++那些工具和问题,不是一般 Gopher 应该直接使用的。 一上来就踩到 cgo 的坑,我觉得可能 Go 确实不适合你(说明你需要强依赖 C/C++的库)。 PS :真不喜欢文章这种标题,还有内容。 |
50
raincious 2015-12-15 21:38:29 +08:00
另外我觉得 Go 自带的 HTTP 服务器应该不会那么慢,我自己测试了下,大约是 4000 ~ 5000QPS
ab 的结果: https://gist.github.com/raincious/c5cdaf4f7122cd6555be 代码: https://gist.github.com/raincious/30fc96621cfbd5f174b1 不过貌似 CPU 确实是跑不满 100% |
51
raincious 2015-12-15 21:39:49 +08:00
|
52
neoblackcap 2015-12-15 21:41:21 +08:00
@clino C++每个版本都差别很大,其实像新的 c++ 14 开发效率已经挺高了。只不过历史原因,很多人对 C++不了解,因而也就造成 C++现在这个样子。 C++里面的编程范式太多了,很多人根本没有能力选择合理的范式去解决问题。
|
53
ototsuyume 2015-12-15 21:49:01 +08:00 4
公司都是要盈利的,不是语言粉。哪怕你一门语言语法再丑特性再少内置的库再不丰富,只要能用最少的成本最快的速度解决他们问题就是一门好语言。在这方面 golang 甩 rust 不知道多少条街。像 scala 不牛逼吗, linkedin 用了一段时间还不是把它抛弃了。而 go 就是几门新语言里面在工程实践上面做得最好的,易学易用工具链完善,所以越来越多公司尝试用 go
|
54
firstway 2015-12-15 22:13:09 +08:00 via Android
@ototsuyume 同意!
|
55
chendahui007 2015-12-15 22:40:16 +08:00
@ototsuyume 同意
|
56
bydmm 2015-12-15 22:41:44 +08:00
我感觉在实现一个 web service 的前提下,要实现轻松完成任务早早回家的需求, 还是上我 rails 比较靠谱和省心。人省了心,计算机自然累(又慢又大),这是一种交换。你确定 go 写的 web service 是跑的又快,写的也快?
PS: 想实现朝九晚五的生活,这要看你的公司, 而不是看你用什么语言。。。 |
57
xiongxin8802 2015-12-15 22:50:49 +08:00
为什么没人提到 nim
|
58
Comdex 2015-12-15 22:52:41 +08:00
新人用 golang 开发 Web 表示坑较少,开发环境的简便性秒杀其他语言几条街
|
59
shuax 2015-12-15 22:57:48 +08:00
声明了不使用的变量,居然是报错,而不是警告,反人类啊。调试的时候注释几行代码很正常吧,然后就报错了,因为你没用变量。
|
60
rayyang88 2015-12-15 23:18:49 +08:00
统治不敢说,但是举足轻重。
|
61
lostsnow 2015-12-15 23:25:57 +08:00
|
62
mengzhuo 2015-12-15 23:26:29 +08:00
|
63
signifox 2015-12-15 23:34:01 +08:00
最大的优势是 simple , 开发容易,部署简单,调优方便。
和 C/C++比开发效率巨高, CPU 占用偏高, GC 较废。 和 Pyhon 比运行效率巨高,省内存,语法糖太少。 我在项目中需要性能的地方用 C/C++,快速原型之类应用用 Golang ,运维脚本用 Python 。 |
64
ototsuyume 2015-12-15 23:41:08 +08:00
@shuax 我以前写 C 艹的时候就曾经试过有一天注释了几句代码调试然后下班回家了,第二天忘记了这事把代码直接提交发布了。。。幸亏发现得早而且不是重要的逻辑。所以这种情况 go 直接报错误而不是 warning 也是非常符合工程实践的,既然 warning 你们不管所以干脆就把 warning 都算成错误把可能造成异常行为的逻辑都扼杀在编译期了
|
65
zonghua 2015-12-16 00:40:00 +08:00 via iPhone
还有人用 VB 的吗,是不是都不敢谈了?
|
66
qian19876025 2015-12-16 01:01:20 +08:00
@typcn 你这个就有些扯了 大量的连接需要管理 大量的事务处理 没关系? 这些个情况下更需要监管内存的使用
|
67
wdhwg001 2015-12-16 01:37:21 +08:00 via iPhone
我在安静的等 crystal-lang 。
这应该是吵嚷着静态语言废话多,动态语言效率低的最终解之一了。 |
68
Bluecoda 2015-12-16 01:50:06 +08:00
接下来的 10 年统治不统治我不知道,我只知道我是不会用 go 的,用 go 的话,我有 elixir 和 rust 两个选择,何必自讨苦吃?
|
69
penjianfeng 2015-12-16 01:58:22 +08:00
虽然我现在主要用 go,但是我还是想说,这玩意儿目前对我来说有优势的就是并行很简单,如果是做 web 的话,用来写 api 很赞,再内存消耗,处理速度上还是杠杠滴.做个 web 网站还是洗洗睡吧,嵌套 html 模板就是个坑,至少目前我还没有找到一种比较好的办法,而相比拍黄片这种动态语言再这方面就完爆 go 了,静态语言有静态语言的好,动态语言也有着它自己擅长的领域.要不然为什么 js 这种奇丑无比的语言能够再 github 上流行程度长居前几位...
|
70
penjianfeng 2015-12-16 02:01:45 +08:00
@Dexter123 GD 早晚药丸的,纵观历史独裁都没有好结果.你看现在有多少民众相信 zf???
|
71
wdhwg001 2015-12-16 02:08:26 +08:00 via iPhone
http://mattn.kaoriya.net/software/lang/ruby/20150618020626.htm
附上一个 crystal 和 ruby 的 http 性能对比,静态大法好。 |
72
blueandhack 2015-12-16 02:10:11 +08:00
@timothyye 我觉得是被大叔安利的吧
|
73
msg7086 2015-12-16 03:11:01 +08:00
@wdhwg001 其实 Ruby 有个 1000+qps 也算可以了。
动态语言,特别是像 Ruby 这种环境,会大量用到元编程。 不知道 Crystal 静态化以后还能元多少东西。 反正对我来说,宁愿牺牲性能换取早点下班…… |
74
msg7086 2015-12-16 03:21:10 +08:00
然后看了一眼原文。
「在美国市值前 20 的企业有超过一半正在使用 Go 」 你手里的钱有美国市值前 20 吗?没钱类比个毛线。 初创公司用 Go 起步,没几个月就饿死了…… 老老实实三大件 PyRbPHP (最近还有 Node )。 |
75
timothyye 2015-12-16 08:30:44 +08:00 via Android
@blueandhack 哈哈
|
76
hqs123 2015-12-16 08:44:22 +08:00
没用过,看看大家想法.
|
77
Asan 2015-12-16 09:04:46 +08:00 via iPhone
说的好像不翻墙就能用 maven 一样,噗
|
78
zhangchioulin 2015-12-16 09:06:37 +08:00
@typcn 什么是轮子?一个 demo?
|
79
amon 2015-12-16 09:15:16 +08:00
印象中楼主水了不少这种帖子了,已 block
|
80
kassadin 2015-12-16 09:21:25 +08:00
我想吐槽的是 gradle 会下载整个互联网…
|
81
chemzqm 2015-12-16 09:27:52 +08:00
Go 语言稳定、简洁,出色的包管理,确实能帮你写出更有质量的代码,但是,对于大多数小公司(尤其是中国)而言,它们更关心项目的快速迭代,还是使用更灵活的脚本语言实际一些。
|
82
zhicheng 2015-12-16 09:35:19 +08:00 via Android
「在美国市值前 20 的企业有超过一半正在使用 Go 」
这句是个废话,他们还同时用着 C , C++, Python , PHP , Java , Erlang ,甚至 COBOL 和 Pascal 。哪个公司还没有几个边缘项目和闲得蛋疼的程序员。 |
83
spark 2015-12-16 09:41:40 +08:00
不是 PHP 么?
|
84
cx2015 2015-12-16 09:48:02 +08:00
坐等朋友出现,看到 go 他肯定会进来发表 bia 言的。。。
|
85
linqiang 2015-12-16 10:06:15 +08:00
然,作为初学者配置开发环境太特么费劲了,尤其用 sublime text~
|
86
88250 2015-12-16 10:07:38 +08:00
|
87
zacard 2015-12-16 10:12:16 +08:00
我就静静的看着你们装逼,从来也不会打断你们。
|
88
bentanke 2015-12-16 10:17:21 +08:00
内存那么白菜价,干嘛不多买几块。。比程序员便宜多了
|
89
behappy 2015-12-16 10:22:46 +08:00
觉得快被 javascript 统治世界啦
|
90
crazycen 2015-12-16 10:24:33 +08:00 via iPhone
go 这辈子都不指望去开发 ios app 了!
|
91
luoway OP |
92
serious198706 2015-12-16 10:46:05 +08:00
Python 会统治接下来的 15 年?
Java 会统治接下来的 30 年? C 会统治接下来的 50 年? 机器语言会统治接下来的 1000 年? 可惜这些问题都没有人提。。 |
93
Vonex 2015-12-16 10:48:42 +08:00
php 才是最好的语言
|
94
moji2016 2015-12-16 12:33:54 +08:00
做 web 网站, go 更好用吗。如果好用,为什么他的 revel 框架,没有在 github 上得星最多呢。
|
96
noli 2015-12-16 12:37:03 +08:00
然而 C/C++ 已经掌控世界 30 年
|
97
bk201 2015-12-16 12:40:55 +08:00
我对 go 的语法持观察态度。实在是可以道一声变态
|
98
civet 2015-12-16 12:48:32 +08:00 via iPhone
某女:你能让这个论坛的人都吵起来,我就跟你约会.
某软件工程师:PHP 是最好的语言! 某论坛炸锅了,各种吵架... 某女:服了你了,我们走吧 某软件工程师:今天不行,我一定要说服他们,PHP 必须是最好的语言 |
100
hyzjshwo 2015-12-16 13:16:50 +08:00
没有银弹
|