Skip to content
返回架构决策

语言选择

按问题形状、团队专长和生态选语言——非潮流。

为什么

语言选择粘——你会在它里写 10 万行并为它招十年。对语言让问题易(Rust 系统、Python ML、Go 服务、TypeScript web)错语言让难(Python 实时 OS 内核、Rust 数据笔记本)。决策应按问题形状(语言擅长什么)、团队专长(能招能审什么)、生态(有什么库)——此序。按潮流选("现在都用 Rust")得技术上行但运维痛的语言,因团队无人能审。

何时使用

新服务或组件开始时。决策 1-2 小时(需原型则数天)。少重访——切换贵。

如何做

1. 刻画问题:CPU 受限?IO 受限?延迟关键?批处理?需 ML?需系统级控制?
2. 列适配问题形状的候选语言:
   - 服务(IO 受限、并发):Go、Java、Python、Node
   - 系统(CPU、内存控制):Rust、C++、C
   - ML/数据:Python、R、Julia
   - Web 前端:TypeScript(唯一真选)
   - 胶水/脚本:Python、Bash
3. 按团队专长滤:能招、审、值班此语言吗?
4. 按生态滤:所需库存在且维护吗?
5. 若剩 2+,各原型最险部分(各 1 天)比较
6. 决策;把理由(问题形状+专长+生态)记 ADR
7. 抗重审——语言折腾比任何单语言缺陷贵

示例

服务:实时价格聚合(CPU 受限、延迟关键、<10ms p99)

按问题形状候选:Go、Rust、Java、C++
按团队专长滤:团队会 Go+Python,无 Rust/C++ 审者
按生态滤:Go 金融库好;Java 更多但更重
原型:写最热路径(订单簿合并)Go 和 Java
  - Go:3ms p99,200 行,易审
  - Java:2.5ms p99,250 行,需 GC 调

决策:Go。理由:适配问题、团队可审+值班、生态足。
  Rust 更快但无法安全审。

常见问题

  • ⚠服务团队选最新语言——新鲜有趣,但值班无人知的语言服务是待发事故。

最佳实践

  • ✓默认团队最强语言除非问题形状明确要求否则——生产力和可审性胜理论性能。
  • ✓每团队生产最多 2-3 语言——多语贵(工具、招人、值班);第 4 语言好处永不回本。

相关资源