CEDIS | Universidade de Brasília

Compiladores 1

Aula 01 — introdução

Prof. Dr. Sergio Antônio Andrade de Freitas
FGA0003 — Compiladores 1 · 2026
símbolo CEDIS logo UnB
símbolo CEDISCEDIS
2/28

Mapa da aula

  1. 01Disciplina e contexto
  2. 02Por que estudar compiladores?
  3. 03Aplicações na Engenharia de Software e na IA
  4. 04Metodologia PBL e dinâmica das aulas
  5. 05Avaliação, equipes e próximos passos
símbolo CEDISCEDIS
3/28

A disciplina em quatro pontos

60 h

Carga horária

Integra fundamentação e desenvolvimento incremental.

Encontros

Segundas e quartas, com funções pedagógicas complementares.

Git

Repositório

Materiais, glossário e guia do projeto no GitHub.

PBL

Projeto central

Construção colaborativa de um compilador.

símbolo CEDISCEDIS
4/28

Professor e contexto institucional

Atuação

  • Professor titular e pesquisador na UnB
  • PLN, inteligência artificial e ciência de dados
  • Gamificação e metodologias ativas
  • Orientação na graduação e na pós-graduação

Perspectiva para a disciplina

  • Teoria articulada à prática
  • Autonomia com responsabilidade coletiva
  • Projetos como espaço de investigação
  • Ética, inclusão e impacto da tecnologia
Parte 1

Por que estudar compiladores?

Muito além de traduzir uma linguagem

símbolo CEDISCEDIS
6/28
Estudar compiladores é aprender a compreender, representar e transformar programas.
Síntese da aula
símbolo CEDISCEDIS
7/28

Do código-fonte à execução

Cada fase torna explícita uma dimensão do programa.

  • Forma: caracteres, tokens e estrutura
  • Significado: tipos, escopos e vínculos
  • Destino: representação intermediária e código-alvo
Fluxo visual das fases de compilação, com entradas e saídas
As representações intermediárias conectam as fases.
símbolo CEDISCEDIS
8/28
atividade

O alcance dos compiladores

Qual afirmação melhor representa a importância atual dos compiladores?

  1. Apoiam análise, transformação, otimização e geração de código.
  2. Servem apenas para converter C e Java em código de máquina.
  3. Perderam relevância com o avanço da inteligência artificial.
  4. Substituem linguagens de programação por instruções binárias.
QR Code para acesso à atividade
símbolo CEDISCEDIS
9/28

Onde esses conceitos aparecem?

DSL

Linguagens de domínio

Expressam problemas com vocabulário próximo ao domínio.

AST

Ferramentas de código

Refatoram, navegam e verificam programas.

AI

Sistemas de IA

Otimizam grafos para diferentes aceleradores.

CI

Pipelines

Analisam e transformam código continuamente.

símbolo CEDISCEDIS
10/28
Mapa radial das aplicações de conceitos de compiladores
As conexões são conceituais e tecnológicas.

Um ecossistema de transformações

O núcleo conceitual é reutilizável em diferentes produtos.

  • Analisar sem executar
  • Transformar preservando o comportamento
  • Adaptar para um domínio ou hardware
símbolo CEDISCEDIS
11/28

DSLs e metaprogramação

Linguagem de domínio específico

  • Vocabulário restrito a um problema
  • Pode ser interna ou externa
  • Exige sintaxe, interpretação ou tradução
  • Exemplo: descrição de um pipeline de dados

Código que manipula código

  • Geração automática
  • Anotações e transformações
  • Macros e reflexão
  • Diagnóstico de manutenção
símbolo CEDISCEDIS
12/28

Como uma IDE compreende o código

1

Tokeniza

Reconhece nomes, operadores e literais.

2

Estrutura

Constrói árvores e relações sintáticas.

3

Resolve

Relaciona declarações, usos, tipos e escopos.

4

Transforma

Renomeia, extrai e reorganiza com segurança.

símbolo CEDISCEDIS
13/28

Compiladores também estão na IA

Modelos podem ser capturados como grafos e especializados para o hardware.

  • Framework → grafo intermediário
  • Passes de otimização
  • Geração para CPU, GPU ou acelerador
Pipeline visual de compilação de um modelo de inteligência artificial
Exemplos atuais incluem XLA e torch.compile.
símbolo CEDISCEDIS
14/28
atividade

Código compreendido pela ferramenta

Qual situação usa diretamente conceitos relacionados a compiladores?

  1. Uma IDE constrói uma AST para realizar uma refatoração.
  2. Um servidor armazena arquivos sem analisar seu conteúdo.
  3. Um editor modifica apenas as cores de sua interface.
  4. Um cadastro registra usuários sem processar código-fonte.
QR Code para acesso à atividade
símbolo CEDISCEDIS
15/28
atividade

Compilação para IA

Por que frameworks de IA usam técnicas semelhantes às de compiladores?

  1. Para otimizar grafos computacionais para diferentes processadores.
  2. Para converter todo modelo em uma linguagem de programação.
  3. Para eliminar a necessidade de hardware especializado.
  4. Para substituir o treinamento por análise sintática.
