«

为什么 GO 语言地位很尴尬?

时间:2026-7-17 22:26     作者:独元殇     分类: 开发相关


欢迎关注我的公众号,名叫「串串狗小刊」

GO 语言很尴尬,也很可惜。

本来 GO 一定是可以成为最流行的编程语言的,只可惜谷歌团队的某个决策。

我现在写小工具,一般不是 Rust 就是 Python ,GO 我有接触过,但是毕竟 AI 写,GO 现在基本没有什么方面有非用不可的优势。

本来,GO 语言的特点就是速度快,但是现在大部分的编译语言其实也不比 GO 慢太多了,而且 Rust 也相当快,好像比 GO 还快。有人说:慢语言变得更快,难语言变得更容易,Go 所占据的中间地带将不复存在。

也就是说,开发者往往会在选择语言时,有两个因素要考虑,性能速度 和 语法难度。

img

添加图片注释,不超过 140 字(可选)

两者基本不可兼得。而 GO 就是正好处于中间地带。快,而且语法还足够简单,开发效率可以。

想要性能更高,就选 Rust ,想要开发快,就选 TS 或者 Python,或者 JS 。如果都想要,那就选择 GO 。GO 一直是靠中间路线来成功的。

但是!

慢慢的 Go 语言就没有这个优势了。

因为 Python 和 JS 的编译器、运行时 等工具逐年进步,性能也越来越高,而那些复杂的语法的,但是速度贼快的 Rust Zig C++ 等也一直在改善工具链和体验,其实语法现在也没那么难了。那么 GO 的地位就慢慢没有那么优越了。

未来新时代的基础设施(就是对性能要求会高),会大量的使用 Rust ,甚至 Zig 。GO 未来估计不容乐观。

其实,GO 还是有机会逆风翻盘的,那就是 Arena ,能让 GO 突破一点性能瓶颈,只可惜他们的开发团队,没有把它合并进来。

GO 的本来的一个优势是 Arena

什么是 Arena 。就是 内存池 。

这是 2022 年 GO 语言团队做的一个实验。

怎么解释呢,就是说 GO 是可以自动管理内存的,也就是说我们写代码创建对象时,你只管自由的申请内存就可以,之后你就不用管了,后续系统会帮你找到然后自动帮你释放掉。

但是这个方法,很浪费性能,,,也是 GO 语言的一个性能瓶颈所在地。就像餐厅的服务员,每时每刻都要去检查客人的盘子、桌子还能不能用。

然后有人提出使用 Memory Arena 这个方法。

这个机制会更加的粗暴和高性能,具体怎么实现我就不说了,大概可以理解为 一个餐厅,在吃完饭后直接清空,而不是边吃边收拾。

这样 GO 可以开启更快的速度。

显而易见,这在最开始是要去申请很大一块内存的(根据需要,也不一定会很大).... 但是其实,现在的电脑那么发达,一些服务如果能跑的快一点,多点内存没什么。GO 是为数不多的语法极简单,速度还不错的语言,可以接受的。

为什么放弃了

据说谷歌有试过,这个 Arena 方法,可以提高 15% 的 CPU 和内存节省,很厉害。

但是,它不安全。

因为等 Arena 大法,在任务结束后一整块都释放时,缓存并没有清除(或者说,是某个引用活的更久了一点)。

然后其他的程序再读取时,会访问就地址 (这种现象,学名叫 use-after-free )。

这是会造成程序的崩溃、损坏,以及安全问题。

而且和 GO 的安全理念相悖。

大概就是这个意思,然后 这个 Arena 就被放弃了。

毕竟,,,, GO 又不是 C++ ,在 C 和 C++ 里,你这样写,程序会老实的运行、然后崩溃。但是这里可以 GO 啊。GO 不想让代码出现这种错误,于是就放弃了(官方说是 无限期搁置 ,不过也差不多) ~

其实 GO 如果愿意牺牲一下,让程序员自己操点心的话,这个优势可能会让 GO 更加快,更加有优势,然后不再地位那么尴尬,之后很可能会变得非常流行。

参考资料:

https://go.dev/issue/51317

https://cwe.mitre.org/data/definitions/416.html

https://www.andrewvittiglio.com/thoughts/go-killed-arenas

标签: 原创 Go