Article image
Fernando Araujo
Fernando Araujo08/05/2023 13:44
Share

Mojo – detalhes sobre a nova linguagem para IA

  • #C
  • #Python
  • #Machine Learning

Olá, devs!

   Hoje eu fui surpreendido com o anúncio de uma nova linguagem de programação, chamada Mojo. É uma linguagem voltada para desenvolvimento de soluções de Inteligência Artificial (IA).

Este artigo vai falar dessa nova linguagem, de forma introdutória, pois eu soube dela hoje, mas na área de IA ela já chegou chamando a atenção.

O que você vai ler aqui:

1.   Introdução

2.   Aplicações típicas de IA

3.   A Linguagem Mojo

4.   Exemplos de código em Mojo

5.   Conclusão

6.   Fontes de Consulta

1 – Introdução

Hoje eu fui surpreendido com o anúncio de uma nova linguagem de programação, chamada Mojo. É uma linguagem voltada para desenvolvimento de soluções de Inteligência Artificial (IA). Como eu estou estudando aqui na DIO para trabalhar na área de Dados e IA em no futuro, corri para ler as novas.

A princípio, pensei que era mais um novo framework, que alguém desenvolveu para resolver um problema específico e estava chamando de linguagem.

Este artigo vai falar dessa nova linguagem, de forma introdutória, pois eu soube dela hoje, mas na área de IA ela já chegou chamando a atenção.

Eu vou mostrar alguns detalhes iniciais dessa linguagem e exemplos de código escrito nela.

2 – Aplicações típicas de IA

Os principais requisitos de uma aplicação de IA são: aprendizado de máquina, processamento de dados, alto desempenho e visualização de dados.

A linguagem Python oferece a maioria destes recursos, menos o alto desempenho. Este requisito é facilmente obtido por linguagens de baixo nível, como C e C++.

Atualmente, projetos grandes de IA utilizam Python para a parte de acesso a dados e para a visualização, enquanto o requisito da velocidade é obtido por rotinas escritas em C, C++ ou outra linguagem de alto desempenho, chamadas dentro do código escrito em Python.

3 – A Linguagem Mojo

   A linguagem Mojo virou notícia hoje em todos os portais e fontes de notícias sobre IA. Aí, você pode se perguntar: lá vem mais uma nova linguagem, que eu vou precisar aprender do zero!

   Você também pode pensar: alguém deve ter criado um framework para resolver um determinado problema específico e está chamando de linguagem.

Na verdade, não é uma coisa nem outra.

A linguagem Mojo é uma espécie de superconjunto de Python, e se aproveita da usabilidade do Python. Desta forma, para quem já conhece Python fica fácil aprender Mojo. Além disso, Mojo apresenta o mesmo desempenho da linguagem C.

Ou seja, Mojo junta o melhor de dois mundos: a facilidade de Python com a velocidade de C.

Então, Python não presta mais para a área de Dados e IA? Não é bem assim. Embora Python ofereça inúmeros pacotes para se trabalhar com dados, quando é exigido um grande desempenho, Python usa rotinas de baixo nível, implementadas em C, C++ ou outras linguagens de alto desempenho. Dessa forma, bibliotecas como Tensor Flow e numpy, implementadas em C, são usadas em Python.

A linguagem Mojo foi criada pela empresa Modular, cujo cofundador Chris Lattner foi o criador do Swift e da infraestrutura de compilação LLVM, escrita em C++.

Algumas das características principais do Mojo são:

1. Mojo é um superconjunto de Python, buscando a compatibilidade total com esta linguagem.

2. Possui forte checagem de tipos, objetivando um melhor desempenho e verificação de erros.

3. Oferece um verificador de propriedade e empréstimo de memória, por meio de uma convenção de argumento de propriedade (”owner”), usado por funções que desejam obter propriedade exclusiva sobre um valor, melhorando a segurança da memória.

4. Proporciona ajuste automático integrado, ajudando a encontrar automaticamente os melhores valores para seus parâmetros, aproveitando o hardware de destino.

5. Usa todo o poder da MLIR (”Multi-Level Intermediate Representation”), permitindo o aproveitamento de vetores, threads e unidades de hardware de IA.

6. Oferece paralalelismo, permitindo o uso adequado de hardware avançado, como as modernas GPUs atuais.

Só para dar uma ideia do desempenho de Mojo em relação a Python, veja a tabela a seguir (eu não consegui descobrir qual foi a aplicação cuja execução resultou nestes dados):

