O Mojo Finalmente É Open Source... Então Eu Testei

BBetter Stack
컴퓨터/소프트웨어

스크립트

00:00:00Mojo, a linguagem de programação, acabou de atingir a versão 1.0, e o momento é um pouco estranho.
00:00:05Foi lançada com um compilador fechado, sete dias depois tornaram-na de código aberto,
00:00:09e a Qualcomm acabava de comprar a empresa.
00:00:12Mas vamos esquecer tudo isso por um segundo.
00:00:14O grande diferencial do Mojo é código semelhante ao Python sem abandonar o C++ ou CUDA em busca de velocidade.
00:00:20Então vamos ver se isso realmente cumpre o que promete.
00:00:27Toda a questão com o Mojo resume-se à seguinte pergunta.
00:00:30E se você pudesse escrever código que parece e se comporta exatamente como Python,
00:00:34mas executar as partes que realmente importam sem abandonar o C++ ou CUDA?
00:00:39Uma linguagem legível abrangendo CPU e GPU.
00:00:42Esse é o objetivo principal aqui.
00:00:43E agora que o Mojo finalmente chegou à versão 1.0, eu queria ver quanto disso é realmente verdade.
00:00:49Portanto, antes de entrarmos na Qualcomm, código aberto e tudo isso, vamos apenas executá-lo.
00:00:53Se você gosta de ferramentas de programação para acelerar seu fluxo de trabalho, não deixe de se inscrever.
00:00:57Temos vídeos novos o tempo todo.
00:00:59Vou fazer isso na minha máquina, mas não vou dar um tutorial de Mojo aqui.
00:01:03Se você nunca viu antes, sim, vai parecer com Python,
00:01:07mas você vai notar algumas diferenças fundamentais.
00:01:10Do lado esquerdo está o Python.
00:01:12Do lado direito está o Mojo.
00:01:13É o mesmo loop, a mesma grade, o mesmo limite de iteração.
00:01:17Não vou explicar nenhum dos cálculos matemáticos disso.
00:01:20Observe os dois loops while.
00:01:21Eles estão fazendo exatamente a mesma coisa.
00:01:23Vamos executar o Python primeiro aqui.
00:01:26Ok, ótimo.
00:01:27Funcionou.
00:01:28Foi executado.
00:01:28Agora, o mesmo programa compilado com Mojo.
00:01:32Mais uma vez, vamos executá-lo.
00:01:35E pronto.
00:01:35Aí está.
00:01:36Agora, as somas de verificação não vão coincidir no último dígito.
00:01:39Elas diferem por algumas centenas em um quarto de milhão.
00:01:43O Python faz a multiplicação e depois a adição.
00:01:45A compilação do Mojo pode fundir isso em uma única instrução.
00:01:49Alguns pixels exigem uma iteração extra.
00:01:51Considere os segundos aqui como o número real.
00:01:54E isto não é o NumPy.
00:01:55Não é um modelo.
00:01:56O ganho de desempenho não se resume apenas ao loop de CPU ter ficado mais rápido.
00:02:00Você pode começar em Python porque é fácil.
00:02:03Depois, o caminho passa para C++ ou CUDA.
00:02:06Agora você gerencia dois arquivos e eles começam a se distanciar.
00:02:09Portanto, aqui está a pergunta que o Mojo faz.
00:02:12O arquivo que você lê pode ser exatamente o mesmo arquivo enviado para a GPU?
00:02:17Esta função é o kernel.
00:02:18Cada thread da GPU soma um par de números.
00:02:20É só isso.
00:02:21Eu não mudei para Metal, Swift ou CUDA.
00:02:24Basta compilá-lo.
00:02:26E agora temos o código rodando.
00:02:28Portanto, sim.
00:02:30O Mojo consegue fazer algo bastante interessante aqui.
00:02:32E acabei de compilar um kernel de GPU funcional em um MacBook usando a mesma linguagem em que eu escrevia
00:02:38código normal, o Python.
00:02:40Seu código de aprendizado de máquina começa em Python porque o Python é fácil de usar.
00:02:44Todos nós sabemos disso.
00:02:45Então, com o tempo, o desempenho começa a importar.
00:02:48Portanto, as partes importantes são reescritas em C++ ou CUDA.
00:02:52Agora, passamos a manter duas versões do mesmo sistema.
00:02:55E novamente, com o tempo, isso só gera confusão.
00:02:58A proposta do Mojo é que o arquivo legível e o arquivo rápido sejam exatamente a mesma coisa.
00:03:03Agora, a pessoa por trás de tudo isso é Chris Lattner.
00:03:06Ele criou o LLVM, depois o Clang e, em seguida, o Swift.
00:03:10Mas fazer um kernel de GPU rodar é uma coisa.
00:03:14Chamar a linguagem de versão 1.0, isso já é um pouco diferente.
00:03:18Então, o que a versão 1.0 realmente significa aqui?
00:03:21Não significa que o Mojo esteja finalizado.
00:03:23Significa, mais ou menos, estabilidade.
00:03:25Há promessas de que o código que você escreve hoje não vai quebrar.
00:03:29É para isso que serve um lançamento importante como este.
00:03:30Mas então você se depara com a primeira parte estranha.
00:03:32O Mojo alcançou a versão 1.1 antes mesmo de seu compilador ser de código aberto.
00:03:37A biblioteca padrão já havia sido aberta em março de 2024.
00:03:40Os kernels max foram abertos em 2025.
00:03:43Mas o compilador, a ferramenta que realmente realiza a compilação, permaneceu proprietário até 18 de agosto deste ano.
00:03:50Sob licença Apache 2.0, o que é importante porque apenas sete dias antes, quando o Mojo 1.0 foi lançado, ainda era fechado.
00:03:57E isso responde a uma das maiores críticas que o Mojo recebeu em três anos consecutivos.
00:04:02As pessoas costumavam dizer: claro, mas o compilador é fechado.
00:04:05Já não podemos dizer isso com tanta facilidade, o que parece indicar que estamos caminhando na direção certa.
00:04:10Talvez esteja.
00:04:10Até você olhar para o que aconteceu três semanas antes.
00:04:14A aquisição pela Qualcomm foi concluída em 29 de julho.
00:04:16O Mojo 1.0 foi lançado em 11 de agosto.
00:04:19O compilador abriu em 18 de agosto.
00:04:21Portanto, o maior marco de abertura na história do Mojo ocorreu em menos de três semanas após a Modular deixar de ser uma empresa independente.
00:04:29E isso cria imediatamente duas formas totalmente diferentes de interpretar essa situação.
00:04:33A primeira é que a Qualcomm comprou a Modular porque quer o Mojo em todo lugar.
00:04:37Provavelmente não.
00:04:37Ou a Qualcomm comprou a Modular, e com o tempo tudo isso será absorvido por uma empresa muito maior.
00:04:44A Qualcomm fabrica chips.
00:04:45Uma linguagem que compila bem para chips torna-se muito mais valiosa.
00:04:49Podemos usá-la livremente.
00:04:50Portanto, a decisão de abrir o código faz sentido.
00:04:53Mas o sucesso do Mojo provavelmente não dependerá da Qualcomm.
00:04:57Dependerá de a linguagem ser realmente boa o suficiente para justificar a mudança em primeiro lugar.
00:05:02Mas, novamente, é aqui que tudo começa a ficar confuso.
00:05:05O Mojo tem um problema com benchmarks.
00:05:07Lá em 2023, o grande número divulgado era que o Mojo podia ser 68.000 vezes mais rápido que o Python.
00:05:13Isso é absurdo.
00:05:14Ainda existe uma publicação afirmando que o Mojo é 50% mais rápido que o Rust em análise de DNA.
00:05:19Esse benchmark foi totalmente desmentido.
00:05:21Demonstraram que o teste não estava medindo o que alegava medir.
00:05:25E você ainda vai ver o número de 35.000 vezes circulando por aí.
00:05:29Isso vem de multiplicação de matrizes.
00:05:31Mas o que estão comparando é, bem,
00:05:34de um lado, uma implementação em Mojo totalmente vetorizada, paralelizada e dividida em blocos.
00:05:40Do outro lado, um loop triplo em Python puro.
00:05:44Sim, um loop triplo.
00:05:45Não o NumPy, apenas um loop aninhado que ninguém na Terra usaria de verdade.
00:05:49Portanto, eu não me importo muito com essa história de ser 35.000 vezes mais rápido.
00:05:52Eu queria números obtidos nesta máquina.
00:05:54Estou em um M4 Pro comparado ao Python puro.
00:05:57Em relação ao Python puro, 26 vezes e meia mais rápido.
00:06:00Em relação ao NumPy, por operação, cerca de duas vezes mais rápido.
00:06:05Agora, obviamente, 26 não é 68.000.
00:06:08Mas 26 vezes ainda é um bom número, porque o NumPy já utiliza C por baixo dos panos.
00:06:14Nesse ponto, você não está realmente superando o Python.
00:06:16Você está superando o C com um comportamento de memória melhor.
00:06:19E essa é a parte frustrante sobre o Mojo.
00:06:21Mas o desempenho não é o principal motivo pelo qual eu hesitaria em usar o Mojo hoje.
00:06:25Eu já brinquei com ele antes.
00:06:27Estou executando-o aqui hoje.
00:06:28O ponto principal é a estabilidade.
00:06:30Agora, quão estável é isso?
00:06:32Porque o Mojo 1.0 é lançado com 41 avisos de API instável, incluindo int, print e len, funções essenciais embutidas.
00:06:40Elas foram sinalizadas como instáveis dentro de um suposto lançamento de estabilidade.
00:06:45E no mesmo dia em que o Mojo promete que seu código não quebraria, a remoção da palavra-chave FN quebrou cerca de 39 pacotes do ecossistema.
00:06:52Agora, a palavra-chave FN, que era fundamental para o funcionamento do Mojo, foi completamente removida.
00:06:58Sem processo FC.
00:06:59E embora o compilador seja agora de código aberto, eles ainda não estão aceitando contribuições para ele.
00:07:04Portanto, o Mojo 1.0 é estável, eu imagino.
00:07:07Mas talvez não tão estável quanto eles dizem.
00:07:09O que nos leva à única pergunta que realmente importa.
00:07:12Você deve usar isso?
00:07:13Agora, se você escreve kernels de GPU, CUDA, Triton, esse universo, eu acho que o Mojo vale absolutamente um dia ou dois de atenção.
00:07:21Uma linguagem abrangendo CPU e GPU, e eu consegui compilar um kernel de GPU funcional em um laptop.
00:07:27Não há muita coisa por aí que faça isso.
00:07:29Mas isso ainda tem muito espaço para crescer.
00:07:31Portanto, eu não daria prioridade a isso de jeito nenhum por enquanto.
00:07:35Três anos atrás, o argumento contra o Mojo era bastante simples.
00:07:38Linguagem nova legal, mas quem vai usar isso?
00:07:40Era uma linguagem fechada de uma startup pedindo aos desenvolvedores para apostarem tudo nela.
00:07:44Hoje, o compilador usa a licença Apache 2.0.
00:07:47A linguagem está na versão 1.0.
00:07:48E aquela startup agora faz parte da Qualcomm.
00:07:51Eu sou o Josh da BetterStack.
00:07:53Se você gosta de dicas e truques de programação como este, não deixe de se inscrever.
00:07:56Nos vemos em um próximo vídeo.

