Você já desejou construir aplicativos mais rápidos e eficientes, mas descobriu que as linguagens de programação padrão são incapazes de atender aos seus requisitos?
É quando o Mojo Language entra em jogo.
Mojo é uma nova linguagem de programação desenvolvida por modular, uma empresa especializada em infraestrutura de IA.
Ele é especialmente projetado para permitir que os desenvolvedores construam aplicativos mais rápidos e robustos para vários casos de uso, incluindo o desenvolvimento de IA. Neste post, veremos o que Mojo é, como funciona e por que você deve usá-lo em seu próximo projeto.
As Origens do Mojo
Os criadores do Mojo reconheceram a necessidade de uma linguagem de programação que combinasse a usabilidade do Python com a velocidade e eficiência do C.
E eles estabeleceram uma linguagem que permitiria aos desenvolvedores construir aplicativos de alto desempenho sem ter que aprender linguagens de descrição de hardware padrão.
Como resultado, eles criaram o Mojo, que deve ser totalmente compatível com o ecossistema Python, ao mesmo tempo em que fornece velocidade de nível C.
Modular: a organização por trás da linguagem Mojo
Então, quem são os criadores dessa linguagem futurista?
A Modular é uma startup líder mundial em infraestrutura de IA criada por Chris Lattner e Tim Davis, que se conheceram no Google e perceberam que uma infraestrutura muito complicada e fragmentada estava limitando a influência global da IA.
A meta e o objetivo da Modular são repensar a infraestrutura de IA para aprimorar a humanidade. Sua cultura e princípios valorizam os clientes, o software de produção de alta qualidade e a entrega de resultados significativos
Os Gols de Mojo
O Mojo foi projetado para fornecer um modelo de programação exclusivo para aceleradores de aprendizado de máquina.
A Modular determinou que o Mojo deveria permitir programação de uso geral porque as CPUs de hoje têm tensores e outros aceleradores de IA. Além disso, como o Python é amplamente usado em aprendizado de máquina e outros campos, a Modular optou por ingressar no ecossistema Python.
O uso do Python facilitou ainda mais o design da linguagem. Como a maior parte da sintaxe já havia sido determinada, a corporação poderia, em vez disso, concentrar-se na construção do mecanismo de compilação e no fornecimento de capacidades de programação especializadas.
Recursos importantes a serem considerados
Programmability
Tipos Progressivos
O recurso de tipos progressivos do Mojo Language permite que os desenvolvedores usem anotações de tipo para aumentar a eficiência e verificações de erros.
Os desenvolvedores podem projetar um código mais eficaz que detecte erros no tempo de compilação, eliminando bugs e aumentando a eficiência, fornecendo informações de tipo mais completas.
Abstrações a Custo Zero
Os desenvolvedores podem assumir o controle do armazenamento alocando dados em linha em estruturas graças às abstrações de custo zero fornecidas pelo Mojo Language.
Eliminando a necessidade de alocações extras de memória, esse recurso melhora a eficiência do código e reduz a quantidade de código clichê.
Autoajuste de idioma integrado
A funcionalidade de autoajuste integrada à linguagem no Mojo Language permite que os desenvolvedores determinem automaticamente os valores ideais dos parâmetros para se beneficiar do hardware de destino.
Com essa funcionalidade, é mais simples otimizar o código sem precisar ajustá-lo manualmente para cada combinação de hardware.
A Mojo Language é uma ferramenta flexível e eficaz para o desenvolvimento de IA, pois também fornece todo o poder do MLIR (Representação Intermediária Multinível), um tempo de execução heterogêneo paralelo e tempos de compilação rápidos.
Paralelização
O Mojo faz uso do MLIR, que permite aos programadores utilizar vetores, threads e unidades de hardware para IA para paralelização. O Mojo oferece suporte ao processamento paralelo em vários núcleos, em oposição à execução de thread único do Python.
Com uma aceleração de 35,000x em relação ao Python, o Mojo supera outras linguagens em termos de velocidade.
Interoperabilidade
A interoperabilidade com todo o ecossistema Python é uma das vantagens exclusivas do Mojo. Isso implica que você pode combinar o Mojo com qualquer biblioteca arbitrária, como Numpy e Matplotlib, bem como seu código personalizado.
Por exemplo, você pode visualizar dados em seu código Mojo usando a biblioteca Python Matplotlib.
Extensibilidade
O Mojo também é bastante flexível, permitindo que os usuários simplesmente adicionem etapas de pré e pós-processamento aos modelos ou troquem as etapas existentes por novas.
Para melhorar seus modelos e a pilha modular, os desenvolvedores podem usar a fusão do kernel, reescritas de gráficos, funções de forma e outras técnicas.
Por que você o escolheria em vez do Python?
Python é uma linguagem popular de desenvolvimento de IA devido à sua flexibilidade e bibliotecas compiladas de alto desempenho. No entanto, é significativamente mais lento do que linguagens como C++.
Portanto, os programadores aprendem a usar wrappers Python em linguagens mais rápidas para evitar o uso de Python em áreas críticas de desempenho.
Isso leva ao problema de duas linguagens, em que os modelos devem ser transformados de Python em uma implementação mais rápida, como ONNX ou script de tocha, que não oferece suporte a todos os recursos do Python. O Python também tem problemas de desempenho e falta de um bom processamento paralelo.
Mesmo programadores experientes acham difícil estudar, depurar e resolver problemas de desempenho devido ao dilema de dois idiomas.
Também existem restrições básicas sobre o que o Python pode fazer devido à forma como a linguagem é estruturada. Embora a implementação no mundo real de algoritmos que empregam componentes básicos possa parecer fácil, é significativamente mais difícil e requer o uso de uma linguagem mais rápida.
Como começar?
Você pode começar a usar o Mojo Language agora mesmo em seu Playground para começar. O Playground baseado no JupyterHub oferece aulas e a oportunidade de criar seu próprio código Mojo, embora o Mojo ainda seja um trabalho em andamento.
Você pode se registrar para acesso em seu site para acessar o Playground.
Para atingir suas metas de desempenho, a Mojo emprega tecnologias de compilador de última geração com tecnologias integradas de cache, multithreading e distribuição em nuvem.
Ele adiciona primitivas adicionais à programação de sistemas e aspira a se tornar um superconjunto Python ao longo do tempo. Para começar a codificar com o Mojo, use o compilador Mojo para executar um programa Mojo a partir do terminal da mesma forma que o Python faz.
A linguagem está em desenvolvimento e é voltada para desenvolvedores com experiência em programação de sistemas.
Embrulhar
Mojo é considerado um superconjunto do Python. E tem o potencial de revolucionar a programação combinando a simplicidade do Python com o desempenho de C++ e Rust.
Ele pode aproveitar ao máximo Biblioteca Python ecossistema, permitindo que os desenvolvedores criem bibliotecas de alto desempenho sem a necessidade de C, C++, Rust ou CUDA.
Ele permite a produção de código portátil graças aos seus recursos de metaprogramação em tempo de compilação e autoajuste.
Embora ainda seja um trabalho em andamento, ele tem potencial para se tornar uma ferramenta de programação formidável e transformar a indústria de programação. Portanto, devemos ficar atentos aos futuros desenvolvimentos da Modular!
Chris Santos
Você acha que uma pessoa com conhecimento básico a intermediário conseguiria iniciar seus estudos nesse novo idioma? Ou você aconselha estudar primeiro uma linguagem mais básica, como Javascript ou Python?
İlke Candan Bengi
Olá Cris, desculpe a demora em responder! Acredito que ter uma compreensão/experiência básica do Python de antemão pode ser útil antes de começar com o Mojo.