NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
ZH

编程语言比较

Rust 与 Go:同一问题的两个现代答案

Rust 和 Go 都回答了“我们应该在 C 之后用什么来编写系统和服务?”的问题。他们从相反的方向回答。 Go 保持了简单性:一种大致稳定的语言,一个在你喝咖啡之前完成的编译器,以及一个无需运行时即可部署到任何地方的静态二进制文件,这就是 Docker、Kubernetes 和 Terraform 等云基础设施的构建方式。 Rust 保持了安全性:无需垃圾回收的内存正确性,一种将所有类别的错误转变为构建失败的类型系统,以及足够的低级控制来编写内核空间代码,正如 Rust 自 2022 年以来被合并到 Linux 内核中所表明的那样。实际上,这种划分是干净的:基础设施工具和云服务去 Go;性能关键、正确性关键或资源精确的工作采用 Rust。

要点

  • Go 的部署简单性是无与伦比的:单个静态二进制文件,无需仪式即可交叉编译,这就是容器工具在其上标准化的原因。
  • Go 编译速度很快,它的工具链是一个二进制文件:团队每天都会发布,而无需构建服务器在模板实例化下抱怨。
  • Rust 的所有权模型是这样的:负载下没有泄漏,没有释放后使用,产品中没有数据竞争。编译器拒绝让它们存在。
  • Rust 没有 GC,因此适合延迟和堆预算严格的场合:系统代码、嵌入式和与驱动程序相关的工作。
  • Rust 的内核存在是真实的并且不断增长:Linux 在 2022 年合并了最初的支持,驱动程序(而不是核心调度)引领了迁移。
  • Go 的简单性是一个上限:大型 Go 代码库积累了 Rust 一般表达的粘合和接口体操。
  • 网络服务诚实地进行比较:Go 的 goroutine 和垃圾收集器可以完美地处理大多数 Web 后端;仅当您真正关心时,Rust 才能赢得尾部延迟优势。
  • 昂贵的资源是人员:Go 广泛招聘且入职速度快; Rust 招聘的范围更窄、速度更慢,但往往会保持谨慎的态度。

一线手记

我们通过对 Rust 和 Go 提出同样的问题来分配 Rust 和 Go:这段代码在哪里没有失败的空间? Go 获得了带有一个静态二进制文件的舰队工具,Rust 获得了永远不会崩溃的解析器。

常见问题

我应该先学哪个?

寻求运输服务并实际了解并发;当你想深入了解内存和系统时,请选择 Rust。大多数通晓多种语言的职业都受益于两者。

Rust 实际上比 Go 更快吗?

由于没有 GC 和更好的优化,通常在计算和分配密集的路径上,但差异只在尾部重要。对你的形状进行基准测试。

为什么基础设施要在 Go 上标准化?

静态二进制文件、廉价构建、小型并发程序以及数十年的网络优先人体工程学:它解决了无聊的部署问题,而这正是平台所需要的。

Rust 在哪里明显击败了 Go 作为选择?

嵌入式、设备驱动程序、不得崩溃的解析器、安全关键基础设施以及垃圾收集暂停不可接受的任何地方。

Kinetikatech 如何在编程语言比较方面为您提供帮助

您不必自己成为编程语言比较专家:用于系统工作、脚本编写和服务的语言,比较生产中实际重要的内容:安全保证、原始速度、可以雇用的人以及部署和修补所产生的服务的痛苦程度。服务器管理和网站维护正是为此而设:配置、加固、监控,并有工程师日夜值守。

与工程师交谈

服务器问题?网站被黑?网站缓慢?

严重问题 30 分钟内响应 — 每天 24 小时,每周 7 天。

请求紧急支持 support@kinetikatech.com