| | | corso | | | |
Linguaggi di Programmazione: Classificazione e Macchine Astratte D
(Corso di Diploma in Informatica)
Codice: | 5I017 | Crediti: | 6 | Semestre: | 1 | Sigla: | LCM | |
Docente
Gianluigi Ferrari
Tel. 0502212766Prerequisiti
Obiettivi di apprendimento
Lo scopo del corso \`e quello di analizzare i principi ed i
meccanismi che stanno alla base del progetto, della realizzazione
e dell'uso dei linguaggi di programmazione.
Il corso intende sviluppare una capacità critica che permetta di
valutare
l'adeguatezza di un paradigma di programmazione, e quindi di
un linguaggio di programmazione, per la soluzione
di uno specifico problema applicativo.
Descrizione
Durante il corso si esamineranno i principali
paradigmi di programmazione, e le loro tecniche di realizzazione.
Il corso prevede una attivit\`a di laboratorio in cui verranno
sperimentale alcune tecniche di realizzazione dei linguaggi di
programmazione.
English Description
Unlike courses that teach a specific programming language, this is a
course
about programming languages.
The course addresses the following questions:
- What are good ways to express programming paradigms?
- How does one precisely describe and implement the various features of
programming
languages?
Programma
- Linguaggi di Programmazione: paradigmi Linguistici,
- Linguaggi di Programmazione e Macchine astratte,
- La struttura di un compilatore (cenni),
- Introduzione alla programmazione in Java,
- La semantica formale come meccanismo
per la descrizione dei linguaggi di programmazione,
- Il controllo statico dei tipi,
- La struttura del sistema a tempo di esecuzione: record di attivazione
e
meccanismi per la gestione dell'ambiente (scoping statico e scoping
dinamico)
- Il passaggio dei parametri,
- La gestione della memoria: algoritmi di garbage collection.
- I linguaggi orientati ad oggetti: Classi e Oggetti,
- La struttura del ssitema a tempo di esecuzione di linguaggi orientati
ad oggetti,
- I Linguaggi Concorrenti (cenni)
Ore lezione: | 25 | Ore esercitazione: | 15 | | | |
Bibliografia
T. Pratt, M. Zelkowitz
Programming Languages: Design and Implementation.
Prentice Hall, 1996.
A. Aho, R. Sethi, J. Ulmann, Compilers: Principles,
Techniques and Tools. Addison Wesley, 1994 (Capitoli 1 e 2).
Plotkin, G.
A Structural Approach to Operational Semantics, DAIMI Report FN-19,
Dept. of Computer Science, Aarhus, 1981.
Materiale Didattico On-line:
http://www.di.unipi.it/~giangi/CORSI/LCM/mdid.html
Modalità di esame
L'esame consiste di un progetto di programmazione e di una prova orale