如题,C/C++ 和 Go 都能生成静态链接的二进制文件,那么 Go 的优势在哪里?(无 IO 高并发需求)
1 mooncakejs 2019-01-22 10:25:12 +08:00 ![]() 优势就是 c++太难了,不是写代码太难了,而是组建一个风格统一的团队太难了。 |
![]() | 2 owenliang 2019-01-22 10:27:02 +08:00 没有 IO 要求,没有高并发要求,那么你做的是客户端软件? |
3 liuguang 2019-01-22 10:28:07 +08:00 go 语言自带各种功能库,C++自己除了语言定义之外,功能库几乎没有,要到处找其它类库, |
![]() | 4 lucifer9 2019-01-22 10:35:47 +08:00 要针对特定例子的话还真不好说 比如 taglib 这个库 或者找个 go 的库,用来处理 flac 文件 metadata,读写各种 block 的 |
![]() | 5 misaka19000 2019-01-22 10:39:13 +08:00 写起来爽,这个优势就足够了 |
6 kingwl 2019-01-22 10:41:21 +08:00 ![]() 和 go 比起来...还是更愿意写 c++ 不知道哪里写起来爽? 是 err != nil 爽还是 type switch 爽? |
7 icexin 2019-01-22 11:00:15 +08:00 ![]() 标准库涵盖了大部分场景,即使第三方库,看中了 github 上的哪个库,直接 import,自动分析依赖。带 gc,心智负担小。总之一句话,不折腾。 |
![]() | 8 GuangXiN 2019-01-22 11:03:18 +08:00 和 C/C++相比 - go 有 gc - go 有 go 和 chan 和 C++相比 - go 没有 class |
9 salamanderMH 2019-01-22 11:17:13 +08:00 go 简单好用 |
![]() | 10 vx2018 2019-01-22 11:22:46 +08:00 简单好用就行 |
![]() | 11 looplj 2019-01-22 11:24:18 +08:00 唯一的优势就是简单吧,有 GC 和无 GC 的完全不一样。 |
![]() | 12 ThomasZ 2019-01-22 11:28:49 +08:00 via Android 简单,敏捷 |
![]() | 13 reus 2019-01-22 11:41:21 +08:00 @lucifer9 https://github.com/dhowden/tag 随手都能找得出来。就算没有,自己根据格式规范写也很容易,几十行的东西 |
14 nicevar 2019-01-22 11:45:55 +08:00 go 开发效率高,有 gc,能降低能力不足者代码风险 |
15 littlewing 2019-01-22 12:17:40 +08:00 不会段错误 |
![]() | 16 loading 2019-01-22 12:55:39 +08:00 via Android gofmt 就能让我爱上 go |
![]() | 17 ibreaker 2019-01-22 13:06:33 +08:00 @littlewing 空指针也算段错 |
18 KgM4gLtF0shViDH3 2019-01-22 13:12:09 +08:00 via iPhone 开发快编译快,难道你用 cpp 去写 web ? |
![]() | 19 zjsxwc 2019-01-22 13:16:14 +08:00 强类型比弱类型更规范点吧 |
![]() | 20 May725 2019-01-22 13:28:35 +08:00 编译真的快;第三方包使用方便;够简单,统一,即使有些语法另类,但写 c++时需要自己注意细节问题; 如果让我选,我选 go。 |
21 yesono 2019-01-22 13:31:24 +08:00 从运维角度,go 只依赖 glibc,而 C++ 不行,如果用到其它库 so,引用各种 so 文件,go 打包 docker 更小。C++打包 docker,各种 so 库依赖要处理。 |
![]() | 23 lucifer9 2019-01-22 15:06:29 +08:00 @reus #13 这个没法写入。taglib 本身给的 C binding 就没写入的 API,自己写没那么容易。Rust 有写入 flac 的叫 metaflac,是独立实现的 你可以看看有几行 |
24 GeruzoniAnsasu 2019-01-22 15:23:43 +08:00 go 的下限刚好在 “写出没法用的代码”以上 意味着 golang 不管多傻逼的人来写,只会写出逻辑 bug,不会写出调试不了不科学不能跑的代码 c++,嚯,那就不一样了,没人知道自己写的代码对不对,只知道“在特定情况下似乎不会崩” |
25 buhi 2019-01-22 15:31:51 +08:00 go 就是给码畜农场主用的万金油速效增肥饲料, c++就是原生态农家饲料 |
![]() | 26 reus 2019-01-22 15:58:04 +08:00 @lucifer9 flac 格式都是公开的,写个 decoder/encoder 真的不难。rust 连 u64_to_le_bytes 这种都要自己写,代码多不奇怪。 这里就有个 encoder: https://github.com/mewkiz/flac |
![]() | 27 funcman 2019-01-22 18:00:24 +08:00 via iPhone 非 C 语言的 Native 语言,不好在工程里随便用的原因是 ABI 比较复杂,需要折腾 Wrapper。 |
28 hilbertz 2019-01-22 18:15:01 +08:00 @buhi 精屁,go 就是规定好条条框框,你只有这几种选择,所以即不会写的很烂,也不会写得很好,就是工厂化的产品,但如果有点追求的,就会很快不满足与此 |
![]() | 29 blless 2019-01-22 18:42:04 +08:00 via Android 完整工具链,包括 fmt vet test benchmark,包管理方便(只要一个 git,就相当于有代码仓库)静态链接,跨平台编译 /开发,性能良好,自带 gc,协程…… c++这样一套起来也是各种条条框框,说不定还更厉害,所以我用 go |
![]() | 30 iRiven 2019-01-22 18:42:23 +08:00 via Android go 简单 |
31 OvLOrz 2019-01-22 20:04:15 +08:00 无论你之前用 Java、Python 还是 C,都可以转 Go,无缝衔接,抄起键盘就是干 |
![]() | 32 RubyJack 2019-01-22 20:15:36 +08:00 简单 |
![]() | 33 young6 2019-01-22 23:20:06 +08:00 via Android Go 是真正做到了 KISS,和 C 一样。 |
34 lynskylate 2019-01-22 23:36:47 +08:00 via Android 就一个包管理就超越了 c 艹,bazel 主流库支持的太少了。 |
![]() | 35 12101111 2019-01-22 23:42:32 +08:00 via Android @reus https://doc.rust-lang.org/stable/std/primitive.u64.html#method.to_le_bytes 另外,除了学习曲线,和编译速度,不觉得 go 相对于 rust 有优势,尤其是大型项目。 |
![]() | 37 reus 2019-01-23 08:36:09 +08:00 @12101111 既然如此,为什么现在线上跑的 rust 写的后端系统,比 go 少那么多?既然有优势,为什么不用?难道他们都很傻? |
38 zzzhbooo 2019-01-23 09:30:15 +08:00 部署方便,不需要花过多的时间在库的依赖上,自带库丰富,社区活跃 |
![]() | 40 guanhui07 2019-01-23 10:39:46 +08:00 开发快编译快 |
![]() | 41 wind3110991 2019-01-23 10:43:14 +08:00 无论你的需求点在哪里,GO 我觉得下面几个点是优势: 1、语言级别的协程 goroutine,支持高并发的同时,降低了开发过程存在的一些线程安全风险,在保障了性能的同时还能够容易上手,很适合作为创业公司的服务器开发语言; 2、对于 C++开发,最大的问题就是 不是在 gdb 查看 core dump,就是在找 core dump 的路上,对于不同层次的程序员,一门有 gc 机制的语言,能够大大降低协同开发的交付风险和故障定位时间。 3、相比下 go 有着丰富的库和方便的管理方式,c++编译大工程文件时,简直是反人类,特别是接手来历不明的代码,除了一堆未知的问题,编译的速度也是感人。 4、golang 的定位,你为什么用 golang 而不是用 c/c++ 如果把语言栈比作武功修炼技能的话:golang 是凌波微步和六脉神剑,C++更像是基础的轻功和内功修炼。就像你利用 golang 的框架可以快速上手写一些简单应用,golang 更多是一门生产语言。在学 c++时,感觉写半个月都憋不出什么东西来,但是它无形中提升的,是你对编程另一个层次的能力。 5、如果是写一些简单的 http 接口或者应用,你会用 c++么。。。 https://www.zhihu.com/question/57404512 无论用什么语言,都最终要皈依实际生产 /研究的需求,故步不前的语言&程序员,是肯定要被淘汰的。 |