Rust VS Python:为啥越来越流行,取代榜一 Python?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust VS Python:为啥越来越流行,取代榜一 Python?相关的知识,希望对你有一定的参考价值。

参考技术A

2021 年,Python 又获得了 TIOBE 年度编程语言,排名已经是第一。而 Rust 依然在 20 名以外。但依然有人认为,Rust 甚至可能取代 Python。不过这不重要,认清两者的优缺点,进而合适的地方使用合适的语言,这才最重要。

在这个指南中,我们将比较 Rust 和 Python 这两门语言,同时将讨论它们各自的应用场景,回顾使用 Rust vs. Python 的优缺点,并解释 Rust 为什么越来越受欢迎(甚至可能取代 Python)。

Rust [1] 是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust 在语法上和 C++ 类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust 最初是由 Mozilla 研究院的 Graydon Hoare 设计创造,然后在 Dave Herman, Brendan Eich 以及很多其他人的贡献下逐步完善的。Rust 的设计者们通过在研发 Servo 网站浏览器布局引擎过程中积累的经验优化了 Rust 语言和 Rust 编译器。

Rust 拥有 优秀的文档 [2] 、友好的编译器和有用的错误消息,以及顶级工具,包括集成包管理器、构建工具、支持自动完成和类型检查的智能多编辑器、自动格式化程序等等。

Rust 发布于 2010 年。虽然和 Python 相比,Rust 是一门年轻的语言,但是它的社区正在稳步增长。事实上,Rust 已经连续五年(2016,2017,2018,2019,2020)在 Stack Overflow 开发者调查的“最受喜爱编程语言”评选项目中摘取桂冠。

乍一看,Rust 的静态化和强类型化可能看起来有点极端。但从长远来看,这有助于防止意外的代码行为。

Python [3] 是一门旨在帮助开发人员更有效地工作和更有效地集成系统的编程语言。Python 提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。如果速度是最重要的,可以使用较低级别的 API 调用,如 CPython [4] 。

1991 年 Guido van Rossum 推出了 Python,以其代码的可读性、无分号和花括号而著称。

除了可扩展性之外,Python 还是一门解释型语言,这使得它比大多数编译型语言要慢。正如您可能期望的那样,Python 拥有一个庞大的库生态系统和一个庞大的专业社区。

Rust 被应用于系统开发、操作系统、企业系统、微控制器应用、嵌入式系统、文件系统、浏览器组件、虚拟现实的仿真引擎等。

当性能很重要的时候,Rust 是一种常用的语言,因为它能很好地处理大量数据。它可以处理 CPU 密集型的操作,如执行算法,这就是为什么 Rust 比 Python 更适合系统开发的原因。

Rust 保证了内存的安全性,让你可以控制线程行为和线程之间的资源分配方式。这使你能够构建复杂的系统,也使得 Rust 比 Python 更有优势。

总而言之,你应在以下情况下使用 Rust:

Python 可以用于许多应用领域,从 Web 开发,到数据科学和分析,到 AI 和机器学习,再到软件开发。

Python 被广泛用于机器学习,数据科学和 AI,因为它:

在以下情况下,你应该使用 Python:

考虑到 Rust 的迅速普及、受欢迎程度和广泛的使用案例,它几乎不可避免地会在不久的将来超越 Python,以下是一些原因。

Rust 超越 Python 的一个主要原因是性能。因为 Rust 是直接编译成机器代码的,所以在你的代码和计算机之间没有虚拟机或解释器。

与 Python 相比,另一个关键优势是 Rust 的线程和内存管理。虽然 Rust 不像 Python 那样有垃圾回收机制,但 Rust 中的编译器会强制检查无效的内存引用泄漏和其他危险或不规则行为。

编译语言通常比解释语言要快。但是,使 Rust 处于不同水平的是,它几乎与 C 和 C ++一样快,而且没有额外开销。

让我们看一个用 Python 编写的 O(log n) 程序的示例,并使用迭代方法计算完成任务所需的时间:

输出:

现在,让我们来看一下使用迭代方法用 Rust 编写的定时 O(log n) 程序:

输出