핵심 요약

A linguagem Mojo alcançou a versão 1.0 e abriu seu compilador sob a licença Apache 2.0 logo após a aquisição pela Qualcomm, entregando desempenho superior ao Python puro em testes locais, apesar de ainda apresentar instabilidades na API.

하이라이트

  • A linguagem Mojo atingiu a versão 1.0 e seu compilador tornou-se de código aberto sob a licença Apache 2.0 em 18 de agosto.

  • A Qualcomm concluiu a aquisição da empresa Modular em 29 de julho de 2026.

  • O compilador Mojo rodando em um processador M4 Pro apresentou desempenho 26,5 vezes mais rápido que o Python puro e cerca de duas vezes mais rápido que o NumPy por operação.

  • A versão 1.0 do Mojo foi lançada com 41 avisos de API instável, incluindo funções essenciais como int, print e len.

  • A remoção da palavra-chave FN quebrou cerca de 39 pacotes do ecossistema no mesmo dia do lançamento da versão 1.0.

타임라인

Introdução e proposta do Mojo

  • O Mojo busca unir a legibilidade do Python com o desempenho de linguagens como C++ e CUDA.
  • A linguagem permite escrever código executável em CPU e GPU utilizando a mesma sintaxe.

O projeto desenvolvido por Chris Lattner propõe que o mesmo arquivo legível seja o arquivo executado e otimizado para hardware avançado. Testes práticos demonstram a execução de loops e cálculos matemáticos comparando o comportamento entre o Python tradicional e a compilação em Mojo.

