Visão Geral
Curso Mojo for Python Developers: Este curso oferece uma imersão técnica profunda na linguagem de programação Mojo, projetada especificamente para desenvolvedores Python experientes. Ele aborda a transição da tipagem dinâmica e do gerenciamento automático de memória do Python para o sistema de tipos estáticos, o modelo de propriedade (ownership) e os recursos de metaprogramação do Mojo. O foco é capacitar os alunos a escrever código de alto desempenho, próximo ao metal, aproveitando a sintaxe familiar do Python e mantendo a interoperabilidade total com seu vasto ecossistema de bibliotecas. O curso explora as nuances da compilação AOT (Ahead-of-Time) e JIT (Just-in-Time) no contexto do Mojo e como ele resolve o problema de desempenho "duas linguagens" na engenharia de IA e sistemas.
Objetivo
Após concluir este Curso Mojo for Python Developers, você será capaz de:
- Escrever código Mojo idiomático, distinguindo eficazmente entre o uso de
def (dinâmico) e fn (estático/estrito).
- Utilizar o sistema de tipos estáticos do Mojo para obter segurança de tipo em tempo de compilação e otimizações de desempenho significativas.
- Compreender e aplicar o modelo de propriedade e empréstimo (ownership and borrowing) do Mojo para gerenciar memória de forma eficiente sem um Garbage Collector.
- Implementar estruturas de dados personalizadas de alto desempenho usando
struct e gerenciar seu ciclo de vida.
- Otimizar algoritmos numéricos utilizando vetores SIMD e técnicas de paralelismo integradas.
- Interoperar perfeitamente com código e bibliotecas Python existentes dentro de um projeto Mojo.
- Utilizar metaprogramação em tempo de compilação para gerar código otimizado e flexível.
Publico Alvo
-
- Desenvolvedores Python de nível intermediário a avançado.
- Engenheiros de Machine Learning e IA que buscam otimizar pipelines de dados e inferência de modelos.
- Desenvolvedores de backend focados em computação intensiva e gargalos de desempenho.
- Programadores interessados em programação de sistemas sem abandonar a ergonomia de linguagens de alto nível.
-
Materiais
Ingles/Portugues
Conteúdo Programatico
Módulo 1: Fundamentos e a Ponte Python-Mojo
- Apresentação do Mojo: O problema das duas linguagens e a solução unificada.
- Instalação e configuração do ambiente de desenvolvimento.
mojo CLI e fluxo de trabalho básico (REPL, build, run).
- Sintaxe básica: Variáveis (
var, let), loops, condicionais (semelhanças com Python).
- Funções dinâmicas com
def: A porta de entrada familiar.
- Interoperabilidade essencial: Importando e usando módulos Python (
Python.import_module).
Módulo 2: O Núcleo Estático - Tipos e fn
- Introdução à tipagem estática: Por que e quando usar.
- Tipos primitivos do Mojo (
Int, Float64, Bool, String, etc.).
- Funções estritas com
fn: Regras, restrições e benefícios de desempenho.
- Argumentos de função e seus modificadores (
borrowed, inout, owned).
- Anotações de tipo e inferência de tipo.
Módulo 3: Estruturas de Dados e Gerenciamento de Memória
struct vs. class (Python): Layout de memória e comportamento.
- Métodos especiais em structs:
__init__, __copyinit__, __moveinit__, __del__.
- O modelo de propriedade (Ownership): Entendendo quem detém os dados.
- Semântica de Cópia (Copy) vs. Movimentação (Move) e o operador
^.
- Gerenciamento de memória sem GC: Referências, tempo de vida e o "borrow checker".
Módulo 4: Desempenho de Alto Nível e Metaprogramação
- Tipos parametrizados (Generics): Escrevendo código reutilizável e seguro.
- Metaprogramação em tempo de compilação:
alias, valores comptime e avaliação condicional.
- Vetores SIMD (
SIMD[type, size]): Acelerando cálculos numéricos.
- Paralelismo e concorrência: Utilizando múltiplos núcleos com
parallelize.
- Benchmarking e análise de desempenho: Comparando Python puro vs. Mojo dinâmico vs. Mojo estático.
Módulo 5: Tópicos Avançados e Projetos
- Tratamento de erros com
Error e try/catch em contextos fn.
- Interoperabilidade avançada: Passando estruturas de dados complexas entre Python e Mojo.
- Ponteiros e interação de baixo nível (quando necessário).
- Projeto Prático 1: Implementação de um algoritmo numérico intensivo (ex: multiplicação de matrizes, processamento de imagem) otimizado com SIMD e paralelismo.
- Projeto Prático 2: Criação de uma biblioteca híbrida que expõe uma interface Python amigável para um núcleo de computação de alto desempenho escrito em Mojo.
TENHO INTERESSE