在没有使用任何优化技术的情况下,Rust 和 Python 在同一台机器上执行类似的操作分别需要 4.6 微秒和 8.6 微秒。这意味着 Python 花费的时间几乎是 Rust 的两倍。

Python 和大多数现代编程语言一样,被设计成内存安全的。然而,即使没有垃圾回收。Rust 在内存安全方面却让 Python 望尘莫及。

Rust 采用了一种独特的方式来确保内存安全,其中涉及所有权系统和借用检查器(borrow checker)。Rust 的借用检查器确保引用和指针不会超过它们所指向的数据。

Python 和其他语言一样,提供了错误检查和日志机制。但是在让开发者知道哪里出了什么问题的时候,Rust 和 Python 之间有一些差异。

举一个 Python 变量错误的典型例子:

Python 输出

Rust 中的类似示例:

Rust 输出

在这里,Rust 推荐了可能的变量,这些变量可能是你想输入的。Python 只会抛出错误,而不会给出如何修复的建议。

再举个例子:

此代码引发错误,因为默认情况下 Rust 中的变量是不可变的。除非它具有关键字 mut ,否则无法更改。

错误:

修正错误:

如你所见,现在它不会引发任何错误。除此之外,Rust 不允许不同的数据类型相互操作,除非将它们转换为相同的类型。

因此,维护 Rust 代码库通常很容易。除非指定,否则 Rust 不允许更改。Python 是允许这种性质的更改的。

与大多数编译语言相比,Rust 因其速度快、内存安全有保证、超强的可靠性、一致性和用户友好性而备受青睐。在编程中,我们已经到了速度开始变得毫不费力的地步。

随着技术的发展,它变得越来越快,试图在更短的时间内做更多的事情,而不需要那么多的权衡。Rust 帮助实现了这一点,同时又不妨碍开发者的工作。当技术试图推动可以实现的边界时,它也会考虑系统的安全性和可靠性,这是 Rust 背后的主要思想。

除了速度外,Python 在并行计算方面也有局限性。

Python 使用全局解释器锁(GIL),它鼓励只有一个线程同时执行,以提高单线程的性能。这是一大局限,因为它意味着你不能使用多个 CPU 核进行密集计算。

如前所述,Stack Overflow 的“ 2020 开发人员调查”中有 86%的受访者将 Rust 称为 2020 年最喜欢的编程语言。

同样,“ 2020 HackerRank 开发人员技能报告”的受访者将 Rust 列为他们计划下一步学习的十大编程语言:

相比之下,2019 年的调查将 Rust 排在列表的底部,这表明 Rust 开发人员社区正在迅速增长。

这些数据表明,Rust 正在成为主流开发者社区的一部分。许多大公司都在使用 Rust,一些开发者甚至用它来构建其他编程语言使用的库。著名的 Rust 用户包括 Mozilla、Dropbox、Atlassian、npm 和 Cloudflare 等等。

Amazon Web Service 还对 Lambda,EC2 和 S3 中的性能敏感组件采用了 Rust。在 2019 年,AWS 宣布赞助 Rust 项目,此后为 Rust 提供了 AWS 开发工具包。

公司正越来越多地用更高效的编程语言(如 Rust)取代速度较慢的编程语言。没有其他语言能像 Rust 一样在简单和速度之间做出平衡。

Rust 已经发展成为一门易于使用的编程语言,因此它的使用率有所提高。尽管 Python 在机器学习/数据科学社区中占有坚实的地位,但 Rust 在未来很可能被用作 Python 库更有效的后端。

Rust 具有取代 Python 的巨大潜力。目前的趋势是,在应用程序、性能和速度方面,Rust 不仅仅是一种编程语言,它还是一种思维方式。

各位看官你们觉得呢?评论区留下你的看法!

24个月暴涨180万名开发者,Rust 迎来高光时刻

编者按:在过去的24个月中,发展迅猛,开发者的数量从60万涨到了220万。过去C/C++、Java等是大厂的常用语言,现在Rust也逐渐崭露头角,谷歌、亚马逊等公司都开始采用Rust了。随着开发人员暴涨,社区贡献的志愿者越来越多,未来的Rust会朝着最流行的行列靠拢吗?

