对比 Go 语言,Rust 有什么优势和劣势?

2019年8月1日09:52:36 发表评论 629 views

作者:bombless

Rust 相比 Go 的优势:

  1. Rust 可以做内联汇编,Go 不行(Rust 的 SIMD 库也在开发中,这种事情你不会用 Go 做)
  2. Rust 有确定性析构,Go 没有,只能 whole-world-stop 做 GC
  3. Rust 的接口(trait)可以静态派发,做 zero-cost abstraction,Go 不行,它的 interface 只能靠反射做动态派发
  4. Rust 没有运行时,可以写操作系统(我估计至少需要几百行汇编做 bootstrap),Go 离这种能力很远
  5. Rust 有一个更丰富的类型系统,表达能力更强,允许你做更高层次的抽象,写出泛用的库,这个是 Go 不具备的
  6. Rust 有更强的语义,更容易捕获错误的逻辑,编译器直接检查出你代码中的不安全的部分
  7. Rust 的适用领域比 Go 更广
  8. Rust 社区更愿意改变,Go 社区喜欢坚持他们不需要泛型
  9. Rust 有一个活跃的开发社区,如果你发觉有东西需要做出改变,不管是文档、编程思想、语言设计、bug fix 等等,社区欢迎你提出来一起讨论,并且没有问题的建议经常能被快速接受,不管你以后工作中会不会频繁用到 Rust,与 Rust 一起成长总会是一段有趣的体验;相比之下 Go 算是大公司病,人们不那么对提出改进的建议做出积极响应。我自己也曾经为 Go 感到兴奋,在那半年中我却没有读过 Go 的源码;然而在 Rust 这活跃的社区的促进下我也读过一些源码了,如果你对代码的组织方式等源码相关的问题有疑惑欢迎与我讨论。

Rust 相比 Go 的劣势:

  1. Go 相比 Rust 比较简单,相对容易学习
  2. Rust 的语言设计看上去不如 Go 稳定,我是从 0.10 才开始用 Rust ,感受不深,不过我理解更早的用户可以感受到语言设计的巨大变化。我自己也经历过各种 breaking change,比如 enum 成为命名空间时,数组下标从 uint 改为 usize 时。对 1.0 之后语言的稳定性我们只能拭目以待
  3. Rust 是后来者,文档不那么完整、思维需要做出一些转换(因为它比 Go 的内容更加丰富)。这个我必须要补充一句,Rust 文档一直在高效率地快速更新,文档的缺陷通常都是因为相关的改变是最近一个星期才做出来的。关于文档,我自己就参与过几次更改,有这方面的问题欢迎与我讨论。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: