Rust语言与Go语言各自特点概要比较 –thenewstack


在本文中,我们将讨论Rust和Go的优缺点,以及它们如何相互补充和相互支持,并针对每种语言何时采纳提出最合适的建议。
 
相似之处
Go和Rust有很多共同点。两种都是现代软件语言,两者的创建都是为了应对创建者在业界现有语言中遇到的问题:生产力、可伸缩性、安全性和并发性。

  • 性能和并发

Go和Rust都是致力于生成高效代码的编译语言。它们还提供对当今机器的多个处理器的轻松访问,使它们成为编写高效并行代码的理想语言。Go具有开箱即用的出色性能;Rust的设计使您能够从代码中优化出所有最后的性能提升。在这方面,今天您真的找不到比Rust更快的语言。但是,Rust的性能提高是以增加复杂性为代价的。
  • 团队可扩展性

当今的软件开发是由成长和扩展的团队建立的,并且经常使用源代码控制以分布式方式进行协作。Go和Rust都是针对团队的工作方式而设计的,通过消除格式、安全性和复杂组织等不必要的问题来改进代码审查。两种语言都需要相对较少的上下文来理解代码的作用,从而使审阅者可以更快地使用其他人编写的代码,并可以审阅团队成员的代码以及团队外部的开源开发人员提供的代码。
Go的快速迭代优势使开发人员可以快速尝试想法并磨练可解决当前任务的工作代码。通常,这足够了,并可以使开发人员有更多时间从事其他任务。另一方面,与Go相比,Rust的编译时间更长,导致迭代时间更慢。这使得Go在更快的周转时间允许开发人员适应不断变化的需求的场景中可以更好地工作,而Rust在可以花更多时间进行更精致和高性能的实现的场景中蓬勃发展。
  • 学习能力

确实没有比Go更容易上手的语言了,关于采纳Go语言的故事很多,他们采用Go并在几周内将Go应用投入生产。此外,Go在各种语言中相对独特,因为在其10年以上的生命周期中,其语言设计和实践都相当一致。因此,花在学习Go上的时间可以长期保持其价值。相比之下,Rust由于其复杂性而被认为是一种难以学习的语言。通常,需要花费几个月的时间来学习Rust,以适应它,但是这种额外的复杂性带来了精确的控制和更高的性能。
  • 精确控制

Rust的最大优势之一可能是开发人员对内存的管理方式,如何使用机器的可用资源,如何优化代码以及如何制定问题解决方案的控制权。与Go相比,这并不意味着没有很大的复杂性成本,Go的设计目的是减少此类精确制作的时间,而为更快的探索时间和更快的周转时间而设计。
 
总结/要点
Go可使团队可以将精力集中在灵活性上;Rust更好的控制可以实现更高的精度。
Rust能成为低级别的理想语言;在大规模部署时可以从Go的性能提高中受益。
尽管Go和Rust的设计差异很大,但它们各自的设计发挥了兼容的优势,一起使用时,具有很高的灵活性和性能。
对于大多数公司和用户,Go是正确的默认选项。它的性能强大,易于采用,并且Go的高度模块化特性使其特别适合于需求不断变化或发展的情况;随着您产品的成熟和需求的稳定,可能会有机会从性能的小幅提高中获得丰硕的成果。在这些情况下,使用Rust来最大化性能可能很值得进行初始投资。