25

全面比较Rust与Go语言

 4 years ago
source link: http://developer.51cto.com/art/202007/620370.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

aeuyMfj.jpg!web

【51CTO.com快译】

众所周知,为了在竞争激烈的业务应用中得以脱颖而出,并能够蓬勃发展,选择正确的基础性编程语言是非常至关重要的。与此同时,对于企业和开发人员来说,能够为其用户提供良好的使用体验也是值得考虑的当务之急。

根据过往的项目实践经验:在如今各种琳琅满目且各有专攻的编程语言中,我们很难只选择其中的一种,去通配各种实际应用的场景。因此,在本文中,我将和您讨论两种最受欢迎的编程语言--Rust和Go,并详细比较它们各自的优缺点。

Rust

于2010年推出的Rust语言,旨在通过各种出色的模块化,提高程序的安全性,以及改进原有的并发量和性能。有研究表明(请参见--https://blog.rust-lang.org/2018/11/27/Rust-survey-2018.html):2018年,Rust编程语言的使用量增长了约有23%。目前,大约有74.5%的开发人员看好Rust编程语言。而业界用到Rust编程语言的项目也是比比皆是。

Rust的优点

  • 相对其他编程语言,Rust的整体速度要快许多。这恐怕也是它如此流行的原因之一。
  • 大幅减少了崩溃、测试和调试的时间和频率。
  • 具有零成本抽象(Zero-cost abstraction)和运行时(runtime)的可预测行为。
  • 阻止那些不受保护的内存访问。
  • Rust拥有广泛的支持社区。
  • Rust可与C、FFI(译者注:Foreign Function Interface)和许多其他语言进行互操作。

Go

由Google于2007年推出的Go语言,旨在从理念上提高程序的“生产力”。Go(也称为Golang,https://golang.org/)在内置并发数和垃圾收集方面非常见长。Go被设计为可以横跨各种组件的边界,来管理严苛的依赖性和鲁棒性。

Go的优点

  • Go的最大优点是简便。
  • 它是一种以高效、简洁和顺磁性(paramagnetic)而著称的语言。
  • 开发人员将受益于该语言极大的灵活性。
  • 就代码的编译效率而言,它比任何其他编程语言都要迅速。
  • 它与C#语言之间具有极强的互操作性。

上面是我们对Rust和Go语言基本特征的介绍。下面,让我们从性能、并发量、开发速度、以及内存管理等方面进行比较。

性能

无论是软件程序还是应用产品,性能总是大家考虑的首要因素。就两种语言的运行速度而言,Rust之于Go,好比C ++之于C。而在开发速度方面,Go会比Rust来得快。在性能方面,Go比Rust要慢很多。

并发量

撇开功能不谈,各类应用程序的基本原则应该是:能够保障在平稳运行的同时,避免出现各类数据遭受损坏的风险。因此,我们往往需要通过任务之间的状态共享,来控制此类风险。那么就并发而言,Go的语法中会带有内置的并发性,而Rust并没有。

开发速度

在某些快速试错和迭代的需求场景中,有时候程序的开发速度比其本身的运行速度更为重要。Go语言自带的简单性和直接性,使其比许多其他语言更为迅速和高效。而在另一方面,Rust虽然带有更多的语言功能,但是这也导致了程序员的开发、甚至是编译的过程更需要时间。因此总的说来,Go语言在开发和编译上的速度更加占优。

内存管理

通过上述提到的零成本抽象,Rust使用编译策略进行内存管理(请参见--https://dzone.com/articles/memory-management-net)。如果Rust程序中存在任何安全问题,它将在编译阶段无法被执行。Go语言虽然有着与Rust一样的内存安全性。但是由于Go的内存管理是在运行时自动处理的,因此有时可能会引起某些不可预见的问题。可见,Rust在内存管理方面比Go要更为可靠。

不过在Web开发中,虽然两者都能够提供出色的Web设计支持,但是在普通开发者眼中,Go要比Rust略强一些。

总结

其实此类细枝末节的讨论和比较,可能永远也没有尽头。凡事都有优缺点,纵然是顶级的编程语言也是如此。那么我们具体应该如何去选择,则很大程度上取决于手头的实现项目需求。下面,我只是给出一些适合于某种语言的场景与需求的经验总结:

何时该选择Rust:

  • 如果您计划与C语言实现互操作的话。
  • 如果性能是您业务的主要目标。
  • 当您需要对平台中的每个程序进行控制,并希望准确地了解系统中每个线程的性能时。

何时该选择Go:

  • 当程序的可读性是您的主要需求时。
  • 如果您的目标是简单且统一的话。
  • 如果您想实现更快的开发和编译的话。

原标题:A Detailed Comparison Between Top Programming Language: Rust vs Go ,作者: Paresh Sagar

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【责任编辑:庞桂玉 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK