为什么使用Rust的开发人员如此喜欢它

发布于:2021-01-07 10:27:24

0

2691

0

Rust 开发人员 开发人员调查

2020年开发人员调查的结果再次出现,在参与的65,000名程序员中,Rust再次成为最受欢迎的语言。自2016年以来,Rust一直排名第一,表明使用它的开发人员都喜欢它。表示目前正在使用Rust的调查受访者中有86.1%希望明年继续使用它。这是Rust连续第五年荣登榜首,因此我们认为它必须有一些特别之处。

几个月前,我们请Stack Overflow的主要Rust贡献者Jake Goulding(又名Shepmaster)来解释使用Rust的编码人员如何使Rust如此受欢迎。这是他不得不说的一个例子:“简短的回答是,Rust解决了许多其他语言中存在的痛点,这为有限的缺点方面迈出了坚实的一步。”整篇文章值得一读,因为他涵盖了Rust对于来自其他语言的编码人员的好处(以及痛点)。但是,就像杰克一样雄辩而有说服力,我们希望听到更多用户的来信。因此,我在Rust聊天室和Rust论坛上发表了评论。 Rust用户是一群热情的人,我得到了一些有趣的见解以及一些友好的辩论。事不宜迟,这就是Rust如此之多的原因,直接来自Rustaceans本身(包括Rust核心团队的两名成员)。

真正新颖且经过深思熟虑的功能

虽然某些语言只是增加和简化了现有的概念,但一些用户认为Rust实际上是在用编程语言来做新的事情。而且它并不是为了炫耀而做新的事情。他们认为这些设计选择解决了现代编程中的难题。

ZiCog:“铁锈是十二年来我唯一的一种专业使用的语言,实际上它引入了真正的新功能。也就是说,在没有垃圾回收或复杂的运行时系统的情况下,使用经过编译的,真实的系统编程语言来保证内存使用的整个安全性。”

DenysSéguret:“当我们发现一个非常强大的功能(例如在env变量的伪装下读取一个编译上下文元素)可以如此优雅地完成,甚至在编译时解决而没有任何丑陋的矛盾时,我们常常会充满热情。”

janriemer:“ npm工程师Chris Dickinson的一句话对我来说很完美,因为我在不知道当时的引用的情况下也曾想过:'我对Rust的最大称赞是它很无聊,这是赞美。”

Rust是一种编程语言,看起来像是由用户体验设计师开发的。他们对语言有清晰的愿景(为什么),并在听取社区真正的需求的同时,仔细选择要添加到语言中的内容和返工的内容。没有零散的结局,它是一个连贯的整体,可以完美地支持开发人员的工作流程。”

skysch:“我是从Haskell来到Rust的,我觉得Haskell是一种非常优雅和安全的语言。对我而言,最大的区别是,Haskell中的高性能代码和惯用的“干净”代码之间的差异比Rust中的差异更大。大多数Rust代码看起来像大多数其他Rust代码,即使它们表现良好。如果某人在与您通常执行的操作不同的库和目标下进行操作,Haskell可能很快就会变得陌生。语法上的微小差异会导致行为上的巨大差异,Rust在该轴上具有更高的一致性。”

daboross:“编译时间保证:当我想到“静态类型的语言”时,我想到的是Java,C#或TypeScript之类的东西。 它们为编译时保证您的代码具有正确的类型,并将错误从运行时转移到编译时。 锈在这方面更进一步! 编译时间检查扩展到线程安全,所有权语义和验证。

枚举意味着在编译时,我可以声明数据可以存在的一组变体,并且在访问该数据时,我不得不考虑所有可能性。 特性意味着,当我的代码是模板/通用的时,我具有所需的确切功能。

Rust非常向后兼容。 我可以运行为Rust 1.0编写的代码。 同样,我可以编写一些代码,这些代码使我知道下次更新Rust时不必更新。

我发现自己做的样板代码要少得多。 而我确实需要什么样板代码,我通常可以将其隐藏在其他模块中,以免妨碍实际的应用程序逻辑代码。 (最常见的例子是错误类型转换)。”

安全和规模化速度

当前许多编程讨论都围绕是否使用允许您处理内存管理的快速,低级语言或具有更高安全预防措施的高级语言进行。对于Rust的粉丝来说,他们喜欢两者都做。

我看到一个共同的异议,有些人宣称它们实际上是完美的,并且确实编写了完美的代码,而且一切都是桃花心木,他们无法理解为什么其他所有人都对Rust如此感兴趣。但是对于这只老山羊很明显,这些人还没有意识到问题不仅仅在于他们自己。其他人。这是规模经济的问题。

