O universo da tecnologia está em constante evolução. A mais recente novidade no cenário é a linguagem de programação Mojo. Seu objetivo principal é aprimorar a velocidade de execução de projetos baseados em Python, proporcionando aos desenvolvedores um desempenho similar ao da linguagem C.
Python se destaca como uma das linguagens de programação mais proeminentes. Ela se apresenta como uma linguagem versátil e acessível, ideal para iniciantes no mundo da programação e ciência da computação.
Adicionalmente, Python se mostra uma ferramenta valiosa nas mãos de desenvolvedores experientes, que a utilizam para construir aplicações complexas. Entretanto, sua velocidade de execução é um ponto fraco notável. É nesse contexto que o Mojo surge como solução.
Este artigo explora o Mojo e sua relação com o ecossistema Python. Vamos começar a desvendar seus mistérios.
O que é Mojo?
Mojo é uma linguagem de programação moderna e de alto nível, projetada com uma interface intuitiva para facilitar a criação rápida de aplicações. Além disso, visa estabelecer uma ponte entre a produção e a pesquisa, permitindo que os usuários aproveitem recursos de metaprogramação e programação de sistemas, tudo isso com a familiaridade da sintaxe e do ecossistema Python.
Inspirada no Rust, o Mojo promete velocidade de execução elevada para o ecossistema Python. Tecnicamente, Mojo é um superconjunto do Python, oferecendo acesso a funcionalidades mais avançadas.
A equipe por trás do Mojo é a Modular, uma empresa focada em infraestrutura de IA. Isso posiciona o Mojo como uma linguagem de programação ideal para desenvolvedores de inteligência artificial. Paralelamente à linguagem, eles introduziram o Interference Engine, que visa otimizar o fluxo de trabalho, escalar produtos de IA e diminuir a latência de inferência.
Segundo Chris Lattner, CEO da Modular, o Mojo alcança uma velocidade até 35.000 vezes maior que Python. Sua criação e desenvolvimento acelerado são impulsionados pelo uso da cadeia de ferramentas do compilador LLVM e da infraestrutura do compilador MILR (Multi-Level Intermediate Representation).
Os objetivos da linguagem de programação Mojo incluem:
- Compatibilidade total com o ecossistema Python.
- Implementação de subconjuntos de código em aceleradores pelos desenvolvedores.
- Controle de baixo nível para desempenho consistente.
- Preservação da integridade do ecossistema, evitando fragmentação.
Para experimentar o Mojo, é necessário utilizar o ambiente hospedado na nuvem, o Mojo Playground. Após fazer login, você terá acesso a um ambiente de trabalho para explorar a linguagem.
Por que precisamos de Mojo?
A filosofia central do Mojo é unificar a infraestrutura de ML/IA, oferecendo uma linguagem de programação que opera em toda a pilha. Além disso, facilita o uso, eliminando a necessidade de escrever código MLIR.
A Modular afirma que o Mojo proporcionará um modelo de programação escalável e inovador, tornando mais fácil para profissionais da área de IA trabalhar com aceleradores e sistemas heterogêneos.
Em termos técnicos, o Mojo se destaca por suportar metaprogramação em tempo de compilação e oferece recursos como cache durante o fluxo de compilação e técnicas de compilação adaptáveis, ausentes em outras linguagens de programação.
Para uma imersão mais profunda na filosofia do Mojo, consulte a documentação da Modular – Why Mojo🔥.
Características da linguagem de programação Mojo
Nesta seção, vamos explorar os principais recursos que definem a linguagem de programação Mojo.
#1. Compatibilidade completa com Python
Mojo busca coexistir harmoniosamente com o ecossistema Python, utilizando as mesmas funções, bibliotecas e recursos. É possível usar qualquer biblioteca Python desejada dentro do ambiente Mojo.
Para importar, você usará o seguinte comando:
from PythonInterface import Python
Em seguida, utilize Python.import_module() para importar qualquer biblioteca Python.
Por exemplo, para importar a biblioteca numpy:
let np = Python.import_module(“numpy”)
Em Python, o equivalente seria “import numpy as np”.
Após a importação, você poderá utilizar a biblioteca para criar arrays, realizar cálculos, entre outras operações.
array = np.array([1, 2, 3]) print(array)
De forma semelhante, é possível importar matplotlib.pyplot para criar gráficos no Mojo.
Abaixo, um exemplo de execução de código no Mojo Playground:
Se desejar testar o código, copie e cole o seguinte:
from PythonInterface import Python let np = Python.import_module("numpy") array = np.array([1, 2, 3, 4, 5]) print(array)
#2. MILR
MILR, ou Multi-Level Intermediate Representation, é uma funcionalidade suportada pelo Mojo, que proporciona acesso a uma variedade de novos recursos avançados, como unidades de hardware de IA, threads e vetores.
O MILR otimiza o desempenho através da simultaneidade, tornando o Mojo mais rápido que o Python, e também possibilita o aproveitamento de múltiplos núcleos de processamento.
#3. Verificador de propriedade e mutuário
A gestão de memória em Python é segura, utilizando um coletor de lixo, exigindo que os programadores evitem condições de corrida no código.
Mojo, inspirado no Rust, implementa um modelo estrito de verificador de propriedade e mutuário, embora atualmente em implementação parcial. O objetivo é aprimorar a simultaneidade e proporcionar uma gestão de memória superior.
O modelo de propriedade assegura uma abordagem thread-safe, ideal para suporte à simultaneidade, prevenindo condições de corrida. Além disso, o verificador de empréstimo garante a validação das variáveis durante a execução.
#4. Custo Zero de Abstração
O Mojo oferece abstrações de custo zero, permitindo que os desenvolvedores controlem o armazenamento de forma precisa, com alocação em linha para estruturas.
#5. Afinação automática
O recurso de afinação automática do Mojo garante a alocação ideal de valores para parâmetros, levando em consideração o hardware de destino.
A afinação automática dispensa a necessidade de otimizar manualmente o código para diferentes hardwares.
Velocidade: Quão rápida é a linguagem Mojo?
Python, uma linguagem de programação de alto nível, prioriza a facilidade de uso e manutenção, sacrificando a velocidade em comparação com outras linguagens.
Testes realizados pela Modular demonstraram que o Mojo é até 35.000 vezes mais rápido. No teste, que utilizou o algoritmo de Mandelbrot em uma instância AWS com processador Intel Xeon, o Mojo superou PYPY, SCALAR C++ e o próprio Python. Os resultados, conforme mostrado abaixo, foram impressionantes.
Fonte: modular.com
Para mais detalhes sobre a velocidade do Mojo, consulte esta publicação na comunidade Julialang.
Mecanismo de inferência modular – execute modelos de IA de forma econômica
A Modular também está desenvolvendo um Mecanismo de Inferência Modular, que visa baratear a execução de modelos de IA em produção. O Mojo tem suporte nativo ao Modular Interfence Engine, que simplifica o fluxo de trabalho, reduz a latência de inferência e facilita o escalonamento de produtos de IA.
Além disso, os desenvolvedores não precisam modificar seus modelos para usar o mecanismo. Após o carregamento, ele pode otimizar modelos PyTorch e TensorFlow, alcançando alto desempenho com amplo suporte de hardware.
Ele substituirá o Python?
Mojo é uma linguagem nova e promissora, mas levará tempo para alcançar seu público-alvo, que inclui cientistas de dados e entusiastas de programação. Embora resolva problemas específicos para o desenvolvimento de IA, existem alternativas que aprimoram a velocidade de Python, como Jax, Codon e Julia, uma linguagem orientada para ciência de dados.
O futuro do Mojo pode seguir dois caminhos: crescimento exponencial em recursos e adoção pela comunidade, ou se tornar uma linguagem ad-hoc, utilizada em conjunto com bibliotecas Python e o Modular Interference Engine.
Portanto, se o Mojo substituirá o Python? Só o tempo dirá.
Para finalizar, descubra os one-liners úteis em Python para simplificar tarefas comuns.