Descrição:
Dominar técnicas avançadas de programação e os problemas adequados para a sua aplicação. Compreender e saber colmatar as limitações das actuais linguagens de programação. Antecipar o impacto da utilização de técnicas avançadas no funcionamento, facilidade de desenvolvimento e facilidade de manutenção de um programa. Compreender a capacidade de reflexão das linguagens de programação nas vertentes de introspecção e intercessão e nos tempos de compilação, carregamento, e execução. Compreender a diferença entre programação e meta-programação. Compreender meta-classes, protocolos de meta-objecto, e as suas capacidades de intercessão. Compreender a programação orientada a aspectos e a sua aplicação a requisitos transversais. Compreender a abstracção linguística, os avaliadores, e os avaliadores meta-circulares. Ser capaz de dotar avaliadores de mecanismos de meta-programação, de avaliação atrasada, e de avaliação não-determinística.