Un vistazo al lenguaje Mojo para bioinformática
Mojo, un nuevo lenguaje parecido a Python orientado a la computación de alto rendimiento, está atrayendo interés entre científicos pero también escepticismo, especialmente en bioinformática, donde los ecosistemas consolidados de R y Python dominan los flujos de trabajo del mundo real. Los comentaristas examinan con lupa las afirmaciones llamativas de rendimiento frente a Rust y Julia, y señalan que las diferencias a menudo se deben a los algoritmos, las configuraciones de compilación y herramientas inmaduras, más que a alguna ventaja inherente de velocidad. Además de comparar lenguajes, muchos destacan que los cuellos de botella prácticos en bioinformática son la disponibilidad de bibliotecas, los flujos de datos y la experiencia de dominio, y que entrar en el campo suele requerir una formación biológica sustancial además de habilidades de programación.
Mojo frente a lenguajes existentes (Python, Ruby, Julia, Rust, R)
- Crystal se cita como una historia de advertencia: una sintaxis parecida a Ruby + velocidad de C no logró ganar tracción; algunos se preguntan por qué un “Python más rápido” sí tendría éxito.
- Contrapunto: Python domina los dominios de ML/científicos; un lenguaje de alto rendimiento compatible con Python tiene una audiencia potencial mucho mayor que un clon de Ruby.
- Mojo actualmente no es un superconjunto completo de Python; solo los programas Python simples se portan fácilmente.
- Varios comentarios ven Mojo y Julia como opciones complementarias de alto rendimiento y alto nivel, más que como rivales directos.
Benchmarks, hype y metodología
- Un gran subhilo critica una entrada de blog que comparaba analizadores FASTQ de Mojo y Rust:
- El benchmark original de Rust, según se informa, se ejecutó primero en modo debug, y luego se actualizó a
--release. - Algunos reproductores encuentran Rust más rápido; otros, usando código de benchmark actualizado, ven a Mojo ~25% más rápido.
- El argumento central: se compararon algoritmos y niveles de validación diferentes, así que afirmaciones como “Mojo es más rápido que Rust” son engañosas; el algoritmo, no el lenguaje, explica la mayor parte de la diferencia.
- El benchmark original de Rust, según se informa, se ejecutó primero en modo debug, y luego se actualizó a
- Varios consideran las afirmaciones de marketing de Mojo (por ejemplo, grandes aceleraciones, “el mayor avance en décadas”) como exageradas o como “maniobras”. Otros aceptan cierto clickbait como algo normal y señalan que enormes mejoras de velocidad en Python suelen ser fáciles en tareas concretas.
Realidad de la bioinformática
- Personas del sector dicen que la bioinformática del día a día consiste sobre todo en estadística, gráficos y uso de bibliotecas de R/Python; el análisis FASTQ de bajo nivel es una pequeña fracción para muchos, pero una parte importante para algunos nichos (por ejemplo, instalaciones de NGS, autores de herramientas).
- Se enfatiza el dominio del ecosistema de R/Bioconductor y Python (además de backends en C/C++); reimplementar eso en Mojo sería costoso.
- Para muchos flujos de trabajo, las mejoras de velocidad en la capa de parsing pueden ser menos impactantes que herramientas robustas y disponibilidad de bibliotecas.
Características del lenguaje, GC y preocupaciones de sistemas
- Las fortalezas prometidas de Mojo: compilación AOT, traits, propiedad al estilo Rust e integración profunda con MLIR/cómputo heterogéneo.
- Fortalezas de Julia: ecosistema científico maduro, alto rendimiento con JIT, tiempos de arranque y GC mejorando; algunos siguen deseando AOT más fácil y sin GC.
- Debate sobre GC vs. ownership:
- Algunos prefieren GC por usabilidad; a otros no les gusta la sobrecarga y complejidad del GC, y prefieren la propiedad al estilo Rust.
- Representar estructuras complejas de grafos se cita como doloroso en Rust, donde un GC puede ser más ergonómico.
Carreras, herramientas y flujos de trabajo multi‑lenguaje
- Los roles en bioinformática se describen en “campos”: científicos que escriben papers, analistas, autores de herramientas de bajo nivel, ingenieros de pipelines y biólogos de laboratorio que hacen código ad hoc.
- La transición desde ingeniería de software suele requerir bastante conocimiento de biología; los títulos formales (MS/PhD) a menudo se ven como una especie de filtro de entrada de facto.
- Flujos de trabajo comunes en varios lenguajes:
- Python para el trabajo pesado / ML, R para estadística y gráficos de calidad de publicación.
- Go o Rust (y a veces Julia) para preprocesamiento de alto rendimiento o herramientas.
Preocupaciones de licenciamiento y adopción
- Algunos se niegan a considerar Mojo por su distribución no totalmente de código abierto y controlada por la empresa, aunque otros sostienen que “gratis como en cerveza” será suficiente para la mayoría de usuarios.