Bem-vindo(a) à Disciplina de Compiladores!

Olá a todos! Sejam muito bem-vindos à disciplina de Compiladores. Preparem-se para uma jornada fascinante onde vamos desvendar a "mágica" por trás de como nossos códigos são transformados em programas que o computador pode executar.

Ementa:


📋 ROTEIRO DA AULA

Tempo Tópico
0:00 - 0:15 Motivação: por que estudar compiladores?
0:15 - 0:35 Visão geral de compiladores (front/middle/back)
0:35 - 0:55 Interpretadores, máquinas virtuais e IR stack‑based
0:55 - 1:15 Roteiro do curso: abordagem top‑down (Jack → VM → Assembly → Assembler)
1:15 - 1:30 O que vamos implementar e próximos passos

🎯 1. Motivação: Por que estudar compiladores? (15 min)

1.1 Compiladores como exercício de engenharia de software

“Um compilador é um exercício substancial em engenharia de software. Um bom compilador contém um microcosmo da ciência da computação.”

Pontos-chave:

1.2 Microcosmo da Ciência da Computação

Área Técnica Exemplo no compilador
Algoritmos gulosos Escolhas locais ótimas Alocação de registradores
Busca heurística Aproximações Agendamento de instruções
Teoria de linguagens Autômatos finitos, pilha Scanner e parser
Grafos Análises de fluxo Eliminação de código morto
Programação dinâmica Reuso de subsoluções Seleção de instruções
Análise de programas Algoritmos de ponto fixo Análise de fluxo de dados

Segundo Cooper Keith,

"Compiladores são programas grandes e complexos, e geralmente incluem centenas de milhares, ou mesmo milhões, de linhas de código, organizadas em múltiplos subsistemas e componentes. As várias partes de um compilador interagem de maneira complexa. Decisões de projeto tomadas para uma parte do compilador têm ramificações importantes para as outras. Assim, o projeto e a implementação de um compilador é um exercício substancial em engenharia de software".

Mensagem para a turma: