Saltar para o conteúdo

Mojo (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Mojo
Paradigma Multiparadigma:
Surgido em 7 de setembro de 2023; há 11 meses
Última versão 24.4 / 7 de junho de 2024; há 2 meses
Criado por Chris Lattner
Estilo de tipagem Estática, Forte, Nominal, Inferente
Influenciada por Python, Cython, C, C++, Rust, Swift, Zig
Sistema operacional Cross-platform
Licença Não-livre
Extensão do arquivo .🔥 ou .mojo
Página oficial www.modular.com/mojo

Mojo é uma linguagem de programação apresentado como um superconjunto Python, com desempenho semelhante ao C, que está atualmente em desenvolvimento.[1][2][3] Está disponível tanto em navegadores via Mojo Playground[4] quanto localmente em Linux, macOS e Windows (usando WSL).[5] O objetivo do Mojo é combinar a usabilidade de linguagens de programação de nível mais alto, especificamente Python, com o desempenho de linguagens de programação de nível mais baixo, como C++, Rust e Zig.[6] O compilador do Mojo é atualmente de código fechado, com uma biblioteca padrão de código aberto, embora a Modular, a empresa por trás do Mojo, tenha declarado a intenção de eventualmente tornar a linguagem de programação Mojo de código aberto à medida que ela amadurece.[7]

Origem e Desenvolvimento

[editar | editar código-fonte]

A linguagem de programação Mojo foi desenvolvida pela empresa Modular Inc, que foi estabelecida por Chris Lattner, criador da linguagem Swift e do LLVM, junto com Tim Davis, que trabalhou anteriormente no Google.[8] O objetivo do Mojo é unir a simplicidade do Python com a alta performance exigida por aplicações avançadas de inteligência artificial. [9]

Conforme os logs de mudanças públicos, o desenvolvimento do Mojo começou em 2022.[10] Em maio de 2023, a versão inicial acessível para testes foi lançada online por meio de um playground hospedado.[11] A partir de setembro de 2023, o Mojo pôde ser baixado localmente no Linux[12], e em outubro de 2023 foi liberado para download no macOS da Apple.[13]

Em março de 2024, a Modular tornou a biblioteca padrão do Mojo open-source (código aberto) e passou a receber contribuições da comunidade sob a licença Apache 2.0.[14][15]

Características

[editar | editar código-fonte]

Mojo adota o slogan "uma nova linguagem de programação para todos os desenvolvedores de IA". Com isso, podemos esperar que suas inovações estejam voltadas para aspectos como desempenho e paralelização, elementos essenciais para o desenvolvimento de sistemas de IA.[1]

Mojo foi concebido como um superconjunto de Python, o que significa que é uma extensão da linguagem Python, mantendo total compatibilidade com ela. Isso permite que desenvolvedores utilizem código Python existente dentro de Mojo sem necessidade de modificações, facilitando a transição e aproveitando a vasta biblioteca de ferramentas e bibliotecas do ecossistema Python. Além disso, por ser um superconjunto, Mojo adiciona novos recursos e capacidades, ampliando o que pode ser feito dentro da linguagem, enquanto preserva a sintaxe familiar e a facilidade de uso que tornaram Python tão popular.[2]

Diferente de Python, que é uma linguagem de tipagem dinâmica, Mojo adota uma abordagem de tipagem forte e estática. Isso significa que os tipos de variáveis e funções são definidos e verificados em tempo de compilação, não em tempo de execução. Esse recurso permite que erros relacionados a tipos sejam identificados mais cedo no processo de desenvolvimento, melhorando a confiabilidade do código. Além disso, a tipagem forte contribui para otimizações de desempenho, uma vez que o compilador pode gerar código mais eficiente ao saber exatamente que tipos de dados serão manipulados.[2]

Mojo utiliza a MLIR, uma infraestrutura de compilação avançada desenvolvida para permitir otimizações e transformações de código em múltiplos níveis de abstração. A MLIR permite que Mojo aproveite ao máximo os recursos de hardware modernos, como vetores, threads e unidades de processamento especializadas para IA. Essa integração proporciona uma plataforma flexível para desenvolver algoritmos de IA que podem ser otimizados para uma ampla gama de arquiteturas de hardware, desde CPUs tradicionais até aceleradores de IA personalizados. O uso da MLIR também facilita a portabilidade e a escalabilidade do código, permitindo que desenvolvedores aproveitem novos avanços em hardware sem precisar reescrever suas aplicações.[2]

Um dos pontos fortes de Mojo é seu suporte robusto ao paralelismo. Paralelismo é a capacidade de executar múltiplas operações simultaneamente, e é essencial para aproveitar o poder das GPUs modernas e outros tipos de hardware avançado. Mojo facilita o desenvolvimento de código que pode ser distribuído eficientemente entre múltiplos núcleos de CPU ou múltiplas unidades de GPU, garantindo que as tarefas sejam executadas de forma rápida e eficiente. Isso é particularmente importante em aplicações de IA, onde a capacidade de processar grandes volumes de dados de forma paralela pode significar a diferença entre uma solução viável e uma que não pode ser executada em tempo hábil.[2]

Comparação com Python

[editar | editar código-fonte]

Mojo foi anunciada com a alegação de que pode ser até 35.000 vezes mais rápida que o Python para determinados tipos de operações. Um dos benchmarks usados para demonstrar essa diferença de desempenho foi a geração de um conjunto de Mandelbrot, um problema computacionalmente intensivo.[16] Graças a técnicas avançadas de vetorização e paralelismo eficiente, o desempenho do Mojo chegou a ser até 68.000 vezes mais rápido do que o Python nesse teste específico.

Exemplos de Uso

[editar | editar código-fonte]

O código ilustra um exemplo do uso de uma estrutura em Mojo para acessar e exibir dados:

struct Pessoa {

   nome: String
   idade: i32

}

function main() {

   let pessoa1 = Pessoa{nome: "João", idade: 30}
   println("Nome: {}", pessoa1.nome)
   println("Idade: {}", pessoa1.idade)

}


Definição da Estrutura ‘Pessoa’

 - ‘struct Pessoa’ define uma nova estrutura chamada ‘Pessoa’. 
 - A estrutura possui dois campos: ‘nome’ do tipo ‘String’ e ‘idade’ do tipo ‘i32’ (um tipo de dado inteiro de 32 bits).

Função ‘main’

 - ‘function main()’ é a função principal onde a execução do programa começa.
 - Dentro da função ‘main’, é criada uma instância da estrutura ‘Pessoa’ chamada ‘pessoa1’.
 - ‘Pessoa{nome: "João", idade: 30}’ cria um novo objeto ‘pessoa1’ da estrutura ‘Pessoa’, com o nome "João" e idade 30.
 - ‘println("Nome: {}", pessoa1.nome)’ imprime o valor do campo ‘nome’ da instância ‘pessoa1’.
 - ‘println("Idade: {}", pessoa1.idade)’ imprime o valor do campo ‘idade’ da instância ‘pessoa1’.


[17]

Referências

  1. a b «Mojo: uma nova linguagem de programação para Inteligência Artificial». Revelo Community - O melhor conteúdo tech para devs (em pr). 25 de outubro de 2023. Consultado em 16 de agosto de 2024 
  2. a b c d e «Why Mojo🔥 | Modular Docs». docs.modular.com (em inglês). Consultado em 16 de agosto de 2024 
  3. «Mojo Manual | Modular Docs». docs.modular.com (em inglês). Consultado em 16 de agosto de 2024 
  4. Araujo, Fernando. «Mojo – detalhes sobre a nova linguagem para IA». DIO. Consultado em 16 de agosto de 2024 
  5. «Install MAX & Mojo | Modular Docs». docs.modular.com (em inglês). Consultado em 16 de agosto de 2024 
  6. «Mojo 🔥: Programming language for all of AI». www.modular.com (em inglês). Consultado em 16 de agosto de 2024 
  7. «Modular: The Next Big Step in Mojo🔥 Open Source». www.modular.com (em inglês). Consultado em 16 de agosto de 2024 
  8. Claburn, Thomas. «The Register» 
  9. Thomason, James (21 de maio de 2024). «Mojo Rising: The resurgence of AI-first programming languages». VentureBeat (em inglês). Consultado em 22 de agosto de 2024 
  10. «Mojo🔥 changelog | Modular Docs». docs.modular.com (em inglês). Consultado em 22 de agosto de 2024 
  11. «Modular: A unified, extensible platform to superpower your AI». www.modular.com (em inglês). Consultado em 22 de agosto de 2024 
  12. «Modular: Mojo🔥 - It's finally here!». www.modular.com (em inglês). Consultado em 22 de agosto de 2024 
  13. «Modular: Mojo🔥 is now available on Mac». www.modular.com (em inglês). Consultado em 22 de agosto de 2024 
  14. «Modular open-sources its Mojo AI programming language's core components». SiliconANGLE (em inglês). 28 de março de 2024. Consultado em 22 de agosto de 2024 
  15. «mojo/stdlib/README.md at nightly · modularml/mojo». GitHub (em inglês). Consultado em 22 de agosto de 2024 
  16. «Modular: How Mojo🔥 gets a 35,000x speedup over Python – Part 1». www.modular.com (em inglês). Consultado em 22 de agosto de 2024 
  17. «Modular: Mojo🔥 - A journey to 68,000x speedup over Python - Part 3». www.modular.com (em inglês). Consultado em 22 de agosto de 2024