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.
| 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 |
“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:
| Á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: