Um olhar sobre a linguagem Mojo para bioinformática
Mojo, uma nova linguagem parecida com Python voltada para computação de alto desempenho, está atraindo interesse de cientistas, mas também ceticismo, especialmente em bioinformática, onde os ecossistemas estabelecidos de R e Python dominam os fluxos de trabalho do mundo real. Comentadores examinam com cuidado as alegações de desempenho em comparação com Rust e Julia, observando que as diferenças muitas vezes decorrem de algoritmos, configurações de compilação e ferramentas imaturas, em vez de qualquer vantagem inerente de velocidade. Além das comparações entre linguagens, muitos destacam que os gargalos práticos na bioinformática são a disponibilidade de bibliotecas, os fluxos de dados e a expertise no domínio, e que entrar na área normalmente exige treinamento biológico substancial além de habilidades de programação.
Mojo vs. Linguagens Existentes (Python, Ruby, Julia, Rust, R)
- Crystal é citado como um conto de advertência: sintaxe parecida com Ruby + velocidade de C não ganhou tração; alguns questionam por que um “Python mais rápido” teria sucesso.
- Contra-argumento: Python domina os domínios de ML/científico; uma linguagem de alto desempenho compatível com Python tem um público potencial muito maior do que um clone de Ruby.
- Mojo atualmente não é um superconjunto completo de Python; apenas programas Python simples são facilmente portados.
- Vários comentários veem Mojo e Julia como opções complementares, de alto desempenho e alto nível, em vez de rivais diretos.
Benchmarks, Hype e Metodologia
- Um grande subthread critica um blog que comparava parsers FASTQ em Mojo e Rust:
- O benchmark original em Rust, segundo relatos, rodou inicialmente em modo debug, e depois foi atualizado para
--release. - Alguns reproduzidores acham Rust mais rápido; outros, usando código de benchmark atualizado, veem Mojo ~25% mais rápido.
- O argumento central: algoritmos e níveis de validação diferentes foram comparados, então afirmações como “Mojo é mais rápido que Rust” são enganosas; o algoritmo, não a linguagem, explica a maior parte da diferença.
- O benchmark original em Rust, segundo relatos, rodou inicialmente em modo debug, e depois foi atualizado para
- Vários veem as alegações de marketing de Mojo (por exemplo, grandes ganhos de velocidade, “o maior avanço em décadas”) como exageradas ou como “artimanhas”. Outros aceitam algum clickbait como algo normal e observam que ganhos enormes de velocidade em Python costumam ser fáceis em tarefas específicas.
Realidade da Bioinformática
- Praticantes dizem que a bioinformática do dia a dia é, em sua maior parte, estatística, visualização e uso de bibliotecas R/Python; parsing de FASTQ em baixo nível é uma pequena fração para muitos, mas uma parte importante para alguns nichos (por exemplo, instalações de NGS, autores de ferramentas).
- A dominância do ecossistema de R/Bioconductor e Python (além de backends em C/C++) é enfatizada; reimplementar isso em Mojo seria caro.
- Para muitos fluxos de trabalho, ganhos de velocidade na camada de parsing podem ter menos impacto do que ferramentas robustas e disponibilidade de bibliotecas.
Recursos da Linguagem, GC e Preocupações de Sistemas
- Os pontos fortes prometidos do Mojo: compilação AOT, traits, ownership no estilo Rust, integração profunda com MLIR/compute heterogêneo.
- Os pontos fortes do Julia: ecossistema científico maduro, alto desempenho com JIT, tempos de inicialização e GC melhorando; alguns ainda gostariam de AOT mais fácil e sem GC.
- Debate sobre GC vs. ownership:
- Alguns preferem GC pela usabilidade; outros não gostam da sobrecarga e da complexidade do GC, favorecendo ownership no estilo Rust.
- Representar estruturas de grafos complexas é citado como doloroso em Rust, onde um GC pode ser mais ergonômico.
Carreiras, Ferramentas e Fluxos de Trabalho Multilíngues
- Funções em bioinformática são descritas em “campos”: cientistas que escrevem artigos, analistas, autores de ferramentas de baixo nível, engenheiros de pipelines e biólogos de bancada que fazem código ad hoc.
- A transição a partir de engenharia de software geralmente exige conhecimento substancial de biologia; diplomas formais (MS/PhD) são frequentemente vistos como uma espécie de gatekeeping de fato.
- Fluxos de trabalho multilíngues comuns:
- Python para o trabalho pesado / ML, R para estatística e gráficos de qualidade de publicação.
- Go ou Rust (e às vezes Julia) para pré-processamento ou ferramentas de alto desempenho.
Licenciamento e Preocupações com Adoção
- Alguns se recusam a considerar Mojo por causa de distribuição controlada pela empresa e não totalmente open source, embora outros argumentem que o “free-as-in-beer” será suficiente para a maioria dos usuários.