Você sabe o que é Mojo? Nasce uma nova Linguagem

Neste post, vamos apresentar o que é Mojo, suas principais características e vantagens, que promete ser uma das mais usadas em 2023 para projetos de inteligência artificial. Também vamos mostrar como você pode aprender essa linguagem e começar a criar suas próprias aplicações de IA.

 

O que é Mojo linguagem de programação?

Mojo é uma linguagem de programação de alto nível e para propósitos diversos, assim como Python. Ela foi criada para facilitar o desenvolvimento de aplicações de IA, usando conceitos de programação funcional, processual, imperativa e orientada a objetos.

Essa linguagem tem uma sintaxe simples e intuitiva, inspirada no Python, mas com algumas diferenças. Por exemplo, Mojo usa chaves {} para delimitar blocos de código, ao invés de indentação. Além disso, Mojo tem suporte a tipos estáticos e dinâmicos, permitindo que o programador escolha o que é mais adequado para cada situação.

Também é uma linguagem compilada, ou seja, ela transforma o código-fonte em um arquivo executável que pode rodar em diferentes plataformas. Isso garante um desempenho superior ao Python, que é uma linguagem interpretada. Mojo usa o LLVM, um compilador de código aberto que também é usado pelo C e pelo Swift.

Mojo ainda está em fase de desenvolvimento e não tem uma versão estável disponível para o público. No entanto, é possível acompanhar o progresso da linguagem no site da Modular (https://modular.com/mojo), onde também há exemplos de código e documentação.

 

Por que Mojo?

Quando o Mojo foi iniciada, não havia a intenção de construir uma nova linguagem de programação. No entanto, durante o desenvolvimento da plataforma com o objetivo de unificar a infraestrutura de ML/AI globalmente, percebeu-se que a programação em toda a pilha era bastante complexa. Além disso, havia uma quantidade considerável de código MLIR sendo escrito manualmente, o que não era uma tarefa agradável.

O objetivo era criar um modelo de programação inovador e escalável, capaz de lidar com aceleradores e outros sistemas heterogêneos amplamente utilizados no campo da IA. Isso exigia uma linguagem de programação com recursos poderosos de metaprogramação em tempo de compilação, integração de técnicas de compilação adaptáveis, cache em todo o fluxo de compilação e outros recursos não suportados pelas linguagens existentes.

Embora os aceleradores fossem de extrema importância, um dos “aceleradores” mais prevalentes, mas às vezes negligenciados, era a CPU do host. Atualmente, as CPUs possuem vários blocos aceleradores do tipo tensor core e outras unidades de aceleração de IA. No entanto, também desempenham um papel fundamental ao lidar com operações que os aceleradores especializados não controlam, como carregamento de dados, pré e pós-processamento e integrações com sistemas externos. Portanto, ficou evidente que não seria possível impulsionar a IA apenas com uma “linguagem aceleradora” voltada para processadores específicos.

Os sistemas de IA aplicada precisavam resolver todos esses desafios, e foi decidido que tudo poderia ser alcançado com apenas uma linguagem. Assim, o Mojo foi concebido.

A equipe decidiu que a missão do Mojo incluiria inovações nos componentes internos do compilador e suporte para aceleradores atuais e emergentes. No entanto, não houve a necessidade de inovar na sintaxe ou na comunidade da linguagem. Portanto, foi escolhido adotar o ecossistema Python, devido à sua ampla utilização, popularidade dentro da comunidade de IA e reconhecida qualidade como linguagem de programação.

 

Mojo e o Python

A linguagem Mojo possui objetivos ambiciosos: busca-se a compatibilidade total com o ecossistema Python, o desempenho previsível em nível baixo e o controle de baixo nível, além da capacidade de implantar subconjuntos de código em aceleradores. Além disso, não se pretende criar um ecossistema de software fragmentado – evita-se que os usuários do Python que adotam o Mojo enfrentem comparações com a penosa migração do Python 2 para o 3. Esses não são objetivos pequenos!

Felizmente, embora o Mojo seja uma base de código totalmente nova, não se começa realmente do zero conceitualmente. A adoção do Python simplifica enormemente os esforços de design, uma vez que a maior parte da sintaxe já está especificada.

Em vez disso, os esforços podem se concentrar na construção do modelo de compilação e dos recursos de programação de sistemas do Mojo. Também se beneficia de tremendas lições aprendidas com outras linguagens (como Rust, Swift, Julia, Zig, Nim, etc.), da experiência anterior em migrar desenvolvedores para novos compiladores e linguagens e do aproveitamento do ecossistema de compiladores MLIR existente.

Além disso, foi decidido que o objetivo de longo prazo certo para o Mojo é fornecer um superconjunto de Python (ou seja, tornar o Mojo compatível com os programas Python existentes) e adotar a implementação do CPython para suporte de um ecossistema de longa duração. Se o programador é um usuário do Python, espera-se que o Mojo seja imediatamente familiar, ao mesmo tempo em que fornece novas ferramentas para o desenvolvimento de código seguro e de alto desempenho em nível de sistema, que de outra forma exigiria C e C++ além do Python.

Não se tenta convencer o mundo de que “estático é o melhor” ou “dinâmico é o melhor”. Em vez disso, acredita-se que ambos são bons quando utilizados para os aplicativos certos, portanto, o Mojo foi projetado para permitir que o programador decida quando utilizar estática ou dinamicamente.

 

Mas porque Python?

Python é amplamente reconhecido como a linguagem dominante no campo de Machine Learning (ML) e em diversos outros setores. Sua facilidade de aprendizado, popularidade entre grupos importantes de programadores, comunidade ativa e abrangente, bem como a vasta quantidade de pacotes e ferramentas disponíveis, contribuíram para sua posição de destaque.

O Python tem sido amplamente utilizado no desenvolvimento de APIs elegantes e expressivas, graças aos seus recursos de programação dinâmica. Isso levou frameworks de ML, como TensorFlow e PyTorch, a adotarem o Python como front-end para seus poderosos mecanismos de execução implementados em C++.

Para o Mojo, o Python é uma parte essencial de sua pilha de API de superfície, e essa escolha é determinada pelas necessidades de seus clientes. Enquanto outras partes da pilha podem ser flexíveis, adotar uma abordagem “Python em primeiro lugar” faz todo o sentido.

Além disso, subjetivamente, a equipe do Mojo considera o Python uma linguagem bela. Sua concepção se baseia em abstrações simples e combináveis, evitando o uso desnecessário de pontuação através do recuo adequado. Além disso, possui recursos de metaprogramação poderosos e dinâmicos.

Todos esses elementos fornecem uma base sólida para estender a linguagem de acordo com as necessidades do Mojo. A visão da Modular em relação ao Mojo é que ele complementa o Python e o leva a um nível mais avançado, em vez de competir diretamente com ele. Espera-se que os membros da comunidade Python enxerguem essa direção como uma evolução natural e benéfica para a linguagem.

 

Quais são as vantagens de Mojo?

Mojo tem como principal vantagem ser uma linguagem projetada para o desenvolvimento de IAs. Ela oferece recursos e bibliotecas específicas para facilitar a criação de modelos e algoritmos de aprendizado de máquina, deep learning, processamento de linguagem natural, visão computacional e outras áreas da AI.

Também se destaca por ser uma linguagem multi-paradigma, que permite ao programador usar diferentes estilos de programação conforme a necessidade. Isso dá mais flexibilidade e expressividade ao código, além de facilitar a integração com outras linguagens.

Outra vantagem de Mojo é ser uma linguagem compatível com o Python. Isso significa que é possível usar as bibliotecas e frameworks já existentes para Python em Mojo, como o TensorFlow, o PyTorch, o Scikit-learn e o Numpy. Além disso, Mojo pode interagir com código Python através de uma interface chamada PyMojo.

Por fim, Mojo é uma linguagem que visa oferecer um alto desempenho para as aplicações de IA. Como ela é compilada pelo LLVM, ela pode gerar um código otimizado e eficiente, que aproveita os recursos do hardware e reduz o tempo de execução. Mojo também tem suporte a paralelismo e concorrência, permitindo que o programa utilize múltiplos núcleos e processadores.

 

Como aprender Mojo?

Se você ficou interessado em aprender Mojo, saiba que há algumas formas de se preparar para essa nova linguagem. A primeira delas é ter um bom conhecimento em Python, pois Mojo tem muitas semelhanças com essa linguagem. Você pode encontrar diversos cursos gratuitos e pagos na internet que ensinam os fundamentos do Python.

A segunda forma é estudar as bases da inteligência artificial e das áreas relacionadas. Você pode aprender sobre os conceitos e técnicas de aprendizado de máquina, deep learning, processamento de linguagem natural, visão computacional e outras aplicações da IA. Há também vários cursos online que abordam esses temas.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *