[月经贴] Golang Go语言能否完全替代C++?

发布于 1周前 作者 gougou168 来自 Go语言

[月经贴] Golang Go语言能否完全替代C++?

不考虑 c,只考虑 c++

不考虑嵌入式

先说我的个人观点

我觉得能。虽然性能略逊,但研发协作效率更好

我也是 golang 萌新,大家再来各抒己见吧

100 回复

根本不可能,rust 都不敢说这话

更多关于[月经贴] Golang Go语言能否完全替代C++?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你一说 rust,我倒是想起来前几年这种话题的主语一般是 rust 。

肯定会挤压 c++一定的份额,但是取代不可能。 后面可能 rust 也会挤压 c++份额,毕竟好多 c++ bug 是内存问题。人是最不可信。

template metaprogramming 是 C++ 的灵魂
然而 go 现在连个最基本的泛型都还没有(

个人观点: 你根本不知道为什么需要 c++

先多写两行 golang 的代码,你就知道到底 golang 缺什么,有什么优势。不要天天 golang 的代码都没写多少就开始各种安利。你连坑都没踩,连填坑都不知道怎么填,安利都很无力就问能不能替代这个替代那个。你心中都没有数,告诉你结果你又会相信么?

十多年前,安卓,移动互联网还没流行,满街都是 c, c++,vb,delphi,php,用 java 的都很少,c++是大学生必学语言。

现在比起以前,c++的确没落了,很多学生根本不学这个,对个人能力要求高,待遇又没 java 高,写起来还累。

学得人少,招不到人,很多公司也转语言了。

go 这几年的确越来越多公司用,虽然远比不上 java,总得来看,发展趋势是很好的。

C++在一些特定领域, 对内存布局有很高要求的地方, 仍然无法用 Go 代替
另外语言本身只是一小部分因素, C++大量的现存库, Go 在这方面短时间内仍然存在很大短板.
所以不存在替代的问题.
最近这些年各种新语言如过江之鲫, 但是之前的语言真正被挤压而式微的, 估计就三两个吧, 而是都是本身存在明显的短板, 且并未形成较高的生态的. (比如 Perl?)

用 golang 写 JVM ?

不太可能,除了方便的并发和 gc 在 web 上比较好用,其他不管是语法还是生态都比不了包括 c++在内的主流语言。
带 gc 的语言,基本进入不了必须用 c++的场景。
go 的阵地主要还是做 web 服务,或者对服务做些基础设施,未来应该还可以吃掉一些其他 web 语言的份额吧,c++就别太强求了。

chrome 和 golang 都是谷歌的亲儿子,也没见 chromium 里有一行 go 代码啊

go 能做应用,不适合做系统,楼主应该没考虑到做系统的场合
rust 应该是新兴语言里唯一适合做系统的

面对的场景都不一样谈何替代?
这问题就好像司机能替代厨子一样

go 的编译器就是用 go 写的,只要够强,就能替代很大的一部分 C++的份额

我特意去看了 tiobe 排行榜 2010 年的,java 已经是仅次于 c 的第二名。

动不动喊要取代谁是新手才会有的行为。语言之间的差异化决定了它们各自有各自适用的场景。硬把不适合的语言塞到不适合的应该场景那就是自找苦吃……

是的,这也就是为啥我一直不学 go 的原因,连谷歌自己都不怎么用的语言,大家却用的这么起劲,就像安卓,谷歌又搞个 kotlin,如果真的看好 go,直接把 go 优化了迁移上去啊

能自举并不能说明什么,理论上任何图灵完全的语言都可以做到

GC 问题,go 不能代替 cpp

你是在搞笑么,不说内部工具了,kubernetes 了解下?

虽然我力挺 Go,但我觉得 Go 根本不可能取代 c++,应用场景完全不一样。

Rust 能取代 C++ 吗?我也很怀疑。Rust 学习曲线陡峭,注定小众。任何不容易入门的语言,注定不会流行。哪怕设计的再优雅也不行。

#17 kotlin 是 jetbrains 搞的吧

大众语言靠生态,小众语言靠爱发电。靠爱发的电充其量照亮一个小角落,怎么有可能影响到生态呢。

“golang”,这个单词是不是念“江狗”

嗯,用别家语言都不用 go,这还不说明问题?

go 的工资溢价是真的高

想取代 c++的语言多了, go 算老几…

只要有 GC,就别说话了

不能,这辈子都不能。

GC 语言不可能完全替代非 GC 语言,,

Go 对标的是 Java,Rust 对标的才是 C++. 目前来看二者都是不可能成功取代的.

现在开发硬件用 c++的越来越多了

同理: 这么多年对 Java 喊打喊杀的多了去,Go 算老几

CNCF 基金会的项目挺喜欢用 go 的…

我们公司前面经理用 go 开发的项目全都不稳定,客户天天反馈投诉,然后现在老板直接封杀了 go,经理被撤职,也不知道是技术问题还是语言问题,但是我用 py 写的就没问题,而且我 py 还是新学的

golang 会取代一部分 c++做服务端程序的份额

但是这部分份额 golang 不取代,也会被 java netcore 等去取代

c++的固有优势领域(操作系统 网络模块 计算模块 内存敏感模块 效率敏感模块等)还未受到 golang 的影响

ps:前段时间用 golang 写排序,恶心坏了,无比想念 c++的泛型,更加羡慕 c#的函数式

go 语言错误处理麻烦、没有泛型、没有枚举,gc 性能一般比不上 Java 。不支持原生的线程,在 CPU 密集型的应用中,性能必然不行。而嵌入式方面,go 的运行时过大,导致根本不能用在嵌入式。总体而言华而不实,写 web 程序可以,其它领域基本没啥优势可言。rust 替换 C++倒是有可能,你看 linux 内核现在允许提交 rust 代码了,它为啥不允许提交 go 语言代码呢,想一想。

那个搞笑榜? Python 的排名现在还比 java 高呢,你看有多少公司招 python 的?

kotlin 是 jb 家的…

争来争去没意思 学两个 根据项目来选语言

go 连太子都算不上,还在争夺封疆大吏中

C++是游戏开发领域的绝对霸主,连 C 都做不到,更不要说 go 了

红利期啊,要快,不然过了就难

领域细分的结果而已,取代我觉得是很难的,各有各的优势。c++的优势在于接近更低级的语言,我能遇见的代码里,c++用来和 fpga 打交道,做交易系统做回测系统。干这行不赚钱么?中国人有句话叫…

rust 可能更适合,但是完全代替还是不太可能的

有一说一啊,楼上说话的好歹也是学过用过的…你这说不学也不会学 Go 的也在指指点点有点过分了啊

Go 对标的从来不是 C/C++,Go 在我看来的唯一优势就是心智负担够低。记得领域驱动设计里面有提过,业务也是区分技术复杂度和业务复杂度的。很多业务根本就不是技术问题,这个时候 Go/Java 之类优势就出来了。

并非没学过,go 刚出来时就学了入门,就是因为了解过,才选择坚决不学的

开发中语言并不需要,重要的是现存库。能代替 c++的语言太多了,但是基础库比传统 c/c++的库好的不多。
java 就是最典型的例子,java 语言本身很弱,但是库强大。处理个字串都全部用的库函数。
如果有其他语言能方便直接对接现存 java 库,java 也早就被取代了

不可能,除非没有 GC

闷声发大财吗…

游戏服务端是据我所知唯一一个 c++能被 golang 完全替代的领域,其他省省吧

#52 Java ZGC 未来可期(是的我又来宣传 ZGC 了)

你和 #42 起冲突了

#35 这明显是你那经理技术问题,听着跟语言没有啥关系

#24 我怀疑你在钓鱼,Python 表示你在逗我

一个纯讨论到您这就成安利

#37 看来看去就你这个算是真讨论

每个语言都有它存在的道理。想替换 C++,太难。Go 其实是个比上不足,比下也不足的产物。想去替换 C++但是根本做不到。因为底层 rust 的性能远比 go 来的强,rust 都做不到,更何况 go 呢?如果是上层应用,比如 web,又比不过 java 。Web 后端开发,能有 java 更快的么。所以其实 go 还是蛮尴尬的,个人见解

为了 go 我可以放弃 JAVA 取代不取代 这个话题 太容易钓鱼了🎣

完全替代是不可能,如果排除掉某些,那也不叫完全了。
如果只是单纯要拿来替代,不考虑其他问题和成本,那大部分情况下都是可以的。
大部分语言在大部分情况下都可以被别的语言代替。C++可以被 go 替换,Go 也可以被 C++替换
一般个人写某门语言不爽了,随时可以换其他语言重写。但一个公司那么多人,不会出现某个员工觉得用某某语言不爽,叫公司换语言。只有遇到因为语言的严重的缺陷导致的问题,才会考虑。
一个用 C++的公司,招的员工都是用 C++的,一般都是熟悉 C++,不熟悉 Go,你问他们选择用什么,那肯定是选择熟悉的 C++。

客户端服务端完全不是一个领域,不多解释了

你说的是真理,不过从未来选型角度和人才输出来看,我才会发出此疑问

你这个说的在理
go 生存在一个半低层区域,至于说做 web 应用,主要是我特别不喜欢 java,但我也承认生态上 java 是无敌的

😆你这个回答让我意识到我的确标题用的不好,完全替代我自己都不相信,应该看能占据多少份额

#64 客户端的话 unreal 我听说用的 c++,unity 用的 c#,这种就是生态问题了

十多年前,JSP, Spring, struct, hibernate, EJB 都被你吃了?

10 多年前用 jsp 的知名网站有几个?你给我列举 10 个。

go 没可能,rust 有可能

企业级应用基本都是 jsp 的,庞大的 JavaEE 市场你都不知道嘛?

unity 引擎本身还是 C++吧

go 从设计底层来说,就不适合写 UI 类型的应用。其次 kotlin 直接编译成 jvm 的字节码,和 Java 无缝衔接,Android 切换到 kotlin 开发没有什么成本,换 go 的话成本高多了

自己收藏了一个链接,辩证的看吧,技术选型只有遇到瓶颈的时候才会显示出重要性: https://www.zhihu.com/question/50065322/answer/1095622997

一直不知道“Rust 学习曲线陡峭,注定小众”这个说法是怎么来的,rust 完全对标 cpp,论学习曲线、上手难度远比 cpp 容易的多,cpp 这么一个恶心丑陋的缝合怪都能流行起来为什么 rust 不行呢。

对性能要求特别高的场景不太可能完全用 go 去做. 至少是在 hot path 上用 c/c++/rust 来处理.
所以完全替代 c++ 是不存在的. 这个任务就丢给 rust 这种吧.

对于绝大部分的应用服务来说 go 是可以用来取代 c/c++ 的. 心智负担上小不少.
当然这同样也是 Java 的主场.

不可以,C++需要一个没有 GC 的语言替换,目前比较公认的是 rust 。

别说太满,C 不可以还接近点。C++嘛,没准 10 年后,真大变样了。

cpp 的问题你是说到点上了,rust 的问题还是生态问题,而且缺少杀手级别应用
就好比 go,没有 docker,go 还不知道在干嘛

#79 你这句我是同意的,c 是无敌的,c++太乱了

不可能,只要追求性能的程序,一定是 c 艹的天下

其实 Go 算起来还能算 C 一族语系,底层内存模型几乎都是用 C 解释的。因此 Go 另外一个好处就出来了,学好 Go 理论上是可以平滑深入 C 的。JAVA C#这种优势就比较小,我刚开始学 Java 其实引用类型跟值类型都好久没搞懂。学了 Go 之后反而有些东西豁然开然了。

那都比较后面了,03,04 年的时候,主流机器还是单核 2Ghz,256m,512m 内存,跑 c++都觉得慢,印象中也就银行,网易会用 jsp,其他都是 php,asp,vc6.0 vb6.0,那时候 java 还是用 jbuilder 做 ide,卡得要死,j2ee 有,但不流行,一般公司用不上,需求都是做 erp 。



C++也很陡峭了,用了 10 多年都没学完所有特性,很多特性不到那个场景也用不到。C++之父给它定义的原则是,包含所有完善的语言特性,用不用和用法由人去决定,没有包含 GC 是因为 GC 没有达到他的“完善”标准。我认为如果要 Rust 优雅起来,会损害灵活性,就不可能替代 C++了。

不能,go 最适合搞网络编程,其他领域都一般。

连 google 自己也没有全线采用 Go 来替代。一般而言,需要按照具体的需求和情况来分析。

替代 Python 倒是有那么一点点可能

python 又不用来写 web,ai 和 cv 不都是 python 嘛。

懒得吐槽了,就大量小对象这个场景,放 c++ 也是要建个对象池的。我逆向过很多游戏,都是这么设计的。

结果在 java 上,就把这设计给忘了。

rust 能替代 c++吧

您看过 chromium 的代码吗?说不定别人正在用 go 小范围重构呢?

真是日经贴。。。天天争哪个语言好能加工资吗?

死循环 跟 协程那个快? 毫无疑问 死循环快

#82 java 是引用类型还是值类型?

就是说垃圾回收要自己手动处理这个问题,我认同的观点技术选型和人的因素关系也很大

你知道 Linus 今天起床后脑袋里想了什么吗?说不定他正在设想明天用 Go 重写 Linux 内核呢

golang 的应用场合是高并发的服务端,取代部分 j2ee,跟 cpp 的重合度并不高

是,cpp 除了这个场景再就主要是系统了,还有计算密集,和游戏客户端

够浪能开发 3D 游戏么?

针对“Golang(Go语言)能否完全替代C++”这一问题,作为IT领域Go语言方面的专家,我认为:

Go语言和C++都是功能强大的编程语言,它们各自具有独特的优势和局限性,因此Go语言不能完全替代C++

Go语言适用于网络编程、分布式系统、云原生应用等场景,以其简洁性、高效编译速度、原生并发支持、静态类型检查和自动垃圾回收机制而著称。这些特性使得Go语言成为开发现代大规模分布式系统和微服务架构的理想选择。

C++则以其灵活性、丰富的数据类型和运算符、强大的图形功能以及高效的代码执行效率而闻名。C++既可以进行过程化程序设计,也可以进行面向对象程序设计,适用于游戏开发、设备驱动程序、高性能计算等多种领域。

综上所述,选择Go语言还是C++取决于具体的项目需求、性能要求、开发效率和生态系统支持等因素。两者各有千秋,无法一概而论哪种语言可以完全替代另一种。

回到顶部