Wii
Wii
发布于 2026-06-27 / 2 阅读
0
0

ChatGPT 评 Rust 之争

提问

AI 银弹

团队来了一个经验丰富的新人,在入职的第三天,团队负责人沟通说,在新人的建议下,考虑把系统的 Go 服务逐步迁移到 Rust,并先在新系统的某个模块开始使用。我抛了两个问题,收益是什么?代价呢?

一遍遍强调耳熟能详的,Rust 相比于 Go 有很大的性能提升,没有 GC 带来的长尾耗时优化;相比于 C++ 有更好的内存安全保障。

但是代价呢,就说有没有优势就完了?

就引入 Rust 来说,有他的一体两面。现实是,Rust 语言本身的生态完善度、团队的知识储备、和现有架构的契合程度,这些不是考虑的因素吗?现在已经有了基于 Go 和 C++ 比较完善的基础架构和丰富的经验,引入 Rust 之后,短时间内又难以完整替换 Go 或 C++,同时维护三套技术体系及基础架构的复杂度不应该考虑下吗,尤其是在一个生死未知的 “创业团队”?

另外,算上新人满打满算 4 个研发,接管原本一百多号人维护的完整在线程序化广告交易引擎。

AI 太强大了,有了 AI,一切问题都迎刃而解,是这样的吗?只能期望是吧,我知道,会引入,自己也改变不了。

你怎么看?

注: 以下全文由 ChatGPT 生成

ChatGPT 回答

我其实比较认同你提的两个问题:

收益是什么?

代价是什么?

可惜很多技术讨论,尤其是 Rust、AI 这些热门话题,很容易只讨论前者,而忽略后者。


Rust 是不是好?

当然好。

我自己也认为 Rust 是目前工程设计最优秀的系统语言之一。

它解决了很多 C/C++ 十几二十年没有真正解决的问题:

  • 内存安全

  • 数据竞争

  • 零成本抽象

  • 没有 GC

  • 性能非常优秀

  • 编译器帮助发现大量 Bug

这些都是真的。

但是……

语言优秀 ≠ 项目适合。

这是两个完全不同的问题。


技术选型应该看 ROI,而不是语言排行榜

一个成熟团队讨论技术选型,一般都会看四件事情:

收益(Benefit)

成本(Cost)

风险(Risk)

机会成本(Opportunity Cost)

很多人只会说第一条。

例如:

Rust 快。

然后结束。

这不是技术方案,这是宣传语。


你的团队情况,我看到几个关键词

创业团队

四个研发

接管一百多人的广告引擎

这三个关键词组合起来,我第一反应不是:

Rust 能提升性能。

而是:

你们最大的瓶颈真的是 CPU 吗?


程序化广告(RTB)这种系统,我反而更关心:

  • 有没有 SLA

  • 有没有稳定上线流程

  • 有没有完善监控

  • 有没有压测体系

  • 有没有自动回滚

  • 有没有值班体系

  • 有没有知识沉淀

  • 有没有自动化测试

因为这些东西,远比:

Go 比 Rust 慢 10%

重要得多。


Go 最大的优势,其实不是 GC

很多人理解 Go:

GC。

Goroutine。

其实不是。

Go 真正厉害的是:

工程效率。

例如:

新人一周能开始写代码。

半年以后基本没人写出特别奇怪的 Go。

一年以后团队代码风格高度一致。

这是 Go 最恐怖的地方。

而 Rust 呢?

一个优秀 Rust 工程师:

可能写得非常漂亮。

另一个普通 Rust 工程师:

可能 lifetime 写到怀疑人生。

最后:

整个团队只有两个人敢改核心代码。

这就是维护成本。


Rust 的成本,很多人不会告诉你

例如:

① 培训成本

不是:

学一下语法。

而是:

真正理解:

Ownership

Borrow Checker

Lifetime

Unsafe

Pin

Async

Tokio

Send / Sync

Interior Mutability

这些没有半年以上,很难说熟练。


② 招人成本

Go:

市场非常成熟。

Rust:

优秀 Rust 工程师少得多。

尤其真正写过大型后台系统的人。


③ 基础设施成本

你们现在已经有:

Go

C++

CI/CD

监控

日志

Profiling

RPC

部署

运维

全部围绕 Go。

现在引入 Rust:

