| | | corso | | | | |
Principi dei linguaggi di Programmazione
Codice: | 379AA | Crediti: | 12 | Semestre: | 1-2 | Sigla: | PLP | |
|
Settore disciplinare: | INF/01 - Informatica |
Ultima versione disponibile: programma da confermare per l’a.a. 2009/2010
Obiettivi di apprendimento
Il corso si propone l'obiettivo di presentare i prinicipi e le tecniche per la realizzazione di linguaggi di
programmazione. Il corso consiste di due moduli.
Moduli:
Tecniche di compilazione
Docente
Marco Bellia
Tel. 0502212781Ultima versione disponibile: programma da confermare per l’a.a. 2009/2010
Paradigmi di programmazione
Docente
Giorgio Levi
Tel. 0502212700Prerequisiti
Semantica operazionale
Principi generale di implementazione di linguaggi
Un linguaggio funzionale tipato
Obiettivi di apprendimento
Approfondire le conoscenze di semantica, di paradigmi di programmazione e di tecniche di analisi
Conoscenze.
Conoscenze di base
Capacità.
Capacità professionali
Comportamenti.
Comportamenti etici
Descrizione
Il corso copre alcune tematiche avanzate di linguaggi di programmazione e tecniche basate sulla semantica. Viene completata la descrizione dei vari paradigmi con la programmazione logica e la sua variante con vincoli. Per quanto riguarda la semantica, viene introdotta la semantica denotazionale di un linguaggio funzionale. Tale semantica viene poi raffinata fino ad arrivare ad un interprete dettagliato. Semantica denotazionale ed interprete verranno poi usati negli esempi di inferenza di tipi e generazione del codice. Vengono infine introdotte due tecniche per l’analisi statica, i sistemi di tipo e l”interpretazione astratta.
English Description
The course covers a few advanced topics in programming languages and semantics based techniques. The description of the various programming paradigms is compled with logic programming and constraint logic programming. The denotational semantics is introduced in the case of a functional language. The semantics is then refined to a detailed interpreter implementation. The semantica and the interpreter are used in the examples of type inference and compiled code generation. Finally the main static analysis techniques are described, i.e. type systema and abstract interpretation.
Programma
Teoria dell’Unificazione.
Dalla semantica denotazionale all’interprete di un linguaggio funzionale.
Programmazione logica e programmazione logica con vincoli.
Sistemi di tipo.
Teoria dell’interpretazione astratta e sua utilizzazione per l’analisi statica.
Un interprete astratto per l’inferenza dei tipi del linguaggio funzionale.
Valutazione parziale e specializzazionedi interpreti. Generazione automatica del codice compilato per il linguaggio funzionale.
Ore lezione: | 25 | Ore esercitazione: | 15 | | | |
Bibliografia
Lassez, Maher, Marriott, Unification revisited. In "Foundations of functional and logic programming" (Boscarol, Carlucci Aiello & Levi, Eds.), LNCS, Springer 1987
Winskell, The formal semantics of programming languages, MIT Press 1993
Lloyd, Foundations of Logic Programming, Springer 1984
Cardelli, Type systems, Handbook of Computer Science and Engineering, 2nd edition, Capitolo 97, CRC Press 2004
Nielson, Nielson & Hankin, Principles of Program Analysis, Springer 1999