| | | corso | | | |
Linguaggi
Codice: | AA029 | Crediti: | 6 | Semestre: | 1 | Sigla: | LIN | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Giorgio Levi
Tel. 0502212700Prerequisiti
Nessuno
Obiettivi di apprendimento
Analizzare i principi ed i meccanismi che stanno alla base del
progetto, della realizzazione e dell'uso dei linguaggi di
programmazione. Esaminare i principali paradigmi di programmazione e
le loro tecniche di realizzazione. Sviluppare una capacità critica
che permetta di valutare l'adeguatezza di un paradigma (e di un
linguaggio) per la soluzione di uno specifico problema applicativo.
Descrizione
Si introdurranno i costrutti principali dei linguaggi imperativi,
funzionali e orientati ad oggetti e si svilupperanno varie
implementazioni (interpretative e compilative) per raffinamenti
successivi (usando metodi formali quali la trasformazione di
ricorsione in iterazione, l'eliminazione dell'ordine superiore,
l'interpretazione astratta e la valutazione parziale) a partire da
una semantica formale espressa nel linguaggio ML.
English Description
Functional, imperative and object-oriented languages. Development of
various implementations (interpreters, translators) as refinements
of an executable specification of the denotational semantics (in
ML). Refinements are based on formal methods, including abstract
interpretation and partial evaluation.
Programma
- Macchine astratte, linguaggi, interpretazione e compilazione (2 ore).
- Richiami di semantica, ML come metalinguaggio (3 ore).
- Tipi di dato, tipi e controllo dei tipi (4 ore).
- Controllo di sequenza, procedure, ricorsione (5 ore).
- Ambiente, scoping, parametri, moduli, classi (6 ore).
- Analisi statica (3 ore).
- Gestione della memoria (1 ora).
- Specializzazione, traduzione e strutture a run time (2 ore).
Bibliografia
T.W. Pratt & M.V. Zelkowitz, Programming languages. Design and
implementation. Prentice-Hall 1996.
Modalità di esame
Scritto e orale