Code前端首页关于Code前端联系我们

Python 被学术界抛弃了吗?科学家人或许找到了更好的替代方案

terry 2年前 (2023-09-24) 阅读数 52 #后端开发

一些科学家人开始使用比Python更强大的新编程语言,可以像Python一样“即时可用”,并且拥有更强的计算能力。 ?他已经用Python编写了一个流行的工具——Snake制作的流程管理工具。 现在他正在编写的项目需要的计算能力超出了Python所能提供的。 于是他开始寻找新的Köster,现在在德国杜伊斯堡埃森大学工作,他正在寻找一种计算机语言具有Python的“即时可用性”,同时又具有速度像C这样的语言。和 C++ 。换句话说,“一种高性能语言,我们可以说,也符合人体工程学,”他解释道。 他发现的语言是 Rust。 Python要被学术圈抛弃了?科学家们可能找到了更好的替代品 象征程序员速度与安全结合的漫画:Project TwinsRustin 是由 Graydon Hoare 于 2006 年在加州浏览器公司 Mozilla 工作时开发的一个小项目。 Rust 结合了类 C++ 语言的性能、友好的语法和专注于代码安全的语言。 ,以及一组精心设计的工具来简化开发过程 Mozilla 的 Firefox 的一部分是用 Rust 编写的。据报道,微软还使用 Rust 重写了部分 Windows 操作系统。 年度 Stack Overflow 开发者调查连续五年将 Rust 评为“最喜欢的”编程语言 。根据代码共享网站 GitHub 的数据,Rust 是 2019 年该平台上增长第二快的语言,比去年增长 235%。 科学家也关注了Rust。例如,Köster 使用名为 Varlociraptor 的应用程序编写了它。该应用程序将数百万个基因序列与数十亿个遗传碱基进行比较,以发现基因突变。 “数据量巨大,”他说,“因此比较必须尽可能快。”但 Rust 的强大是有代价的:学习曲线陡峭。 “需要一段时间才能开始。“但它让我能够做以前做不到的事情,”宾夕法尼亚州咨询公司 Integer 32 的创始人、Rust 核心团队成员卡罗尔·尼科尔斯 (Carol Nichols) 说。我认为时间花得值。 》警告:没有护栏科学数据分析工作流程通常使用Python、R和Matlab等语言。这些语言逐行解释代码并执行。这种模式用于检查数据有用但不快。 C 和 C++ 速度很快,但没有“安全栏”。斯德哥尔摩的 Rust 程序员(他们称自己为 Rustaceans)Ashley Hauck 说道。例如,没有什么可以阻止 C 和 C++ 程序员使用已释放回系统的内存,或者两次释放同一内存。它充其量会使程序崩溃,但它也可能返回不相关的数据或创建安全漏洞。根据微软的研究,该公司每年修复的数据安全漏洞中有70%与内存安全有关。 内存规则Rust 的模型使用规则将每个内存分配给单个所有者 并限制谁可以访问它。违反规则的代码不可能崩溃——它根本无法编译。 “他们的内存管理系统基于生命周期概念,允许编译器在编译时跟踪内存。何时分配,何时释放,谁拥有它,谁有权访问,”计算生物学家 Rob Patro 说。大学。马里兰州。 “有一整类错误的问题可以通过语言设计来避免。”这一理念还有助于确保并行计算(使用多个处理器同时执行计算的软件)可以安全地执行。例如,它可以避免多个线程同时访问相同数据的可能性。 结果是一种更容易维护和调试的语言,但更难学习。“这些概念在Nichols 说:“任何其他强大的语言,它们都是理解 Rust 编程的核心。”在都柏林三一大学研究地理数据可视化的 Stephan Hügel 估计,他花了两到三个月的时间重写 Python 算法来转换地理空间坐标到Rust的另一个参考系统,执行速度快了4倍。加州化学信息学软件公司Metamolecular的创始人Richard Apodaca表示,他花了六个月的时间才学会如何使用Rust。注重易用性为了解决这个问题,Rust 开发人员一直在努力改善用户体验,加州 Rust 开发工具团队负责人 Manish Goregaokar 表示。例如,编译器返回特别丰富的错误消息,甚至突出显示错误代码并建议如何修复它。 “如果您的语言正在引入新概念,那么最好易于使用,”Goregaokar 解释道。 Rust 社区还提供了详细的文档和在线帮助,包括流行的在线详细“Book”和“cookbook”,解释如何解决常见问题。 Rust 工具链——程序员用来将代码转换为程序的工具——在用户中非常受欢迎(请参阅下面的“入门”)。 “Rust 的工具和架构真的很棒,”Patro 说。与 C++ 遇到的许多编译器和实用程序相比,Rust++只需要一个名为 Cargo 的工具来编译 Rust 代码、运行测试、自动生成文档、上传代码到代码库等。它还会自动下载并安装第三方软件包。 Clippy 是一个 Cargo 插件,可以突出显示常见错误和“不符合标准”的 Rust 代码,Patro 形容这一功能“绝对棒极了”。

