Faculdade de Ciências e Tecnologia

Interpretação e Compilação

Código

11160

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

Luís Manuel Marques da Costa Caires

Horas semanais

4

Total de horas

136

Língua de ensino

Português

Objectivos

Esta unidade curricular tem o objectivo de transmitir conhecimentos sólidos na concepção e implementação de linguagens de programação, através do estudo de conceitos sintácticos, semânticos e pragmáticos fundamentais. 

Saber

1.Conhecer a arquitetura e técnicas usadas no desenho de interpretadores, compiladores e sistemas de tipos

2.Conhecer os elementos base das linguagens de programação e a sua semântica

3.Definir linguagens de programação por composição de elementos fundamentais

Fazer

4.Representar e manipular a sintaxe abstracta de uma linguagem como dados de um programa transformador

5.Descrever a semântica de linguagens através de interpretadores, compiladores e verificadores de tipos

6.Conceber e implementar compiladores para uma máquina virtual industrial

Soft-Skills

7.Raciocinar sobre sistemas complexos a vários níveis de abstração

8.Propor e concretizar soluções gerais com base em princípios

Pré-requisitos

Gosto pela construção de software, criatividade e bom aproveitamento em UCs como AED, LAP.

Conteúdo

A.Princípios

1.Sintaxe das Linguagens de Programação

2.Semântica das Linguagens de Programação

3.Níveis de Interpretação (Interpretação, compilação e sistemas de tipos)

B.Interpretação e Compilação de Programas

1.Valores e Expressões: Definições e Ambiente

2.Estado e Referências: Modelo ambiente-memória

3.Abstração funcional: funções de primeira classe e ordem superior

4.Definições recursivas e ambientes circulares

5.Valores estruturados: registos e valores recursivos

6.Objetos e classes: representação de objetos usando registos e fechos

C.Sistemas de Tipos

1.Princípios, objectivos e limitações da análise estática

2.Sistemas de tipos simples

3.Algoritmos de verificação e inferência de tipos

D.Compilação de Programas

1.Arquitetura de um compilador

2.Ambientes de suporte à execução (máquinas de registos, pilha de avaliação, pilha de chamada)

3.Tradução de código dirigida pela sintaxe

4.Geração de código para uma máquina virtual industrial (CLR,Java Virtual Machine)

Bibliografia

- “Concepts in Programming Languages”, John C. Mitchell, Cambridge University Press. ISBN 0 521 78098 5

- “Essentials of Programming Languages”, Daniel Friedman, Mitchell Wand, Christopher Haynes, MIT Press.

- “Modern Compiler Implementation in Java” Andrew W. Appel, Cambridge University Press

- “The Study of Programming Languages”, Ryan Stansifer, Prentice Hall International Edition.

Método de avaliação

A avaliação decompõe-se em dois mini testes contribuindo cada um 30% para a nota final, o primeiro focado em aspectos básicos de interpretação de linguagens, e o segundo, na verificação através de sistemas de tipos e compilação. O restante da nota final (40%) é obtida através do desenvolvimento de um projeto de construção pragmática de um interpretador, compilador e sistema de tipos para uma linguagem dada. Os alunos que não obtiverem aprovação na avaliação contínua terão que fazer o exame,  que valeraá 60%.

O projecto decorre ao longo das aulas práticas, é muito gradual, e consiste na construção de um interpretador, compilador para uma linguagem de programação, que pode ser usada para construir software real.

Os testes decorrem nas aulas práticas. O pimeiro teste será na semana de 13 de Outubro.

Cursos