QR Code para acesso à atividade
símbolo CEDISCEDIS
16/28

Do commit ao feedback

1

Commit

Uma alteração entra no repositório.

2

Análise

Linters e verificadores interpretam o código.

3

Build

Fontes e dependências são transformados.

4

Testes

O comportamento esperado é verificado.

5

Entrega

Artefatos aprovados seguem pelo pipeline.

Parte 2

Como aprenderemos?

Teoria, projeto e reflexão em ciclos

símbolo CEDISCEDIS
18/28

Objetivos da disciplina

  • Compreender conceitos fundamentais de construção de compiladores
  • Aplicar teoria no desenvolvimento de um produto executável
  • Analisar alternativas e justificar decisões técnicas
  • Criar soluções incrementais para um problema complexo
  • Colaborar com autonomia e responsabilidade
símbolo CEDISCEDIS
19/28
Ciclo visual da aprendizagem baseada em problemas
A reflexão conecta um incremento ao seguinte.

O ciclo PBL

Cada incremento transforma uma dificuldade real em evidência de aprendizagem.

  • Problematizar antes de implementar
  • Investigar conceitos necessários
  • Testar decisões com evidências
  • Refletir e reiniciar o ciclo
símbolo CEDISCEDIS
20/28

Uma semana, duas funções

Segunda-feira · fundamentação

  • Conceitos e modelos
  • Exemplos guiados
  • Discussão de alternativas
  • Preparação para o problema

Quarta-feira · aplicação

  • Planejamento do incremento
  • Implementação em equipe
  • Testes e integração
  • Feedback e reflexão
símbolo CEDISCEDIS
21/28
atividade

Teoria e projeto

Como teoria e prática serão integradas na disciplina?

  1. Os conceitos serão aplicados incrementalmente no projeto em equipe.
  2. O compilador será desenvolvido apenas na última semana.
  3. As práticas serão independentes dos conceitos estudados.
  4. O projeto será substituído por exercícios de memorização.
QR Code para acesso à atividade
símbolo CEDISCEDIS
22/28

Como a nota é composta

Produto, compreensão e evolução do projeto são avaliados com pesos distintos.

  • Compilador (C): peso 4
  • Entrevista final (T): peso 3
  • Pontos de controle P1 e P2: pesos 1 e 2
  • Requisitos: frequência mínima de 75% e NF ≥ 5,0
Gráfico visual com os pesos da avaliação
NF = (4C + 3T + P1 + 2P2) ÷ 10
símbolo CEDISCEDIS
23/28
atividade

Interpretando os pesos

Qual interpretação da fórmula da nota final está correta?

  1. O compilador vale 40% e a entrevista final vale 30%.
  2. P1 e P2 juntos valem mais que o compilador.
  3. Todos os componentes possuem o mesmo peso.
  4. A entrevista final possui peso maior que o compilador.
QR Code para acesso à atividade
símbolo CEDISCEDIS
24/28

Formação das equipes

5

Tamanho sugerido

Cinco estudantes, com ajuste quando necessário.

Responsabilidades

Papéis definidos, conhecimento compartilhado.

Abordagem

Escolha da linguagem-alvo ou arquitetura.

+

Diferenciais

Erros, testes, robustez ou otimizações.

símbolo CEDISCEDIS
25/28

Responsabilidades conectadas

1

Léxico

Caracteres se tornam tokens.

2

Sintaxe

Tokens formam uma AST.

3

Semântica

Tipos e escopos são verificados.

4

Código

A representação chega ao alvo.

5

Integração

Testes conectam todos os componentes.

símbolo CEDISCEDIS
26/28

Próximos passos

  • Consultar o plano de ensino e a equipe no Teams
  • Acessar o repositório da disciplina no GitHub
  • Ler o guia de projeto de um compilador
  • Organizar grupos até a próxima aula
  • Preparar o ambiente de desenvolvimento
símbolo CEDISCEDIS
27/28

Referências

  1. Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2012). Compilers: Principles, techniques, and tools (2nd ed.). Pearson.
  2. Cooper, K. D., & Torczon, L. (2022). Engineering a compiler (3rd ed.). Morgan Kaufmann.
  3. Fowler, M. (2010). Domain-specific languages. Addison-Wesley.
  4. LLVM Project. (2026). The LLVM compiler infrastructure project. https://llvm.org/
  5. OpenXLA Project. (2026). XLA: Machine learning compiler. https://openxla.org/xla
  6. PyTorch. (2026). Introduction to torch.compile. https://docs.pytorch.org/tutorials/intermediate/torch_compile_tutorial.html
símbolo CEDISCEDIS
28/28

Compilar é tornar explícito

Estrutura, significado e execução — um incremento de cada vez. Prof. Dr. Sergio Antônio Andrade de Freitas · CEDIS · UnB

→ avançar · ← voltar · deslize (touch) · n notas · f tela cheia · p imprimir