Mojo, a nova linguagem de programação criada por Chris Lattner, o criador do LLVM

mojo lang

Mojo é uma nova linguagem de programação que promete melhor desempenho para desenvolvimento de aprendizado de máquina

Alguns dias atrás, veio a notícia de que Chris Latner, fundador e arquiteto-chefe da LLVM e Tim Davis, ex-chefe de projetos de IA do Google lançou "Mojo", uma nova linguagem de programação, baseado em Python, que corrige problemas de implementação e desempenho do Python.

É mencionado que Mojo que combina facilidade de uso para P&D e prototipagem rápida com adequação para produtos finais de alto desempenho. O primeiro é alcançado através do uso da sintaxe familiar da linguagem Python, e o segundo é devido à capacidade de compilar para código de máquina, mecanismos para gerenciamento seguro de memória e uso de ferramentas para aceleração de cálculos por hardware.

Sobre Mojo

Esta nova linguagem de programação concentra-se no uso para desenvolvimento de aprendizado de máquina, mas sime apresentado como uma linguagem de uso geral que estende os recursos da linguagem Python com programação de sistemas e é adequado para uma ampla gama de tarefas.

Por exemplo, a linguagem é aplicável a áreas como computação de alto desempenho, processamento de dados e transformação de dados. Um recurso interessante do Mojo é a capacidade de especificar o símbolo emoji “🔥” como uma extensão para arquivos de código.

O projeto é projetado para envolver recursos de hardware dos sistemas disponíveis no sistema nos cálculos. Por exemplo, GPUs, aceleradores especializados de aprendizado de máquina e instruções de processamento vetorial (SIMDs) podem ser usados ​​para executar aplicativos Mojo e paralelizar cálculos.

A razão para desenvolver um subconjunto separado da linguagem Python, em vez de ingressar no trabalho de otimização CPython existente, é citada como:

Uma abordagem de construção, integração dos recursos de programação do sistema e o uso de uma arquitetura interna fundamentalmente diferente que permite que o código seja executado em GPUs e vários aceleradores de hardware. Ao mesmo tempo, os desenvolvedores do Mojo pretendem manter o suporte ao CPython o máximo possível.

O Mojo pode ser usado tanto no modo de interpretação JIT quanto para compilação em arquivos executáveis (AOT, antes do tempo). O compilador possui tecnologias modernas integradas para auto-otimização, armazenamento em cache e compilação distribuída.

O código código-fonte na linguagem Mojo são convertidos em código intermediário de baixo nível MLIR (Multi-Level Intermediate Representation), desenvolvido pelo projeto LLVM e fornecendo funções adicionais para otimizar o processamento de gráficos de fluxo de dados.

O uso de mecanismos de hardware adicionais para acelerar os cálculos permite alcançar um desempenho que, com cálculos intensivos, supera os aplicativos C/C++.

Chris lattner é responsável por criar muitos dos projetos nos quais todos confiamos hoje, mesmo que não tenhamos ouvido falar de tudo o que ele construiu! Como parte de sua tese de doutorado, ele iniciou o desenvolvimento do LLVM, que mudou fundamentalmente a forma como os compiladores são construídos e hoje forma a base de muitos dos ecossistemas linguísticos mais usados ​​no mundo.

Luego pasó a lanzar Clang, un compilador de C y C++ que se encuentra en la parte superior de LLVM y es utilizado por la mayoría de los desarrolladores de software más importantes del mundo (incluido el suministro de la columna vertebral para el código crítico de rendimiento do Google). 

Ao avaliar o desempenho no campo de solução de problemas de aprendizado de máquina, a pilha Modular Inference Engine AI escrita na linguagem Mojo, em comparação com uma solução baseada na biblioteca TensorFlow, foi considerada 3 vezes mais rápida em um sistema com um processador Intel

No entanto, Chris viu que C e C++ não estavam aproveitando ao máximo o poder do LLVM, então, enquanto trabalhava na Apple, ele projetou uma nova linguagem, chamada "Swift", que ele descreve como "açúcar de sintaxe para LLVM". 

Vale ressaltar que o linguagem suporta digitação estática e recursos seguros de memória de baixo nível que lembram os recursos do Rust, como rastreamento de vida de referência e empréstimo variável (verificador de empréstimo).

Além dos meios para operação segura com ponteiros, a linguagem também fornece recursos para trabalhos de baixo nível, por exemplo, é possível acessar diretamente a memória no modo inseguro usando o tipo de ponteiro, chamar instruções SIMD individuais ou acessar extensões de hardware como TensorCores e AMX.

Atualmente, linguagem está em desenvolvimento intensivo e apenas a interface é oferecida on-line para tentar. As promessas futuras são lançar compilações separadas para serem executadas em sistemas locais posteriormente, após receber feedback sobre o trabalho do ambiente interativo da web.

O código-fonte aberto do compilador, JIT e outros desenvolvimentos relacionados ao projeto são planejados após a conclusão do projeto de arquitetura interna (o modelo de desenvolvimento para um protótipo de trabalho fechado se assemelha ao estágio inicial de desenvolvimento de LLVM, Clang e Swift).

Como a sintaxe do Mojo é baseada em Python e o sistema de tipos é próximo ao C/C++, há planos no futuro para desenvolver um conjunto de ferramentas para facilitar a tradução de projetos existentes escritos em C/C++ e Python para o Mojo, bem como como desenvolver projetos híbridos que combinam código Python e Mojo.

Por fim, se você tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   jaime dito

    interessante o cairn isso…. (sem acentos)