让我们一起开始让我们创建一个读取GenBank文件的程序作为例子来探索Rust语言的一些特性。 • 访问 www.rust-lang.org/learn/get-started 安装 Rust • 从 GitHub https://github.com/jperkel/gb_read 复制代码• 运行“cargo run to”加载外部依赖并编译程序。程序默认从GitHub存储库读取GenBank文件“nc_005816.gb”,但您可以选择通过“cargo run ”读取其他文件。•使用“ • 使用“cargo doc --open”创建和阅读文档。还有适用于流行开发环境(例如 Microsoft 的 Visual Studio Code 和 JetBrains)的 Rust 插件' IntelliJ。还有一个在线 Rust Playground,允许使用 Rust 代码进行实时在线实验。来自悉尼的 David Lattimore 为 Jupyter 计算笔记本创建了 Rust 核心和类似 Python 的交互式环境 REPL。 Rust Kongfun 的另一个大帮助是它的第三方软件包(Rust 称之为“笼子”)生态系统,目前已经有超过 50,000 个(参见下面的“Rust 越来越流行”)。这些软件包封装了来自生物信息学(Köster 的 Rust-Bio)、地理科学(Geo-Rust 项目)、数学(nalgebra)等学科的算法。然而,Nichols 说,“如果你想要的库没有版本Rust 的一个很大的缺点。”当然,程序员有时也可以利用 Rust 的“外部函数接口”来搭建一座桥梁。 Python要被学术圈抛弃了?科学家们可能找到了更好的替代品

来源:http://www.modulecounts.com 氧化代码无论编程流程如何不可否认的是Rust非常快。 5月份,马萨诸塞州达纳法伯癌症研究所的生物信息学家Heng Li在一项需要读取570万条基因记录的计算生物学任务上测试了几种编程语言。 Rust 超越 C 获得第一名。 “如果我们想编写一个强大的并行计算程序,同时又需要速度快且占用内存少,那么 Rust 是理想的选择。”李说。 Luiz Irber,加州大学戴维斯分校的生物信息学家,重写了(或 Rust 俚语中的“氧化”)一个名为 Sourmash 的工具,该工具用 Rust 执行基因搜索和分类。他说,使代码易于维护,使用现代编程功能并在线工作。 当团队成员 Avi Srivastava 从 10x Genomics(一家使用 Rust 开发开源工具的加州生物技术公司)实习回来时,由研究生 Hirak Sarker 领导的 Patro 团队使用 Rust 编写了一个名为 Terminus 的基因表达分析工具。 “Rust 的美妙之处在于它使调试变得非常容易,因为内存管理要好得多。 ,”现在在纽约基因组中心工作的 Srivastava 说。 莫伊鲁斯特程序员的“人情味”也很吸引人。 LGBT+ 社区成员Hauck 表示,Rust 的用户群一直在努力欢迎他。他说这个社区“一直努力成为一个包容性的社区——例如,非常了解多样性的影响;非常了解行为准则的制定和执行方式。” “我还在这里的原因。我用的是铁锈,这可能是主要原因之一。” Hauck 说:“Rust 社区真的很棒。”

原始文章于 2020 年发表,标题为 为什么科学家转向铁锈,于 12 月 1 日的技术特征部分《自然》。

版权声明:

本文由施普林格自然上海办公室翻译。中文内容仅供参考,所有内容以英文原文为准。欢迎转发到您的朋友圈。如需转载,请发送电子邮件至China@nature.com。未经授权的翻译属于侵权行为,版权人保留追究法律责任的权利。

© 2021 施普林格自然有限公司。版权所有。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门