生物信息学中的 Mojo 语言一瞥
Mojo 是一门面向高性能计算、类似 Python 的新语言,正吸引科学家关注,但也引发了怀疑,尤其是在生物信息学领域,现实工作流仍由成熟的 R 和 Python 生态主导。评论者仔细审视其与 Rust 和 Julia 的性能宣传,指出差异往往来自算法、构建配置和不成熟的工具链,而非语言本身固有的速度优势。除了语言比较,许多人还强调生物信息学中的实际瓶颈在于库可用性、数据工作流和领域知识;进入这一领域通常除了编程技能之外,还需要大量生物学训练。
Mojo 与现有语言(Python、Ruby、Julia、Rust、R)
- Crystal 被提及为一个警示案例:类似 Ruby 的语法加上接近 C 的速度并没有流行起来;有人因此质疑“更快的 Python”为什么会成功。
- 反方观点:Python 在机器学习/科学领域占据主导地位;一个高性能、兼容 Python 的语言,潜在受众要比 Ruby 克隆版大得多。
- Mojo 目前还不是完整的 Python 超集;只有简单的 Python 程序才容易迁移。
- 一些评论认为 Mojo 和 Julia 是互补的高性能、高层次选项,而非直接竞争对手。
基准测试、炒作与方法论
- 一个主要讨论串批评了某篇比较 Mojo 与 Rust 的 FASTQ 解析器的博客:
- 据称最初 Rust 的基准测试是在 debug 模式下运行,之后才更新为
--release。 - 一些复现者发现 Rust 更快;另一些使用更新后的基准代码的人则看到 Mojo 快约 25%。
- 核心论点是:比较的是不同的算法和验证级别,因此像“Mojo 比 Rust 更快”这样的说法具有误导性;大部分差距应由算法而非语言本身解释。
- 据称最初 Rust 的基准测试是在 debug 模式下运行,之后才更新为
- 一些人认为 Mojo 的营销说法(例如巨大性能提升、“几十年来最大的进步”)过度夸张,甚至是“花招”。也有人认为这种点击诱饵很正常,并指出针对特定任务,Python 性能提升往往很容易做到。
生物信息学的现实检验
- 从业者表示,日常生物信息学大多是统计分析、绘图,以及使用 R/Python 库;低层级 FASTQ 解析对很多人来说只占很小一部分,但对某些细分领域(例如 NGS 设施、工具作者)却是主要工作。
- 讨论强调了 R/Bioconductor 和 Python(再加上 C/C++ 后端)的生态主导地位;在 Mojo 中重建这些生态会非常昂贵。
- 对许多工作流而言,解析层的速度提升可能不如可靠的工具和库可用性重要。
语言特性、GC 与系统层面问题
- Mojo 承诺的优势包括:AOT 编译、traits、类似 Rust 的所有权、与 MLIR/异构计算的深度集成。
- Julia 的优势包括:成熟的科学计算生态、通过 JIT 获得高性能、启动时间和 GC 持续改进;不过仍有人希望它更容易实现 AOT 且没有 GC。
- 关于 GC 与所有权的争论:
- 有人更喜欢 GC,因为更易用;也有人不喜欢 GC 的开销和复杂性,偏爱 Rust 风格的所有权。
- 表示复杂图结构在 Rust 中很痛苦;在这种情况下,GC 可能更符合人体工学。
职业、工具与多语言工作流
- 生物信息学岗位被描述为几个“阵营”:写论文的科学家、分析师、底层工具作者、流水线工程师,以及临时写代码的湿实验生物学家。
- 从软件工程转入该领域通常需要大量生物学知识;正式学位(硕士/博士)常被视为事实上的门槛。
- 常见的多语言工作流:
- Python 用于重计算/机器学习,R 用于统计和出版级绘图。
- Go 或 Rust(有时也包括 Julia)用于高性能预处理或工具。
许可与采用担忧
- 一些人因为 Mojo 不是完全开源、且分发由公司控制而拒绝考虑它,不过也有人认为对大多数用户来说,“免费但非开源”就已经足够。