不考虑 c,只考虑 c++
不考虑嵌入式
先说我的个人观点
我觉得能。虽然性能略逊,但研发协作效率更好
我也是 golang 萌新,大家再来各抒己见吧
101
thisismr2 2020-05-25 15:03:46 +08:00
不能. go 有很多局限性. (展开需要打很多字, 暂不展开)
另外正义提到 c 和 c++, 就从另外一个角度谈下, 从不同编程人员不同的思维方式来说, 有的团队(成员)的思维方式 适合来共同用 c 写项目, 有的团队(成员)的思维方式 适合来共同用 c++写项目, 每一种语言都会带来一种思维方式. 如果这个思维方式和编程人员的思维方式契合(相等或被包含), 则适合此编程人员用, 否则则不适合. 比如 C 之后, 接触并用了很久的 java, 觉得 java 太强大, 太 design 了, 太完备了, OO, 范型, 继承的各种概念. 简直完美(也有本书叫完美 java 编程), 后台接触了 python, 开始用 python, 觉得很舒服, 至少在所需场景下可以完成相同的目的, (私以为*大部分情况下[没说全部]*性能是第二考虑因素, 如果多加一个机器, 能让我愉快的编码也不错) 所以如果在适用场景重叠的情况下, 选择喜欢的挺好 比如有人喜欢 typescript 的类型, 有人喜欢 js (包括愚蠢的我现在还不会用 const let) |
102
TransAM 2020-05-25 15:08:28 +08:00
@hankai17 goroutine 只是 n:m 的线程模型,这个只是系统线程( Thread )和任务 /回调( Runnable/lambda )的对应关系,我用个线程池照样可以啊。
|
103
TransAM 2020-05-25 15:09:57 +08:00
@xpresslink 这个要看引擎支持不支持,但我估计很难说服引擎开发者。你看,python 多火,没说服 c2dx 也没说服 u3d,golang 更别想了。
|
104
wangyzj OP @TransAM 开发游戏的确太依赖于生态了,现在引擎就那么几个,基本都 c++,用 go 不是不行,但是开发者未必乐意
|
105
wangyzj OP @thisismr2 #101 其实我这个问题问的比较极端了,我后来也发现了,但是为时已晚
实际上我主要是考虑写应用 go 是可以的,效率高,但是呢,他和 java 又不太一样,不是字节码 但是比较 c++的确也有很多不合适 |
106
tmac33 2020-05-25 15:22:02 +08:00
你是否想问,Rust 能否完全替代 C 艹?
|
107
blless 2020-05-25 17:20:21 +08:00 via Android
@wysnylc #95 别问了,又想起一堆各种 String 操作下会有什么结果的笔试题…
Go 就省事多了 |
109
owenliang 2020-05-25 17:32:23 +08:00
实时性 go 是不行的。
|
110
iceheart 2020-05-25 19:13:24 +08:00 via Android
|
111
cmdOptionKana 2020-05-25 19:57:39 +08:00 via Android
看楼主附言,明显楼主还是不明白有 gc 与没 gc 的根本性区别。
|
112
Torpedo 2020-05-25 20:01:25 +08:00
c++底子太厚了。谁也不能全替代
|
113
jin7 2020-05-25 21:28:14 +08:00
都是说要取代 c++ 十多年了还没被取代
|
114
gansteed 2020-05-25 21:31:46 +08:00
各有优劣吧
|
115
Hanggi 2020-05-25 21:34:17 +08:00
最后可能替代 C++ 的目前只有 Rust 。
Go 更偏向应用层,网络层。 |
116
wangyzj OP @cmdOptionKana #111 谢谢你的回复,你自己没理解上去就请闭嘴吧
|
117
tianshilei1992 2020-05-25 22:51:27 +08:00
GC 这一点就够了…😂
|
118
dayeye2006199 2020-05-26 00:47:39 +08:00
高性能计算 gpgpu 还是一堆 cpp 和 c,暂时 go 没法吃这块蛋糕
|
120
CoderGeek 2020-05-26 01:32:36 +08:00
不能。
|
121
Lightbright 2020-05-26 01:53:24 +08:00 via Android 1
Chromium 项目七成安全漏洞属于内存安全问题
Chromium 项目报告,它七成的严重安全 bug 属于内存安全问题,因此它的下一个项目将是在源头阻止此类 bug 。对 2015 年之后发现的 912 个高危级安全 bug 的分析发现,七成为内存不安全问题,如 C/C++ 指针错误,其中一半是使用后释放 bug 。这些 bug 遍及整个代码库,非安全性的 bug 很大一部分其根源也是内存安全问题。Chromium 项目称它的沙盒机制在设计时就考虑了此类 Bug 的存在,但现在沙盒和网站隔离机制已经达到其能力的极限。他们现在考虑的一个方案是使用现有的更安全的语言如 Rust 和 Swift 等。Media www.solidot.org/story?sid=64457 楼上是谁说 Chrome 为什么不用 Rust 的?这不是来了? |
122
tao147258 2020-05-26 08:21:40 +08:00 via iPhone
小心大道至简
|
123
fovecifer 2020-05-26 08:56:21 +08:00
为什么这么多人不提 GC 呢?很多场景下对 GC 的容忍性很低,所以 C/C++这种具有很大的优势
PS:同时也是很大的劣势。。。 |
124
suckli 2020-05-26 09:23:37 +08:00
看领域
Go 在大部分领域都能工作的很好 国内大部分 C/C++程序员,在内存管理方面掌握的都不是很好,我在项目中遇见过的大部分问题,都是由于内存管理引起,而且极难定位。 前两天看了一份报告,说是 Google Chrome 的大部分问题也是内存问题 Go 在这方面可以很好的 cover 住,能够避免大部分内存问题。 在这一点上,从管理层面来说,就是一个巨大的优势。 除非对时延,性能等要求极高的领域,Go 可能就不适合了。 |
125
learningman 2020-05-26 10:14:53 +08:00
别吵了别吵了,再吵大家一起用回汇编吧,实在不行还有穿孔纸带嘛
|
126
hikkikuma1991 2020-05-26 10:57:43 +08:00
不能
|
127
dbskcnc 2020-05-26 11:10:17 +08:00
gc 和 非 gc 显然就不是同一个赛道, 不过在 pc/后端网络和应用层面,go 确实可以处理大部分的事情
|
129
flikecn 2020-05-26 12:01:08 +08:00
存储领域还是需要 C++,GO 胜任不了
|
130
mutalisk 2020-05-26 12:27:03 +08:00
一个依赖于 runtime 的语言是无法开发第三方库供其他语言调用的
|
131
libook 2020-05-26 12:43:22 +08:00
Go 在三四年前开始推广的时候有这么一条信息:“Google 希望在内部的一些场景使用 Go 语言来代替 C++进行开发。”
然后这个信息就被各大媒体歪曲成了“Google 公司:Go 语言势必取代 C++。” 实际上当你深入了解这两门语言之后,你会发现,这两门语言区别非常大,就好比是“用高铁来取代跑车”一样荒谬,实际上 Google 的 C++开发者在这种舆论上也都很懵逼,纷纷发言说用 Go 在大多数应用场景上取代 C++是无稽之谈。 抛开应用场景谈语言好坏都是耍流氓。虽然 Go 语言一开始是以“系统开发语言”作为定位的,但当前除了 Docker 生态以外,Go 基本上都是活跃在网络服务的开发方面,在微服务领域基本上已经成了御用语言之一,比起早先用 C++开发的高性能网络服务,Go 语言确实能够在保障较高的性能的同时极大地提升开发效率。 选语言不是选归宿,一个优秀的技术人员应当是博爱的,在任何场景下都能做出最合适的技术选型,避免“黔驴技穷”。 P.S. 吐槽 V 站上的另一个说 Deno 取代 Node.js 的帖子,和 Go 与 C++的情况如出一辙。 |
132
17701762115 2020-05-26 12:47:20 +08:00
占个坑,给大家分享个工具类,https://github.com/LJWLgl/CommonUtil,绝对能提高你的工作效率
|
133
wangyzj OP @libook #131 这是个好回答,我觉得就是一个运行效率和研发效率选型的问题,我之所以说替代 c++主要是因为我标题写的不好,其实底层高运行效率我会选择 c
至于 deno,没研究过,短期来看应该是不可能 |
134
timothyye 2020-05-26 13:28:34 +08:00 via Android
Go 不能,Rust 我看行
|
135
libook 2020-05-26 14:55:55 +08:00
@wangyzj
一般来说(不考虑特例),写一个具备一定功能的程序的话:C++要比 Rust 简单,但是 Rust 要比 C++可靠;未经过优化的 Rust 程序可能会比 C++程序性能好,但是 C++的优化天花板更高。 Rust 的可靠是建立在其语言上对于安全代码的约束的,自然不如 C++灵活,但同时 Rust 也给开发者提供了选择的余地,如果偶尔要求灵活度也可以使用 unsafe 来牺牲可靠性。 但是很多高度复杂的项目团队都希望把难点留在开发阶段,而不是运营阶段的 Debug,这块就是 Rust 的市场。 数据库、中间件、区块链、容器(或沙盒、虚拟机)、WebAssembly 等已经开始出现基于 Rust 开发的产品(包括我#131 提到的 Deno ),随着 Rust 的不断完善和发展,势必会从 C++的应用场景中接管不小的一部分。 所以同样的,看你项目上的首要痛点究竟是啥,在都能实现的条件下,如果痛点是可靠性那就选 Rust,如果痛点是性能就用 C/C++;同时也可以模块化处理,Assembly 、C/C++、Rust 、Python 、JS 一起,物尽其用。 |
136
wzw 2020-05-26 16:15:48 +08:00
我写 有些用 Python, 有些用 Go, 目前觉得 Go 挺好
|
137
hankai17 2020-05-26 19:25:07 +08:00 via Android
@TransAM 我讲的是 c 的回调效率很高 而 go 要做到回调的效果是通过 schedule 恢复上下文
|
138
zhixi 2020-05-26 19:35:32 +08:00
golang 成也 gc,败也 gc
|
139
ww2000e 2020-05-26 19:37:20 +08:00
感觉会有越来越多的 c++项目换 rust
|
141
exhades 2020-05-27 01:16:53 +08:00
rust 天下第一
|