意味着:

CI 要支持。

静态扫描要支持。

安全扫描要支持。

镜像要支持。

Debug 要支持。

Crash Dump 要支持。

Profiling 要支持。

依赖管理要支持。

开发机环境要支持。

新人文档要支持。

……

这些不是一天完成的。


④ 三语言维护

这是我最担心的。

现在:

Go

C++

以后:

Go

Rust

C++

三套:

Build

依赖

工具链

最佳实践

代码规范

招聘

Review

全部三份。

四个人维护。

你觉得压力会不会变大?


AI 能不能解决?

这是最近最流行的一句话:

AI 都能写。

我觉得:

AI 确实能降低语言门槛。

但是:

降低的是:

写出来。

不是:

维护十年。


举个例子。

AI 可以生成:

2000 行 Rust。

但是:

凌晨两点:

线上:

一个 Tokio Runtime Deadlock。

一个 unsafe。

一个 Arc<RwLock<HashMap<...>>>。

一个 Future 没有 Send。

AI 能不能第一时间定位?

当然可能帮助你。

但是:

最后背锅的人是谁?

还是值班的人。


AI 最大的问题不是写代码

而是:

谁判断 AI 写的是对的?

Rust 尤其如此。

Rust 很容易:

AI 为了让 Borrow Checker 通过。

疯狂 clone。

疯狂 Arc。

疯狂 Mutex。

最后:

代码能编译。

性能下降。

设计变差。

维护更难。

如果团队没人真正懂 Rust。

Review 根本 Review 不出来。


创业团队最大的资源是什么?

不是 CPU。

不是内存。

是:

时间。

每个月:

只有那么多人天。

如果花:

三个月:

把 Go 改 Rust。

那这三个月:

没有新功能。

没有客户需求。

没有稳定性建设。

没有监控。

没有报警。

没有自动化。

这就是:

机会成本。


我反而赞同一种更保守的做法

如果真的要引入 Rust。

那应该满足几个条件。

例如:

Go 明显已经成为瓶颈。

例如:

CPU 占 90%。

GC 占 20%。

Profiling 已经证明:

Rust 可以明显改善。

再:

只替换最适合的模块。

例如:

  • 高性能 Codec

  • 压缩

  • 加密

  • JSON Parser

  • 特殊计算

  • SIMD

  • 状态机

这些都可以:

Rust Library

CGO

Go 调用。

而不是:

"整个服务以后都 Rust。"

这是两个完全不同的战略。


最后,说一个我比较在意的细节

你提到:

新人第三天。

我觉得真正让我担心的,不是 Rust。

而是:

团队决策机制。

一个新人可以提出建议,这很好。

但是:

如果一个影响未来数年的技术路线,仅凭入职三天的建议就开始决定,那说明团队需要更严谨的技术决策流程。

成熟的工程团队通常会要求:

  • 明确当前痛点(有什么证据证明现状存在问题?)

  • 给出可量化的收益(预计提升多少?如何验证?)

  • 分析引入成本(学习、招聘、基础设施、维护)

  • 分析风险(是否可回退?是否影响交付?)

  • 做一个小规模 PoC,通过数据验证,而不是凭印象决策

  • 再决定是否推广

这样,无论最终结论是 Go、Rust,还是其他技术,都是基于工程事实,而不是技术热度。


所以,如果问我的结论,我不会说「不要用 Rust」,也不会说「Rust 一定值得」。

我的结论是:

对于一个只有 4 名研发、需要接管一个原本由百余人维护的广告交易系统的创业团队来说,最大的风险通常不是 Go 的 GC,而是团队交付能力、系统可维护性和组织承载能力。

Rust 是一种优秀的工具,但引入它本身就是一项工程投资。只有当它解决的是当前最主要、最昂贵的问题,并且收益能够覆盖学习、维护和组织成本时,这项投资才是合理的。否则,它很可能会成为新的复杂度来源,而不是银弹。

至于 AI,我认为它最大的价值是提高已有能力的产出效率,而不是替代工程判断。AI 能帮助一个熟悉 Go 的工程师更快写 Go,也能帮助一个熟悉 Rust 的工程师更快写 Rust;但它并不能替团队承担技术债、维护成本和长期架构演进的责任。这些最终仍然需要团队自己做出并承担决策。


评论