Por Professor Pedro Ângelo
No dia 27 de outubro, às 14h30, na sala FC6 0.28, Pedro Ângelo dará uma palestra intitulada "Metaprogramação: fundamentos e aplicações".
Título:
Metaprogramação: fundamentos e aplicações
Resumo:
Metaprogramming is the ability to write programs that generate, execute, manipulate and inspect other programs. In languages that support it, programs (usually referred to as code) are treated as first-class citizens. However, metaprogramming comes in many flavours, and each language supports a different combination of these capabilities. These differences lead to very different guarantees about code: some approaches ensure that generated code is well-typed, while others do not; some restrict code to two stages (execution both at compile time and run time), while others allow arbitrarily many.
In this talk, we will introduce metaprogramming and its core concepts, and tour a selection of languages that support it, using example programs to highlight their differences. We will then look at the logical foundations of typed metaprogramming, rooted in modal logic. Finally, we will extend the definition of metaprogramming to include the transmission of programs, and show how this can be achieved by combining metaprogramming with session types.
Bio:
Pedro Ângelo é Professor Auxiliar na Faculdade de Ciências da Universidade do Porto e investigador integrado do Laboratório de Inteligência Artificial e Ciência de Computadores (LIACC) desde fevereiro de 2026. Concluiu o mestrado integrado em Engenharia de Redes e Sistemas Informáticos em 2017 e o doutoramento em Ciência de Computadores em 2024, ambos na FCUP. Entre fevereiro de 2024 e fevereiro de 2026 foi Professor Auxiliar Convidado na Faculdade de Ciências da Universidade de Lisboa.
Durante o doutoramento, estudou sistemas de tipos graduais (gradual typing) e de interseção (intersection types), e a forma como ambas as técnicas podem ser combinadas numa única linguagem de programação. Desde então, a sua investigação tem-se centrado em sistemas de tipos subestruturais, em particular lineares, e na sua aplicação a tipos de sessão binários, bem como em sistemas de tipos para linguagens com metaprogramação. Os seus interesses incluem ainda compilação Just-in-Time, a especificação formal de protocolos de rede (por exemplo, com tipos de sessão) e protocolos criptográficos e a sua interação com comunicação e concorrência.
