如果你用 Rust 语言或 Go 语言编写过代码,就会发现它们之间有些相似之处和不同之处。这两种语言的设计目标有重叠的部分,但也有很多差异。正如我们知道的,该如何选择语言取决于要解决的问题。
很幸运,我们找到了一位对这两种语言都有着丰富经验的工程师 — Damien Stanton,并与他进行了一次交流。他从 2014 年开始接触到 Rust 和 Go 语言,当时他从事的某个项目需要能够编译静态二进制文件。由于 Go 和 Rust 语言均具备这样的能力,因此他深入研究了每种方法的优缺点。
虽然在那个项目上他的大部分专业工作都是以 Go 语言实现的,但是他对于 Rust 社区解决各种问题抱有很大的兴趣,比如错误处理,泛型和并发。
于是他花了大量时间研究这两种语言,而且最终他将研究成果提交给了 Go 语言社区——“Go 程序员看 Rust”。
下面就是我们与 Damien 的交流内容,包括:两种语言的的差异、相似之处、以及二者之间的一些争议点。
你觉得它们(Rust 和 Go)有哪些相似之处?设计目标的重叠指什么?
这两种语言以及背后的生态都在尝试解决许多相同或类似的问题。
它们都是介于偏底层的系统语言(就像 C 或 C++ 语言)和基于运行时的语言(比如 Java 或 Python)之间。但它们都更适用于系统编程领域。
易于部署/分发和方便交叉编译是我认为它们都做得很好的点,同时内存安全对两种语言也很重要。它们都天然具备解决高性能或高并发的问题的能力,而这也是使用传统的 Python 或 Java 不容易做到的。
对于内存管理方面,二