Implementação de Linguagens
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciência de Computadores |
Ocorrência: 2019/2020 - 2S 
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
Fornecer aos estudantes fundamentos teóricos e técnicas práticas de implementação de linguagens de programação declarativas.
Resultados de aprendizagem e competências
Os estudantes deverão adquirir as seguintes competências: compreender os princípios utilizados para a implementação de linguagens funcionais (como ML ou Haskell) e lógicas (como Prolog) em arquitecturas convencionais, os problemas tecnológicos associados ao seu desenvolvimento e as soluções existentes.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Pré-requisitos: conhecimentos elementares de programação funcional e lógica; conhecimentos de programação de baixo-nível (e.g. linguagem C).
Programa
Implementação de linguagens funcionais: definição de uma linguagem funcional mínima baseada no cálculo-lambda. Semântica estrita vs. não estrita. Estratégias de redução call-by-value e call-by-name. Implementação de funções de ordem superior usando "closures". A máquina abstracta SECD. Estratégia call-by-need e redução de grafos. A máquina abstracta STG. Utilização da linguagem Haskell como meta-linguagem para especificar interpretadores e compiladores da uma linguagem funcional mínima.
Implementação de linguagens lógicas: pequena revisão da resolução SLD e da linguagem Prolog. Arquitectura da máquina WAM (usada na implementação de Prolog): compilação, unificação, pilhas de execução, ambientes, pontos de escolha, backtracking e indexação. Tabulação em programação lógica: modelo básico de execução, representação e organização da tabela, suspensão/recuperação da computação, compilação de predicados tabelados.
Bibliografia Obrigatória
Ait-Kaci Hassan;
Warren.s abstract machine. ISBN: 0-262-01123-9
S.L. Peyton Jones;
The implementation of functional programming languages. ISBN: 0-13-453325-9
S.L. Peyton Jones;
Implementing functional languages. ISBN: 0-13-721952-0
Métodos de ensino e atividades de aprendizagem
Aulas de exposição, discussão e resolução de exercícios ilustrativos dos conceitos fundamentais da teoria e prática do desenho e implementação de linguagens.
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
60,00 |
Trabalho laboratorial |
40,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
84,00 |
Frequência das aulas |
42,00 |
Trabalho laboratorial |
36,00 |
Total: |
162,00 |
Obtenção de frequência
N/A
Fórmula de cálculo da classificação final
A avaliação dos alunos faz-se por realização de 2 trabalhos práticos e de um exame escrito.
Cada trabalho prático terá um peso total de 4 em 20 valores na classificação final da disciplina e o exame final escrito terá um peso de 12 em 20 valores na classificação final da disciplina. A classificação mínima no exame é de 40%.
As regras acima aplicam-se igualmente para melhoria de classificação e avaliações especiais.
Avaliação especial (TE, DA, ...)
Aplicam-se as mesmas regras de cálculo da classificação final.
Melhoria de classificação
Aplicam-se as mesmas regras de cálculo da classificação final.