也许是最客观、全面的比较 Rust 与 Go:都想把 Rust 也学一下

最近一年,将 Rust 和 Go 进行比较的不少,但不少都不公正,带感情色彩。而这篇文章客观、全面的分析对比了 Rust 和 Go,让你具体项目时选择最合适的。

Rust 还是 Go,哪个更好?你应该为下一个项目选择哪种语言,为什么?两者在性能,简单性,安全性,功能,规模和并发性等方面如何比较?它们有什么共同点,并且在根本上有何不同?来自 For the Go of Love[1] 系列图书的作者,友好而公正的比较 Rust 和 Golang。

Rust 和 Go 都很棒

首先,非常重要的一点是,Go 和 Rust 都是绝对优秀的编程语言。它们是现代的,强大的,被广泛采用的,并且具有出色的性能。你可能已经阅读了一些文章和博客文章,目的是说服 Go 比 Rust 更好,反之亦然。但这确实没有道理;每种编程语言都代表一组权衡。每种语言针对不同的事物进行了优化,因此,应根据适合你的语言以及你要解决的问题来确定语言的选择。

在本文中,我将简要概述我认为 Go 是理想的选择,以及我认为 Rust 是更好的选择的地方。不过,理想情况下,你应该对这两种语言都有一定的了解。尽管它们的语法和样式差异很大,但 Rust 和 Go 都是用于构建软件的一流工具。话虽如此,让我们仔细看看这两种语言。

相似之处

Rust 和 Go 有很多共同点,这是你经常听到他们一起被提及的原因之一。两种语言的共同目标是什么?

Rust 是一种专注于安全性和性能的低级静态类型多范式编程语言。Gints Dreimanis[2]

Go 是一种开放源代码编程语言,可轻松构建简单,可靠和高效的软件。—Golang.org[3]

内存安全

Go 和 Rust 都属于优先考虑内存安全性的现代编程语言。数十年来,使用 C 和 C++ 等较旧的语言已经很清楚,导致错误和安全漏洞的最大原因之一是不安全或不正确地访问内存。Rust 和 Go 以不同的方式处理此问题,但是两者的目的都是要比其他有关内存管理的语言更聪明,更安全,并帮助你编写正确且性能良好的程序。

快速,紧凑的可执行文件

它们都是编译语言,这意味着你的程序直接转换为可执行的机器代码,因此你可以将程序作为单个二进制文件进行部署;与 Python 和 Ruby 等解释型语言不同,你无需随程序一起分发解释器,大量库和依赖项,这是一大优势。与解释型语言相比,这也使 Rust 和 Go 程序都非常快。

通用语言

Rust 和 Go 都是功能强大,可扩展的通用编程语言,你可以使用它们来开发各种现代软件,从Web应用程序到分布式微服务,或者从嵌入式微控制器到移动应用程序。两者都具有出色的标准库和蓬勃发展的第三方生态系统,以及强大的商业支持和庞大的用户群。它们都已经存在了很多年,并将在未来几年继续被广泛使用。今天学习 Go 或 Rust 将是你的时间和精力的明智投资。

务实(Pragmatic)的编程风格

两种语言都不是纯函数式语言(例如 Scala 或 Elixir),也不是全面面向对象的语言(例如 Java 和 C#)。相反,尽管 Go 和 Rust 都具有与函数和面向对象的编程相关的功能,但它们都是务实的语言,旨在以最合适的方式解决问题,而不是强迫你采用特定的处理方式。(不过,如果你喜欢函数式编程风格,则在 Rust 中会发现更多的函数式特性,因为 Rust 的函数式功能比 Go 多得多。)

我们可以讨论什么是“面向对象”语言,但是公平地说,Go 或 Rust 中都没有 C++,Java 或 C# 用户期望的面向对象编程风格。—Jack Mott

大规模发展

Rust 和 Go 都具有一些有用的特性,这使其适合于大型编程,包括大型团队,大型代码库,或两者兼而有之。

例如,尽管 C 程序员多年来一直在争论括号的位置,以及是否应使用制表符或空格使代码缩进,但 Rust 和 Go 都通过使用标准格式工具(gofmt 用于 Go ,rustfmt 用于 Rust)完全消除了此类问题。它使用规范样式自动格式化你的代码。并不是说这种特殊的样式本身如此出色:而是 Rust 和 Go 程序员所欣赏的

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值