elenco    
        corso    

Principi dei linguaggi di Programmazione

Codice: 379AACrediti: 12Semestre: 1-2Sigla: 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   bellia@di.unipi.it  Stanza 330  Tel. 0502212781

Ultima versione disponibile: programma da confermare per l’a.a. 2009/2010
     


Paradigmi di programmazione

Docente

Giorgio Levi   levi@di.unipi.it  Tel. 0502212700

Prerequisiti

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: 25Ore 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


home


email