换句话说,如果我有时间和精力去关注每一个细节,并且精心设计每条漂亮的线,而不论其语言或实现细节如何,我自己都可以孤立地编写无缺陷且无错误的代码。但这没关系。一旦我开始依靠其他人编写的代码或新的贡献者来进行修改,我所有所谓的完美保证现在都不符合现实。 “按惯例正确性”无法扩展。

惯例将有缺点,并且将花费不切实际的时间和精力来尝试使本来不应该存在的创可贴自动化。 “啊哈!”现在意识到,通过将相同的约定直接烘焙到语言和编译器中,实际上可以得到更强大的保证。

最重要的是,如果您愿意的话,您还可以获得与微调的手写程序集相当的性能。您可以吃蛋糕也可以吃!”

daboross:“作为图书馆作者,复杂的特征/通用系统意味着我可以制作复杂但易于使用的界面。这些界面不会被错误地使用,这意味着我不必执行运行时检查,并且我的用户甚至不必考虑问题案例,因为他们无法编写它们。

作为图书馆的消费者,丰富而广泛的板条箱生态系统使我能够在不同的领域编写代码,而无需深入研究每个细节。我不需要知道JSON解析器或编写器如何使用Serde,而且我的知识不足永远不会成为bug的来源,因为我得到的是编译时错误,而不是运行时错误。

使用Rust时,我真的感到很照顾。从软件包升级到类型错误,再到传递接口不期望的字符串,再到随机运行时错误,这些琐碎的事情我都完全不在Rust中使用。我可以考虑一下算法!”

业余爱好者对具有挑战性的语言的热爱?

还记得我提到的辩论吗?我看到一些来回的疑问是,“最受喜爱”的标题是否来自Rust拥有很少的用户群,而该用户群大多选择使用该语言。的确,在过去的一年中,只有5.1%的受访者使用过Rust,这些用户希望继续使用Rust。

CAD97:坦率地说:我认为Rust在这里受益匪浅,很少有人被迫使用Rust。多数人仍然选择使用Rust。

我并不是说Rust不配标签(我很确定是这样!),我只是在说Rust处于非常合适的位置,可以“游戏” SO在这里实际测量的指标,因为它狂热者大范围地选择采用,但是那些强迫人们使用他们不想继续使用的语言的人采用率较低。”

ZiCog:“如果您使用任何编程语言足够长的时间,您就会认为它很糟糕。使用很多年了,它们都很烂。

那些使用各种语言进行大量编程并拥有技能和才能的人,最终发明并实现了自己的新编程语言,以解决他们过去遭受的所有痛苦。如您所知,因此,新语言像杂草一样萌芽。

鉴于以上所述,如果您问程序员他们喜欢哪种语言,那将不会是他们正在使用的语言或过去使用的任何语言。

到目前为止,几乎没有程序员需要长期使用Rust,他们当然会说他们喜欢Rust。

PubNub的建筑师Jay Oster:“在过去的几十年中,我对各种语言都有类似的'草总是绿色'的偏见。但是我认为这不是造成这种现象的主要因素之一。如果是的话,我们可能会期望一些较新的语言在这些调查中脱颖而出,对吗?”

H2CO3:“到目前为止,Rust是我最喜欢的语言,尽管事实上我已经使用了4年(出于性能的需要,用于个人项目以及“真实”代码)。当我在C和C ++方面拥有丰富的经验时,我已经发现了它们的严重缺陷。

大约一年左右后,Heck甚至Haskell(最讲究优雅的语言)也表现出不可避免的丑陋,那时我不得不开始研究语言扩展和方言,以便获得一个稍微高级的库来进行编译。

Rust根本没有发生这种情况。迷雾笼罩的步枪和设计错误从未出现过。”

asafigan:“我相信Rust的学习难度很大,但使用起来却很有意义。只要奖励足够好,我真的感到惊讶有多少人喜欢挑战。

我发现Rust很难学习,但非常易于使用。我认为很多人都是用另一种语言来学习Rust的,并且感到惊讶(它很难学习)。但是他们忘记了学习编程的艰辛。在大学里,我们开设了两门有关Java面向对象编程的课程。到最后,大多数人仍然没有真正理解它。 Rust与其他语言完全不同,难以学习。如果您只知道OOP,就很难说出函数式编程。如果您所知道的全部是功能性的,则很难学习OOP。如果您只知道GC或手动内存管理,则很难学习所有权。性格也很奇怪。但是值得拥有更好的软件。”

cfsamson:“在Rust中,我发现很多工作都花在了前面。它使一些容易上手的难题变得更难上手,但以后再也不会产生难题。如果有问题,问题域本身通常比我想的要难,并且与我使用的工具无关。我发现我预先支付的价格绝对物有所值。熟悉语言后,我还会发现价格低廉。”