Compilação de kernel de GPU e o histórico de Chris Lattner

  • É possível compilar um kernel de GPU funcional diretamente em um laptop usando a sintaxe do Python.
  • Chris Lattner, criador do LLVM, Clang e Swift, lidera o desenvolvimento por trás da tecnologia.

A capacidade de compilar código para aceleradores gráficos sem recorrer a Metal ou CUDA elimina a necessidade de gerenciar múltiplos arquivos em diferentes linguagens. O marco da versão 1.0 busca garantir estabilidade para que o código escrito não sofra quebras frequentes.

Código aberto e aquisição pela Qualcomm

  • O compilador do Mojo foi disponibilizado sob a licença Apache 2.0 em 18 de agosto.
  • A Qualcomm concluiu a compra da empresa Modular em 29 de julho, semanas antes da abertura do compilador.

A biblioteca padrão e os kernels max foram abertos em etapas anteriores, mas a retenção do compilador como software proprietário gerava críticas. Com a aquisição pela fabricante de chips Qualcomm, a abertura do código ganha novo contexto estratégico.

Análise de benchmarks e desempenho real

  • Alegações iniciais de ganhos massivos baseavam-se em comparações contra loops triplos ineficientes em Python puro.
  • Em testes locais em um M4 Pro, o Mojo foi 26,5 vezes mais rápido que o Python puro e duas vezes mais rápido que o NumPy por operação.

Embora números antigos divulguem velocidades extremas, os ganhos reais derivam de melhor gerenciamento de memória e otimização de baixo nível. Superar o NumPy significa superar uma biblioteca que já executa código C internamente.

Estabilidade da API e recomendação de uso

  • O lançamento da versão 1.0 incluiu 41 avisos de API instável e a remoção da palavra-chave FN quebrou dezenas de pacotes.
  • A linguagem é recomendada para desenvolvedores que escrevem kernels de GPU, mas ainda requer cautela para adoção prioritária.

A presença de funções essenciais sinalizadas como instáveis e a ausência de aceitação de contribuições externas diretas para o compilador indicam que a tecnologia ainda está em fase de maturação. Desenvolvedores da área de inteligência artificial e computação gráfica encontram utilidade prática imediata, mas o ecossistema ainda possui espaço para expansão.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기