image

Você viu esse número aí em cima?

Mojo teve um desempenho de 35000 vezes o de Python para resolver o mesmo problema!!

Seja o que for, é um desempenho absurdo, não?? A conferir!!

4 – Exemplos de código em Mojo

O uso do compilador para Mojo é bem semelhante ao uso do terminal do compilador de Python.

A extensão do arquivo fonte de Mojo é .mojo, mas ele também aceita o emoticon de fogo como extensão. :-)

Para testar a nova linguagem, você pode usar o Mojo Playground, um ambiente no estilo JupyterHub, disponibilizado pela empresa Modular. Você pode se cadastrar e solicitar o acesso ao Mojo Playground no endereço https://www.modular.com/get-started.

A seguir, alguns exemplos de código escrito em Mojo:

4.1 – Hello, world (note a extensão do arquivo-fonte, um emoticon do fogo!)

image

4.2 – Declarações let e var

image

4.3 – Definição de uma estrutura (struct)

image

4.4 – Plotagem de dados

image

4.5 – Ordenação de vetor

image

6 - Conclusão

Hoje, eu me deparei com várias publicações e notícias sobre uma nova linguagem de programação, voltada para aplicações de IA.

Como eu estou estudando aqui na DIO para trabalhar na área de Dados e IA em no futuro, corri para ler as novas.

A princípio, pensei que era mais um novo framework, que alguém desenvolveu para resolver um problema específico e estava chamando de linguagem.

Mas, pelo que li até agora, a linguagem nasceu na empresa Modular que já tem entre seus fundadores o criador do Swift e procurou associar as diversas vantagens de se usar Python na área de dados e IA (facilidade de aprendizado e de uso) com o desempenho de linguagens de baixo nível, como C ou C++.

Este artigo mostrou alguns detalhes iniciais dessa linguagem e exemplos de código escrito nela.

Eu sei que ainda é muito cedo para dizer que ela SUBSTITUIRÁ Python (ou se será vantajoso seu uso em alguns ou em todos os casos) nessa área, mas acho que vale a pena dar uma olhada nela e acompanhar sua evolução e o engajamento dos desenvolvedores.

7 – Fontes de consulta

   Como ela é uma linguagem relativamente nova (eu só tive conhecimento dela hoje!), as fontes de consulta ainda são poucas, mas confiáveis. Eu recomendo as fontes que usei hoje para conhecê-la e ler alguma coisa sobre ela.

[1] The PyCoach, Mojo: The Programming Language for AI That Is Up To 35000x Faster Than Python. Disponível em: <https://artificialcorner.com/mojo-the-programming-language-for-ai-that-is-up-to-35000x-faster-than-python-e68d1fba37db>. Acesso em: 08/05/2023.

[2] Modular.com, Modular: Mojo. Disponível em: <https://docs.modular.com/mojo/>. Acesso em: 08/05/2023.

[3] Modular.com, Modular: Get started today. Disponível em: <https://www.modular.com/get-started>. Acesso em: 08/05/2023.

Share
Comments (7)
Alan Oliveira
Alan Oliveira - 09/05/2023 10:09

Muito interessante.

Gabriel Gregorio
Gabriel Gregorio - 08/05/2023 16:38

Gratidão pelo artigo Fernando! E que performance tem essa nova linguagem.

Marcos Sampaio
Marcos Sampaio - 08/05/2023 16:34

Só tinha visto a noticia, nada mais sobre como seria o uso em codigo, é interessante e espero testar em breve

Tiago Pimentel
Tiago Pimentel - 08/05/2023 15:19

Cada nova uma linguagem que surge, uma evolução. Obrigado pela informação, ainda não tinha visto!

Luiz Café
Luiz Café - 08/05/2023 14:26

Que interessante Fernando. É muito bom ver como o surgimento de novas linguagens pode ajudar a melhorar ainda mais o desenvolvimento de ferramentas que podem ajudar milhares de pessoas. Acredito que a linguagem Mojo pode ser muito útil nos próximos anos, sem claro descartar nenhuma linguagem, pois cada uma tem sua importância.

Fernando Araujo
Fernando Araujo - 08/05/2023 13:59

Obrigado, Jefferson.

Eu já estou me preparando para testá-la!!!

Jefferson Pessoa
Jefferson Pessoa - 08/05/2023 13:52

Parabéns pelo artigo Fernando.


O desempenho é absurdo.


Na primeira oportunidade vou testar.


Jefferson