原文链接:
https://thestack.technology/rust-language-explosive-growth-challenges-rust-governance/

编程语言界,Rust正在迎来自己的高光时刻。

根据SlashData2021年开发者报告的数据显示,**使用Rust编程的开发人员在过去24个月内增长了两倍,达到220万。**在行业内,Rust语言也得到了很多领先的CISO(首席信息安全官)的支持,企业对其的接受程度也在不断地提高,比如Canonical、Chef、Cloudflare、Deliveroo等公司都在使用Rust。(列举的只是小部分公司)

![图片: https://uploader.shimo.im/f/5G49XEtkRb6ZSX
C和C++分别诞生于1972年和1983年,作为许多现代软件的构建模块,它们无处不在。但是用C和C++构建也还是容易出现关于内存安全的问题,从而导致下游的严重安全漏洞。相比之下,Rust这种语言会更安全地处理内存管理和其他对安全性要求高的任务。(在Rust中,编译器扮演着守门员的角色,它能够拒绝编译一些有错误的代码,包括并发性错误。)

当然,对于一些为了美观编写整齐的代码的码农来说,这并不值得太过于担忧。谷歌的Project Zero安全研究团队上个月的分析中发现,**在2021年发现的58个被利用的零日漏洞中,有67%是内存损坏漏洞。内存安全问题往往会造成网络安全问题。**在这方面很容易就能找到很多例子。比如,微软所有的CVE中,大约有70%是内存安全问题。以及三分之二的Linux内核泄露也是来自安全问题。

粗略的说,用Rust构建不容易出现这些问题,而且Rust开发者们已经形成了一个非常强大的开发者社区,他们关心性能、内存安全等问题。

多而杂的事情需要基金会处理

**诞生于2006年的Rust,是Graydon Hoare在Mozilla的副业项目。作为一个开源项目,其维护者主要以志愿者身份自主工作。**自2015年Rust 1.0推出以来,该项目一直自主运作——该版本有53个贡献者,主要由Brian Anderson和Patrick Walton与Hoare一起构建。

直到2020年,随着Rust基金会的成立,结束了Rust没有一个独立组织管理的局面。而由于赞助商Mozilla基金会进行了全面裁员最终才促使了Rust基金会的成立,这种情况引起了社区中很多人对Rust未来的担忧,社区所面临的挑战也逐渐凸显出来。(Rust总共有6621名个人贡献者,平均有300人对最近的版本做出贡献。)


Rust基金会本身的规模并不大,是一个由四个人组成的非营利组织,由Rebecca Rumbul博士领导。

Rebecca Rumbul博士是一位经验丰富的非政府组织的董事,还曾是广告标准局的理事会成员、Hansard协会的受托人以及隐私集体的英国代表索赔人。2021年11月,Rebecca Rumbul成为Rust基金会的CEO,她将工作描述为“建立一个团队,坦率地说,我可以做所有‘无聊’的事:处理所有关于法律、会计、财务、商标和许可证的事情、那些人们不愿意在休息时间做的事情以及提供尽可能多的基础设备和支持、以便减少维护者社区对项目管理产生过多的担忧。”

在今年早些时候的一篇博客中,她详细地介绍了最近的工作,从确保Rust在美国之外的商标使用,到创建、管理和组织由Rust基金会赞助的社区支持项目的法律、财务和行政工作等。
她在那篇博客中指出,“在关于法律、安全和合规的问题上,我们仍然需要做大量的工作。”

并在与The Stack的谈话中补充道:“Rust是从Mozilla中分离出来的,而且Mozilla并没有真正计划长期管理它。因此,很多基本的事也需要我们来完成,比如商标或者一些非常罕见的法律问题。我们为项目的开发提供基础设施,所以我们需要负责遵守项目落地的地方法律。我们试图加强在基金会内部以及与项目社区合作的程序,这其中甚至包含了一些很小的事情需要处理,比如确保有人退出某个工作组时有一个既定的流程、确保有合适的基础设施支持、确保能够及时发现空缺,如果有人在休假,能够安排合适的人代替、管理云计算计划等等。还有一些在管理复杂关系之上的问题。例如,4月的Rust基金会会议记录中显示,收到来自其他Sliver(赞助)成员公司的反馈,认为Rust社区的某些贡献者正在代表其雇主,即基金会董事会的大公司,影响Rust的发展。”

一个赞助商甚至认为,成员公司很难影响Rust的发展。与此同时,不断壮大的Rust维护者队伍在继续推动Rust发展——例如,语言、库和编译器团队最近都发布了其计划表,Rust语言团队的目标时间是2024年、编译器团队是2022年,而库团队没有指定具体的时间。(不过如果深入了解了库团队的计划表,就能感受到其中的复杂挑战)

和许多开源项目一样,许多关键贡献者都是志愿者,尽管Rust基金会拥有谷歌、华为、Meta、微软和Mozilla等 "白金 "赞助商,这些大公司似乎还没有拨出大笔资金来支持维护者。不过,2022年启动的Rust基金会社区自主项目预算为62.5万美金,并且会提供四种类型的资助。如下:

  • Rust基金会奖学金:价值1,000美元/月的一年期奖学金(共20个).;
  • 项目资助:单项奖,用于支持1,000美元到20,000美元的独立作品;
  • 活动支持补助金:单项奖,金额从100美元到500美元不等,支持活动开展;
  • 困难奖补助金:单项奖,金额从500美元到1500美元不等。

Rust的未来

随着企业对Rust的兴趣不断增长,Rust的企业赞助商和基金会如何更好的支持Rust发展呢?对此,Rust库团队负责人Mara Bos在与The Stack的谈话中给出了回答。

资助开源,公司不能只顾自身利益

“Rust的发展依靠的是很多志愿者做他们喜欢的工作,以及做他们认为对项目最有利的事。公司应该尽力的支持这一点,而不只是关注自己对Rust的近期目标。有很多公司会为了实现他们特定的新功能而赞助很多钱,但是很少有公司会在没有具体任务的情况下提供赞助。这意味着很多工作,如组织、审查、探索、一般维护、重构和清理、文档、贡献者指南等等,大部分仍然是无偿/无赞助的。”

(Rust库团队负责人Mara Bos)

Mara Bos提到Go维护者Filippo Valsorda最近的一篇文章中的话:“要成功资助一个开源项目,公司需要资助的是维护者,并且金额要与他们作为高级工程师收入相当。”另外,Mara Bos补充道:“这类工作对项目来说非常重要,可以说比创建新功能更加重要。因为这类工作让人焦头烂额,做着一些保持项目健康发展所必须的基础性工作。对我来说,无附带条件的赞助才能让我最大限度地做对项目有利的事。”

关于企业赞助商试图为自己的利益而影响Rust语言的发展方向的问题,Mara Bos表示:“这不是我现在关心的事情。每一个Rust的贡献者都有自己的目标,所以这个项目才一直在处理许多潜在的冲突目标。如果参与决策的每个人都为同一家公司工作,而这家公司一开始为项目进行了管理和规划,那么这个项目就好像是公司的一部分,而不是他们只是在为之做出贡献的独立项目,那就会成为一个问题。Rust领导层的每一个人都对项目的独立性非常关心,如果雇主试图强迫他们做一些不符合Rust项目最佳利益的事情,他们就会进行反抗。如果一个人的下一次奖金或晋升和Rust项目是否接受他们的新功能挂钩时,他可能会感到更多的压力,这可能会导致做出决定的团队面临更大的压力。顺便说一下,Rust是通过共识而不是多数票来做决定的。”

“即使团队中大多数人都同意也不足以让决策实施。需要决策团队中的任何成员都不能对一项永久性的改变有任何反对意见,这样决策才能被接受。因此,要影响那些对项目最有利的决定并不是件容易的事。”Mara Bos在电子邮件中补充说。

除了在基金会工作,其他人也在其他领域努力。例如,由由Ernest Kissiedu和Beni Issembert领导的DevX计划(最初由Concordium提供支持),旨在“弥补从(F)OSS工具中受益的企业与构建和维护这些工具的服务不足的社区之间的差距”,他们不仅共同创立了Rust Cryptography兴趣小组,而且支持Rust形式验证兴趣小组,并赞助Rust项目的五名维护者七个月。

(Josh Triplett,Rust 语言团队的联合负责人)

Rust语言团队的联合领导Josh Triplett(也是DevX赞助的顾问)很高兴看到这里有各种各样的努力。他说道:“赞助必须通过任何特定的组织或实体,这是没有道理的。”“许多公司在赞助Rust开发者方面已经领先了很长时间,比如Embark工作室、Ockam、Discord等等。DevX正试图协调多家公司的关系,使其联合起来,以便能够做更大规模的赞助。Rust基金会开始了他们自己的赞助工作,这非常重要。”

面对暴涨的开发者,Rust的方向需要更加谨慎

Triplett补充说:“我们正在让Rust变得更加实用、把以前只在内部使用的工具带到更广泛的社区,以及推动Rust社区的扩展与合作。我们一直在思考,如果Rust要扩展到不止是两倍的用户,而是一百倍,他们都有自己的用例、目标和背景,那么Rust需要发展成什么样子。我认为2024年的路线图应该从这个方向开始。Rust走的是一条非常谨慎的路线,我们希望听到人们能够说他们能够感受到Rust的支持,因为它很稳定,而且让人相信其不会崩溃。”

在关于是否希望看到社区能够有更多的成就上,Triplett表示:”在实践和统一之间有一个连续的循环:我们尝试解决一类问题的方法,随着时间的推移,我们围绕共同的解决方案进行统一,作为未来工作的基础。”

“现在,我期待步调一致。例如,在标准库中标准化异步特征的工作让我感到很兴奋,因为人们可以编写异步代码,而不必担心他们应该使用哪个框架。我最期待的下一轮实验是基于能力的系统,比如I/O安全工作、Rustix库、WASI及其模块链接······”

不断出现的许可证问题

与此同时,在Rust基金会,关于许可证的问题一直不断出现。“Rust主要是在MIT许可证和Apache许可证(2.0版)的条款下发布的,还有一部分是在各种类似BSD的许可证下发布的。”

Mara Bos说:“大部分的贡献者都认为这算不上挑战。Rust(以及几乎整个Rust生态系统)使用的是非常宽松的许可证…开源和资本主义不相容的方式并不是通过许可证来解决的,而是需要更大的文化变革。我不认为Rust的许可证会改变,即使做出改变可并非让人难以置信。也许我们只是需要对许可进行一些澄清,使其更清楚地了解哪些条款到底适用于哪些部分。”但实际上,Rust基金会表示,他们接到了许多企业用户要求澄清的电话。

正如Rebecca Rumbul所说的那样:“目前我的当务之急只是,做一个全面的审计。我们认识到缺乏清晰度是一个问题,我们每周都会收到几封电子邮件提到,‘你能告诉我,如果我们使用Y,是否可以做X?’我们非常幸运拥有很好的律师,所以能够回答出个别问题。**但如果Rust继续以这样的速度发展,这些问题将会接踵而至,变得难以管理。任重道远。**实际上,我想很多维护者社区参与到一种工作小组中来,在那里可以运用他们的专业知识,但是我也不清楚将会发生些什么。

“但其实Rust基金会对于维护社区没有控制权,我们的存在是为了尝试和管理语言,并且确保语言的持续发展和取得成功。但我们也必须确保我们与社区的需求保持一致,了解他们想要什么,以及他们想怎么做。一些开源项目有点陷入困境,因为开源社区有他们自己的想法,有自己的个人/竞争权力结构。如果我想强迫人们做一些事情,那么我就像是在为企业工作,不是吗?”

以上是关于Rust VS Python:为啥越来越流行,取代榜一 Python?的主要内容,如果未能解决你的问题,请参考以下文章

Rust语言:安全地并发

为啥Flink会成为下一代大数据处理框架的标准

C和C++不安全?谷歌宣布Android加入对Rust语言支持

为啥云平台现在越来越流行,好像它们很昂贵? [关闭]

如何在Kubernetes中使用Envoy作为负载均衡器

豆瓣为啥用python?