365bet现场衔接,新铲子:学术界开始从Python转向Rust

作者| JeffreyM.Perkel翻译者|肖大飞计划| TinaRust在科学家中越来越受欢迎。与Python相比,Rust的性能更高,并且在构建社区时使用户体验更舒适。尽管学习起来更加困难,但越来越多的学者认为时间是值得的。
德国生物信息学家Johannes Koster(Johannes Koster)于2015年用Python编写了流行的工作流管理器Snakemake。作为公认的“ Python专家”,他目前正在准备一个具有高性能要求的新项目,并认为Python不具备Python所需的计算能力。该项目他正在寻找一种新的编程语言解决方案。
Koster现在在德国杜伊斯堡-埃森大学工作。他对这种新语言解决方案的要求是:提供Python的“表达能力”和C / C ++的运行效率。用他自己的话说,它必须是“一种既符合人类使用习惯又能有效地提高产量的语言”。最后,他选择的语言是Rust。
Rust最初由Mozilla工程师Graydon Hoare于2006年创建,它结合了C ++语言的强大功能和其他高级语言的出色语法功能,还涵盖了代码安全性问题。部分Mozilla Firefox浏览器是用Rust编写的,微软还使用它来重新编码Windows操作。系统的一部分。在年度StackOverflow开发人员调查(今年对近65,000名程序员进行调查)中,Rust受到了关注,该调查连续5年被评选为StackOverflow的“最受欢迎”编程语言。GitHub上的数据还显示,Rust是2019年平台上增长第二快的语言,比去年同期增长了235%。
在科学研究中,科学家还求助于Rust。例如,Koster使用Rust开发了一个名为Varlociraptor的应用程序,该应用程序将数百万个基因序列读数与数十亿个遗传碱基进行比较,以鉴定基因组变体。他说:“该项目中的数据量非常大,因此对性能的要求非常高。但是,要实现这样的性能,还必须付出一定的代价:生锈很难学习。
卡洛尔·尼科尔斯(Carol Nichols)说:“使用Rust需要先花一些时间学习。”她是Rust核心团队的成员,也是位于宾夕法尼亚州匹兹堡的咨询公司Integer32的创始人。“但是它可以帮助我做我做不到的事情。我认为这段时间是值得的。”
避免不规范现象。通常,在分析工作流中的科学数据时,每个人都会选择诸如Python,R和Matlab之类的语言,这些语言会一一解释代码行然后执行它们。这种编程风格非常适合探索数据,但速度很慢。
斯德哥尔摩的Rust程序员AshleyHauck(在社区中被称为“ Rustacean”)说,C和C ++的运行效率非常高,但是它们“没有规则”。例如,没有措施防止C或C ++程序员意外访问已为操作系统释放的内存,或防止程序两次释放相同的内存;最糟糕的是,它会返回无意义的数据或暴露安全漏洞。根据Microsoft研究人员的说法,公司每年修复的漏洞中有70%与存储安全性有关。
根据将规则分配给单个所有者,Rust模型可以使用任何内存块并强制控制访问权限。违反这些规则的代码不会崩溃,因为它不会编译。马里兰大学帕克分校的计算机生物学家罗伯·帕特罗(Rob Patro)解释说:“您有一个基于生命周期概念的内存管理系统,它使编译器可以跟踪内存分配,免费掌握谁拥有它,谁可以在编译时访问它。”由于该语言的设计方式,在编译阶段修复了许多错误。”
这样的设计还有助于提高在多个处理器上运行的软件的安全性,例如,它可以消除多个计算机线程同时访问同一数据的可能性,而铁锈更易于维护和调试,但难以学习和使用。主。“其他普通语言没有这些概念。理解这些概念是理解如何在Rust中编写代码的本质。” Nichols说。史蒂芬·希尔(Stephan Hill)在都柏林三一学院(Trinity College Dublin)研究了地理数据的可视化,他本人花了两到三个月的时间来移植Python算法,以将地理空间坐标从一个参考系统转换为另一个参考系统,从而将执行速度提高了四倍。加利福尼亚州拉霍亚市化学信息软件公司Metamolecular的创始人Richard Apotaka说,他花了大约六个月的时间掌握了该语言。以用户体验为中心“为了提高语言的影响力,Rust开发人员专注于优化用户体验。” Manish Goregaokar表示,他领导Rust开发人员工具团队,目前居住在加利福尼亚州伯克利。例如,编译器生成特别有用的错误消息,甚至会突出显示错误的代码,并建议维修。Goregaokar说:“如果在语言中引入了新的功能概念,使用起来应该会很愉快。”
Rust社区还提供广泛的文档支持和在线帮助,包括称为的在线参考文档以及列出常见问题的“食谱”问卷。用户对Rust工具链非常满意,程序员可以使用它将代码转换为应用程序(请参见下面的“构建Rust应用程序”)。Patro说:“ Rust工具和基础架构的完整性真的很棒。与程序员用来创建C代码的许多编译器和帮助工具不同,Rust开发人员可以使用一个名为Cargo的工具来编译Rust代码,运行测试,自动生成文档,将软件包上传到存储库,等等第三方下载和安装。使用名为Clippy的第三方插件也会导致常见错误和过时的Rustcodeark。Patro非常喜欢此工具。
创建Rust应用程序下面介绍如何创建GenBank文件读取器,以便您可以更好地了解Rust的功能。可以从www.rust-lang.org/learn/get-started下载并安装Rust。请转到https://github.com/github.com / jperkel / gb_read来在GitHub上克隆代码。运行’cargorun’命令以下载外部依赖项并构建应用程序。默认情况下,应用程序在GitHub存储库中解析GenBank文件’nc_005816.gb’。您也可以使用’cargorun’指定输入文件。使用“ cargotest”执行单元测试。使用“ cargodoc-open”来创建和查看文档。Rust还为常见的开发环境(例如MicrosoftVisualStudioCode和JetBrains IntelliJ)提供了Rust插件,还为Rustplayground提供了实时的在线Rust开发环境。澳大利亚悉尼的软件开发人员David Lattimore还使用Jupyter笔记本电脑中的Rust和一种称为REPL(Read-Evaluate-Printloop)的交互式环境Python样式创建了一个“内核”。Rust的第三方软件包生态系统可以支持软件开发,并且第三方库的数量目前接近50,000(请参见下图的“ Rustrising”)。它们封装了诸如生物信息学(Koster’sRust-Bio)等学科的算法),地球科学(theGeo-Rustproject)和数学(Nalgebra)。Nichols仍然说:“如果您需要的库不在Rust中,那您肯定觉得自由人不舒服。”但是,有时程序员可以使用Rust的“外部功能接口”来弥补这一空白。
除编码过程外,Rust代码的优点是Rust的高效性能。今年5月,马萨诸塞州波士顿达纳-法伯癌症研究所的生物信息学家Heng Li在570万的计算生物学任务中测试了多种语言,我们分析了连续记录。Rust击败C获得第一名。“如果您想使用多线程来编写高性能程序,那么当您需要它非常快并且存储器也非常紧凑时,Rust是一个理想的选择,” University of University生物信息学科学家Li.Luis Abel说。加州戴维斯分校表示,他使用Rust重写了一个名为Sourmash的工具,它的主要功能是执行基因组搜索和分类分析,转移到Rust后可以降低软件维护成本。他说,使用更高级的现代语言功能,同时也可以通过网络浏览器访问该程序。
Patros团队成员AviSrivastava从博士生Hirak Sarkar领导的实习生返回后,他使用Rust构建了一个名为Terminus的基因表达分析工具。AviSrivastava之前曾在加利福尼亚普莱森顿的一家生物技术公司10xGenomics实习,在那里他使用Rust开发了开放式平台来源工具。现在在纽约基因组中心工作的Rivastava解释说:“ Rust的优势在于它可以高效地调试任务,因为Rust可以很好地进行内存管理。”
对于许多Rust开发人员而言,社区气氛也非常重要。Hauck是LGBT +社区的成员,她说Rust用户已经通过他们的方式来激发他们的灵感。她说:“这个社区一直坚持包容性。她非常了解多样性对事物的影响以及行为准则的制定和实施。”
“这可能就是为什么我仍然使用Rust的原因,” Hauck说。“社区建设很棒。”原始链接:https://www.nature.com/articles/d41586-020-03382-2今天的郝文推荐Beta版本的虹梦2.0手机!华为的小目标:在一年之内,配备HarmonyOS的自行开发设备的数量达到1亿名中国工程师“逃离”硅谷!受到中芯国际的打架,蒋尚义刚被任命为??副董事长,联席CEO梁梦松离开了InfoQ写作平台,欢迎所有热爱技术,创作和分享的内容创作者加入!
更便宜的活动正在等着您!