Objectivo
A disciplina tem como objectivo fornecer aos alunos um conhecimento sólido na área de concepção e implementação das linguagens de programação, efectuando um estudo sistemático dos conceito sintácticos, semânticos e pragmáticos fundamentais subjacentes, que são centrais na ciência e na Engenharia Informática.
Os alunos adquirem ao longo de um semestre, a capacidade de analisar de forma objectiva as linguagens de programação, de compreender e saber utilizar as técnicas básicas de implementação de linguagens de programação, incluindo interpretadores, máquinas virtuais, e compiladores. Os alunos desenvolvem uma capacidade acrescida de aprender novas linguagens de programação de forma mais madura, assim como uma acrescida capacidade de concepção e desenvolvimento de software.
Tópicos
O estudo da semântica das linguagens será baseado essencialmente em técnicas operacionais, envolvendo o estudo de técnicas de interpretação e compilação dirigidas pela sintaxe, sendo cobertos os mecanismos em que se baseam a maior parte das linguagens funcionais, imperativas e centradas em objectos, incluindo os respectivos sistemas de tipos. Sempre que possível, ilustrar-se-ão os conceitos com exemplos retirados de linguagens de programação existentes (C, Java, C#, C++, ML, etc) ou “extintas” (Algol, Simula).
Esta disciplina ensina os princípios, técnicas e ferramentas envolvidos na construção e validação de sistemas de software de alta tecnologia, de forma aplicada às plataformas de suporte à execução standard de indústria (Java, .NET, C, C#). O foco é em temas de programação avançada, linguagens de programação por objectos e componentes, ferramentas de validação e detecção de erros em software. As competências transmitidas nesta cadeira são indispensáveis aos alunos com vocação para actividades de desenvolvimento e liderança de desenvolvimento de software de alta tecnologia.
Links
Documentário sobre E. W. Dijkstra