Python要被学术圈抛弃了?科学家们可能找到了更好的替代品
The following article is from Nature Portfolio Author Nature Portfolio
一些科学家开始使用比 Python 性能更强大的新编程语言了,它和 Python 一样能够“立等可取”,而且计算能力还更强。
本文转载自公众号“Nature Portfolio”
原文作者:Jeffrey M. Perkel
现在德国杜伊斯堡-埃森大学任职的 Köster 正在寻找一种计算机语言,可以具备 Python 的“立等可取”性,同时拥有 C 和 C++ 这类语言的速度。换言之,“一个高性能的语言,而且还,这么说吧,符合人类工程学。”他解释道。他找到的语言就是 Rust。
科学家们同样看向了 Rust。例如,Köster 用它写了一个叫做 Varlociraptor 的应用。该应用能将数百万的基因序列与几十亿种基因碱基比对,以找出基因突变。“数据量极大,”他说,“所以比对必须尽可能地快。”但是,Rust 的强大是有代价的:学习曲线很陡。
“上手之前是得花些时间。”宾夕法尼亚州咨询公司 Integer 32 的创办者,也是 Rust 核心团队成员的 Carol Nichols 说。“但是它让我能够做一些此前无法做到的事。我认为这些时间花得值。”
警告:没有护栏
C 和 C++ 很快,但是没有“安全护栏”。斯德哥尔摩的 Rust 程序员(他们管自己叫Rustacean),Ashley Hauck 说。例如,没什么能阻止 C 和 C++ 的程序员访问已经释放回系统的内存,或是把同一块内存释放两次。最好的情况下,这样做会让程序崩溃,但也有可能返回无意义的数据或是产生安全漏洞。根据微软的研究,他们公司每年修补的安全漏洞中有70%都和内存安全有关。
内存规则
这套理念还会帮助保证并行计算——使用多个处理器同时进行计算的软件——可以安全执行。例如,可以避免多个线程同时访问同一份数据的可能性。
结果是,这种语言更易于维护和调试,但是学习起来就更难了。“其他任何一种主流语言都没有这些概念,而它们是理解Rust编程方式的核心。”Nichols 说。在都柏林圣三一大学研究地理数据可视化的 Stephan Hügel 估计,他花费了两三个月把一个将地理空间坐标转化进另一个参照系的 Python 算法改写成了 Rust,执行速度快了 4 倍。加利福尼亚州的一个化学信息学软件公司 Metamolecular 的创办者 Richard Apodaca 说他为熟练使用 Rust 花了六个月。
聚焦易用性
Rust 社区还提供了详尽的文档和在线帮助,其中包括一本大受欢迎的在线详解“Book”和一份介绍如何解决常见问题的“Cookbook”。Rust 工具链——程序员用来将代码转化成程序的工具——很受用户好评(见下文“大家一起氧化吧”)。“Rust 的工具和架构真的很棒。”Patro 说。相较于 C 程序员需要面对的很多种编译器和辅助应用,Rust 程序员只需要一个叫做 Cargo 的工具就可以编译 Rust 代码、运行测试、自动生成文档、将代码上传到代码库中,等等。它还会自动下载并安装第三方软件包。Cargo 的一个插件 Clippy 可以标亮常见错误和“不怎么规范”的 Rust 代码,Patro 评价这一特性是“绝对棒”。
大家一起氧化吧
下面以创建一个读取GenBank文件的程序的步骤为例,探索Rust语言的一些功能。• 访问www.rust-lang.org/learn/get-started安装Rust• 从GitHub上复制代码https://github.com/jperkel/gb_read• 在命令行中执行“cargo run”以下载外部依赖,并编译程序。程序的默认设置是读取GitHub代码库中的GenBank文件“nc_005816.gb”,但是你可以通过“cargo run <文件名>”选择读取其他文件。• 使用“cargo test”运行代码库里面的测试。• 使用“cargo doc --open”创建并阅读文档。Rust 程序员的另外一大助力是它的第三方软件包(Rust管它叫“crate”)生态系统,目前已经有了 5 万多个(见下文“Rust越来越火”)。软件包封装了例如生物信息学(Kösterd的Rust-Bio)、地理科学(Geo-Rust项目)、数学(nalgebra)等学科的算法。不过,Nichols 说,“要是你想要的库没有 Rust 版本,那就是 Rust 的大劣势了。”当然,程序员有时候还是可以使用 Rust 的“外部函数接口”来搭一座桥。
来源:http://www.modulecounts.com
氧化代码
在团队成员 Avi Srivastava 从用 Rust 开发开源工具的加利福尼亚州生物技术公司 10x Genomics 实习归来之后,Patro 的团队就由研究生 Hirak Sarker 带领,使用 Rust 写了一个叫做 Terminus 的基因表达分析工具。“ Rust 的美妙之处在于,它让调试非常简单,因为内存管理好太多太多了。”现在在纽约基因组中心工作的 Srivastava 说。
对很多 Rust 程序员来说,这里的“人性化”也很吸引人。LGBT+ 社群的成员 Hauck 说 Rust 的用户群下了功夫欢迎她。这个社群,她说,“一直以来尽力成为具有包容性的社群——例如,非常理解多元化会产生什么影响;非常理解如何编写并执行行为规范。”
原文以Why scientists are turning to Rust标题发表在 2020年12月1日的《自然》的技术特写版块上。
版权声明:
本文由施普林格·自然上海办公室负责翻译。中文内容仅供参考,一切内容以英文原版为准。欢迎转发至朋友圈,如需转载,请邮件China@nature.com。未经授权的翻译是侵权行为,版权方将保留追究法律责任的权利。
© 2021 Springer Nature Limited. All Rights Reserved
封面图来源:Goran Ivos on Unsplash
本文转载自公众号“Nature Portfolio”
(ID:nature-portfolio)
▽精彩回顾▽