Linguagens de Programação e Compiladores

Código:
14460
Ano:
1
Semestre:
S1
Créditos ECTS:
6
Carga Horária:
PL(30H)/T(30H)
Área Científica:
Informática
Objectivos de Aprendizagem:
• Compreender a contribuição dos compiladores para a fiabilidade dos sistemas de software;
• Compreender os diferentes aspectos das linguagens de programação através da sua compilação;
• Compreender os mecanismos subjacentes à compilação: a tradução de uma linguagem para outra, a sua otimização e a funcionalidade das diferentes fases;
• Compreender a relação entre linguagem de alto nível, representação intermédia, análises e optimizações;
• Compreender o processo de geração de código para arquitecturas de computadores modernas, incluindo máquinas virtuais;
• Implementar um compilador para uma linguagem de programação realista ou extender uma já existente;
• Selecionar ferramentas modernas para implementar partes de compiladores e interpretar a sua funcionalidade; e
• Comunicar os resultados obtidos de forma clara e precisa, utilizando um relatório técnico.
Conteúdos programáticos:
A. Programação Assembly RISC-V
B. Sintaxe abstracta, semântica e interpretadores
C. Análise lexical e sintáctica
D. Tipagem
E. Estratégias de avaliação e passagem de parâmetros
F. Compiladores de linguagens funcionais e orientadas a objectos
G. Optimização do compilador
H. Alocação de memória
Bibliografia principal:
Alfred V. Aho, Monica S. Lam, Ravi Sethi et Jeffrey D. Ullman. Modern Compilers: Principles, Techniques, and Tools.
Benjamin C. Pierce. Types and Programming Languages.
Randal E. Bryant et David R. O'Hallaron. Computer Systems: A Programmer's Perspective.
Língua:
Português