Compiladores e interpretadores
O curso acompanha o código-fonte desde o texto até a execução. Explica o que fazem compiladores e interpretadores, o espectro entre eles e a diferença entre compilação AOT e JIT. Você constrói um lexer pequeno e um parser de descida recursiva em Ruby, e depois inspeciona tokens, ASTs e bytecode YARV com Ripper, Prism e as ferramentas do RubyVM. As aulas finais tratam de VMs baseadas em pilha, JVM, WebAssembly e ruby.wasm, cache com bootsnap e os JITs do CRuby: MJIT, YJIT com basic block versioning e o ZJIT experimental.
O que você vai aprender
- ✓As fases de um pipeline de compilação, da análise léxica à geração de código
- ✓Como escrever um lexer simples e um parser de descida recursiva em Ruby
- ✓Como o CRuby transforma código Ruby em bytecode YARV e o executa
- ✓Como inspecionar tokens, ASTs e bytecode com Ripper, Prism e RubyVM
- ✓Como VMs baseadas em pilha, a JVM e o WebAssembly executam bytecode
- ✓Como funciona a compilação JIT no MJIT, no YJIT e no ZJIT
O que é um compilador?
Computadores só entendem código de máquina: instruções binárias brutas específicas para uma arquitetura de CPU (x86, ARM, etc.). Mas humanos escrevem código em linguagens de alto nível como Ruby, C ou Go. Algo precisa fazer essa ponte.
Ler a aula completa grátis →Currículo
7 aulasO que é um compilador?
Mostra o que um compilador faz, suas fases, AOT contra JIT e a compilação cruzada de gems nativas.
O que é um interpretador?
Explica interpretadores tree-walking, o espectro entre compilador e interpretador, REPLs, recursos dinâmicos do Ruby e o bootsnap.
Análise léxica e tokenização
Mostra como o lexer agrupa caracteres em tokens, resolve ambiguidades com lookahead e como o Ripper exibe isso.
Parsing e a AST
Constrói uma AST com regras gramaticais e descida recursiva, depois inspeciona a AST do Ruby com Ripper e Prism.
Como o Ruby executa: o pipeline do CRuby
Acompanha o pipeline do CRuby do código-fonte a tokens, AST, bytecode YARV e execução baseada em pilha.
Bytecode e máquinas virtuais
Compara bytecode com código de máquina e examina o YARV, a JVM, o WebAssembly e o ruby.wasm no navegador.
Compilação JIT e o futuro do Ruby
Explica profiling e compilação JIT, o MJIT, o YJIT com basic block versioning e desotimização, e o ZJIT experimental.