Go 与 Rust

目录

  • [1. Go 与 Rust](#1. Go 与 Rust)

1. Go 与 Rust

一位挺 Rust 的网友说道: "我也为这个选择烦恼了很久。最终 Rust 胜出了。首先, 我感觉 Rust 更接近于以前 Pascal 时代的东西, 你可以控制一切; 其次, 如果 wasm 和相关技术大爆发, Rust 将是一个更安全的选择; 然后, 我们已经有了 Python 用于快速开发, 因此选择一些更极端的东西是有道理的, Go 在某种程度上处于中间地带。最后, Rust 应用于内核且备受关注, 所以不太可能会被淘汰。"

另一位持反对意见的开发者则表示, "我从事 Go 开发已经快十年了, 但最近我也尝试了下 Rust。我认为目前有一些对 Rust 的强制性和误导性偏好, 从我在各种初创公司的经验, 包括我目前所在的公司来看, 对于后端开发来说, Go 是迄今为止最佳选择! 注意, 在性能、功能或其他方面......这两种语言非常非常相似! "


Rust 是一种低级静态类型的多范式编程语言, 更多关注安全性和性能。

---Gints Dreimanis

Go 是一种开源编程语言, 能够轻松构建起简单、可靠且高效的软件。

---golang.org


我们当然可以争论什么才是真正"面向对象"的语言。但公平地讲, C++、Java 或者 C#用户所期望的那种面向对象编程风格, 在 Go 或者 Rust 中确实不存在。

---Jack Mott


gofmt 的风格也许不是每个人的最爱, 但 gofmt 却能帮到每一个人。

---Rob Pike

我在职业生涯早期用的是 Java 和 Ruby, 所以编写 Go 和 Rust 代码一直让我有点畏惧、觉得自己掌握不了。但等到进入谷歌并看到用 Go 编写的服务时, 我才真正松了口气, 因为我发现它很容易构建和运行。

Rust 也是如此。虽然我只在小规模项目上进行过研究, 但也看得出它的易用性。我希望那些能够无限配置的构建系统早点成为历史, 现在的新语言都附带自己的专用构建工具而且能够开箱即用, 这样不好吗?

---Sam Rose


Go 确实非常容易学习。之前就经常听人提到这一点, 但实际使用后我仍惊讶于它竟能快速提高工作效率。感谢 Go 语言、相关文档和工具, 我只用了短短两天就编写出了有趣且可以提交的代码。

---Rust 程序员对于 Go 语言的早期印象

使用 Go, 我们可以快速完成工作。Go 是我用过的最高效的语言之一, 它的座右铭就是: 马上解决实际问题。

---Matthias Endler


Rust 比其他几种编程语言支持更多复杂性, 所以对应的实现范畴也更大些。

---Devathon

如果您已经准备好学习更复杂的语法和语义(以及更高的代码可读性门槛), 并以此换取最高水平的性能表现, 那 Rust 甚至足以跟 C++和 D 分庭抗礼。

---Dave Cheney


Go 让我们能更轻松地构建起一个能精心解构的应用程序, 这样的应用程序可以作为一组微服务进行部署, 并充分发挥并发性优势。Rust 也不是做不到, 只是实现起来更难一些。

从某种意义上讲, Rust 更适合那些绝不允许因内存问题而引发安全漏洞的程序员; 但相应的, 他们在执行某些对其他语言(包括 GO)来说较为简单的任务时, 就得付出更多心力。

---Sonya Koptyev

能有用于生成 goroutine 和使用 channels 的轻量级语法真的太棒了。这就是语法之力的直接体现, 种种小细节也让 Go 的并发编程体验比其他语言好出一大截。

---Rust 程序员对 Go 的早期印象

Go 专注于把并发作为最核心的概念之一。这倒不是说我们就没法在 Rust 中实现跟 Go 类似的并发性效果, 只是实现难度对于程序员多少是种考验。

---Dave Cheney


Rust 的编译器简直是严格到迂腐, 它会检查我们使用的每个变量、引用的每个内存地址。它避免了潜在的数据竞争情况, 还会通知你存在未定义行为。在 Rust 的世界中, 并发和内存安全问题几乎不可能出现。

---为什么选择 Rust?

对我来说, Rust 最大的优势就是编译器成了我的好助手, 它不会放过任何检测得到的 bug(说真的, 有时候我感觉它就像会魔法)。

---Grzegorz Nosek

在 Rust 中, 各种库工具都能帮助程序员防止用户犯错。Rust 允许我们指定一段数据, 然后保证它不归属于任何其他事物、也不会被任何其他事物所篡改。我想不起以往还有哪种语言会提供这么多防止意外误用的工具, 这种感觉堪称美妙。

---Sam Rose

如果大家选择了 Rust, 往往是因为要使用它提供的保障性设计: 关于空指针/数据竞争的安全性、可预测的运行时行为, 还有对硬件的完全控制。如果这些对你来说毫无意义, 那确实没必要非得使用 Rust。毕竟这些好处背后是有代价的: 上手很费劲。你得改掉坏习惯并掌握新概念。刚开始的时候, 大家都会被借用检查器折磨得死去活来。

---Matthias Endler

如果你是一名 C 或者 C++程序员, 曾经花几个礼拜在语言中查找内存安全 bug, 那你一定会爱上 Rust。于是"跟借用检查器作斗争"就变成了"编译器还能这么用? 爽! "

---Grzegorz Nosek


如今的服务器程序包含着数千万行代码, 由成百上千名程序员编写而成, 并且几乎每天都在更新。Go 在设计和开发上, 充分考虑到了此类环境下的工作效率提升需求。

Go 的设计考量因素包括严格的依赖项管理、软件架构随系统增长的适应性, 还有跨组件边界的健壮性。

---Rob Pike

使用 GO 语言, 初级开发者往往更容易提高工作效率, 但中级开发者则更难引入复杂的抽象并因此导致问题。正因为这种特性, 在企业软件开发领域, Rust 的吸引力往往不及 Go。

---Loris Cro


Go 跟 Rust 这两种语言可以说截然不同。尽管二者都可以被简单描述成系统语言或者 C 的替代品, 但它们的目标和应用场景、语言设计风格与功能优先级确实差异巨大。垃圾收集就是一大核心差异因素。Go 中的垃圾收集让语言变得更简单、更小巧也更易于理解。Rust 不设垃圾收集则让它速度极快(这一点特别适合那些不仅要求高吞吐量、更要求低延迟的开发者), 同时也实现了 Go 根本不可能做到的一系列功能与编程模式(至少是在不牺牲性能的前提下)。

---PingCAP


两种语言各有不同的应用范围。Go 擅长编写微服务和典型的"DevOps"任务, 但它并不属于系统编程语言。Rust 在强调并发性、安全性及/或性能的任务中更为强大, 可学习曲线也确实比 Go 更陡峭。

---Matthias Endler


Rust 的执行速度优于 Go。在基准测试中, Rust 速度确实更快, 某些情况下甚至能快出一个数量级。但在选择 Rust 语言之前, 请先认清一点: Go 在多数基准测试中也没有落后太多, 而且也仍然保持对 Java、C#、JavaScript 和 Python 等语言的性能优势。

如果你需要的是顶级性能, 那么在这两种语言中任意选择都可以, 速度表现绝不会令人失望。另外, 如果你正在构建一款处理高强度负载的 Web 服务, 而且要求能够纵向/横向灵活扩展, 两款语言也都能满足需求。

---Andrew Lader


我的看法是: 对于明天就得发布的代码, 用 Go; 如果是未来五年内必须能稳定运行的代码, 那么选 Rust

---Grzegorz Nosek

如果你想加快开发速度, 比如说你有很多不同服务需要编写, 或者开发团队本身规模庞大, 那么 Go 语言肯定是正确答案。Go 特别关注并发性设计, 而且会敏锐地揪出不安全的内存访问行为(Rust 也可以), 但又不强迫你逐一管理每处细节。

Go 快速而强大, 但它的核心亮点还是帮助开发人员摆脱困境、专注于简单性和统一性。在另一方面, 如果你需要竭尽全力发挥每一丝性能空间, 那 Rust 才是最理想的选择。

---Andrew Lader


相关推荐
老猿讲编程7 分钟前
用示例来看C2Rust工具的使用和功能介绍
rust
金庆8 分钟前
How to set_default() using config-rs crate
rust·config·set_default·valuekind
DARLING Zero two♡19 分钟前
关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧
c语言·开发语言·科技
Gu Gu Study21 分钟前
【用Java学习数据结构系列】泛型上界与通配符上界
java·开发语言
芊寻(嵌入式)43 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
一颗松鼠1 小时前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
有梦想的咸鱼_1 小时前
go实现并发安全hashtable 拉链法
开发语言·golang·哈希算法
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
天下皆白_唯我独黑1 小时前
php 使用qrcode制作二维码图片
开发语言·php
夜雨翦春韭1 小时前
Java中的动态代理
java·开发语言·aop·动态代理