为什么Rust团队认为它很受欢迎

如果您想知道什么使忠实的支持者成功,请与最忠实的支持者交谈,对吗?我联系了Rust团队,以了解他们为什么认为Rust年复一年地获得如此多的爱。格式略有不同,我保留了问题和答案的布局。

Erin Power是位于柏林的Rust开发人员。她从2015年的1.0开始使用Rust。她是Rust治理工作组的负责人之一,并且是“ Tokei”的创建者,这是一个用Rust编写的流行开源代码计数器。

问:使用Rust的人似乎真的很喜欢它;你为什么这么认为呢?

答:我认为这是因为Rust做出了重大承诺并兑现了承诺。

Rust提供了与其他高级语言一样的自动内存管理功能,但由于它是在编译时完成的,因此无需考虑任何隐藏的成本或行为。

Rust始终按照我们对现代硬件的期望进行设计。在其他语言中,线程安全和数据竞赛可能是其他语言的常见“步枪”。因此,无需太多更改或麻烦即可充分利用工作站的功能非常容易。始终令人印象深刻的是,rayon(Rust中流行的库)如何仅更改一行代码就能并行化整个工作负载。

结果,用Rust编写了许多高质量和快速的实现,而且由于有cargo和crates.io(Rust的程序包管理器和社区运行的程序包注册表),在内部和内部重用和共享该代码从未如此简单。与整个世界。

Cargo处理一个大型存储库时会处理好几十到十个软件包,您无需花费几天时间编写构建文件即可获得所需的配置。

Rust不仅易于管理和更新您的Rust依赖项,而且Rust本身也非常易于升级和使用Rustup在不同语言版本之间进行切换;默认情况下包含的工具链版本管理器。

以上任何一点都足以使人喜欢Rust,但总的来说,它使Rust成为一种令人难以置信的引人入胜的语言,使您在编写和创建项目时感到耳目一新。

问:Rust团队计划让用户喜欢上它吗?

答:我不能说所有团队的计划,因为Rust拥有数十个团队,其中大多数都是自愿者,他们都是半自愿地致力于改善Rust语言和周围的生态系统。您可以在GitHub上找到该项目的年度路线图(尽管我会注意到它是在COVID-19之前提出并编写的)。

问:你们都定期使用Rust吗?为何如此?

答:自2015年发行1.0以来,我一直在编写Rust,从那时起,我一直在尝试花费大量的编程时间来编写它。我编写并维护了许多开源应用程序和库,自2018年以来我一直在与Rust进行专业合作。

问:我看到一些评论说Rust很难掌握,在我们的调查中,只有很少(〜5%)的人使用过Rust。您认为进入Rust的门槛很高吗?为什么或者为什么不?

答:我认为Rust中肯定有一些特定的概念,使他们难以学习和使用。尽管讲了几句,但我在Rust之前的背景是完整的Web开发和设计。我以前没有“系统”或“功能”语言的经验,并且发现在Rust中学习这些概念比其他现有语言更容易,因此我不同意Rust整体上存在很高的障碍。

我觉得很多障碍来自于Rust是一种相对较新的编程语言,并且目前还没有来自其他角度的丰富资源,这些资源适合不同人的思维模式,可以像使用较完善的语言一样学习。希望随着时间的流逝,我们将拥有更多多样化的学习资料,以帮助教授和增进对这些概念的理解。

尽管只有一小部分人编写了Rust,但它的采用取得了如此成功,但人们日常使用的许多关键软件已经在Rust中进行了重写或创建。 Rust已经在五大科技公司中的每一个中都得到采用,而不仅仅是感兴趣的企业。像Dropbox或OneSignal这样的小型科技公司,在Rust中都拥有许多服务的核心基础架构。从长远来看,我认为Rust没有比其他任何语言更高的学习障碍。这是一种非常一致的语言,一旦您掌握了基础知识,它们就会使您受益匪浅。不过,这条路上有一个急转弯:Rust是您走路前最差的语言。原因是它的核心概念(尤其是所有权)没有其他编程语言可以比拟的东西。这个概念非常细微。这意味着Rust在一两天内很难恢复。大多数人报告说,他们需要大约一到两周的时间才能提高生产力。在Rust中具有生产能力的人们喜欢一定的严谨性并为正确性而努力,但这需要一些时间来建立。

鉴于我们在过去几年中看到在我们的行业和工具中朝着“立即获得生产力”的方向漂移,我可以理解Rust的入职体验与人们过去的习惯有很大不同。我希望我们找到了一种在不影响长期体验的前提下提供这种新手体验的方法。