Università
di Pisa
A.A. 2007-08-09-10-11
docente: prof. Marco Bellia
Strutture: lucidi e materiale in questa
pagina
Object-Oriente: B. Liskov (with J.
Guttag), Program Development in Java: Abstraction, Specification and
Object-Oriented design, Addison-Wesley, 2000
Strutture: M. Gabbrielli and S.
Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill, 2006
AVVISO: Appello III in programma per il giorno 11.6.2010 è stato spostato a Mercoledì 16.6.2010 Aula C ora 15.00. Nella stessa aula e con stesso orario si svolgerà la prova scritta dell'appello III di programmazione II B e la prova scritta dell'appello straordinario di Metodologie di Programmazione,
calendario
compitini:
settembre
21 |
|
settembre
23 |
macchine astratte, compilazione, interpretazione e run-time support |
settembre
29 |
macchine
astratte: relazione tra sintassi, semantica, esecutore (vedi sopra) + esercizio&soluzione |
ottobre
1 |
Semantica
Operazionale: Sintassi Astratta, Domini Sintattici, Domini Semantici in un
Linguaggio Imperativo |
ottobre
6 |
Semantica Operazionale: Funzioni
semantiche per un Linguaggio Imperativo + esercizio |
ottobre
8 |
Ocaml-1 : Un linguaggio per
specifica e semantica eseguibile + esercizi
- Files allegati: Domini
Sintattici Domini Semantici
Funzioni Semantiche |
ottobre
13 |
Ocaml-2 : il nucleo imperativo,
moduli e classi + esercizi:
Moduli - Soluz. 1 2 3 Dati-1: descrittori, tipi, sistemi
di tipi, tipi statici e dinamici. |
ottobre
15 |
Dati-1:
Sintassi (astratta - specifica), Semantica (algebrica), Implementazione. + esercizi: Implementazione
di Pila non modificabile - Soluzione |
ottobre 20 |
Dati-2: Sintassi (astratta -
specifica), Semantica (algebrica), Implementazione: Liste e Heap |
ottobre 22 |
Dati-3: Strutture modificabili:
Sintassi (astratta - specifica), Semantica (algebrica), Implementazione.
S-espressioni |
ottobre 27 |
Strutture di controllo . Parte1:
Controllo nella valutazione di espressioni - Semantica: domini sintattici e
semantici di un linguaggio di espressioni pure. Dalla semantica alla
realizzazione di un interprete iterativo: Operazioni primitive |
ottobre 29 |
Strutture di controllo. Parte2: Dalla
semantica alla realizzazione di un interprete iterativo: le strutture del Run
Time Support - Stack continuazioni e Stack operandi - il ciclo di
interpretazione |
novembre 3 |
interruzione
prove intermededie corsi semestralizzati |
novembre 5 |
Strutture
di controllo. Parte3: Controllo di sequenza e comandi - Semantica: domini
sintattici e semantici di un linguaggio Imperativo con espressioni pure.
Estendiamo l'interprete funzionale: Le nuove strutture del Run Time Support -
Continuazioni e Store - Il ciclo di interpretazione. |
novembre 10 |
Programmazione in Java - dott. Michele Albano |
novembre 12 |
Blocchi, Ambienti globali, locali, non
locali. Parte2. Linguaggio funzionale puro: Interprete. Blochi in
linguaggi imperativi: Let e blocchi - sintassi e semantica operazionale. Le
strutture dell'interprete: record di attivazione - envstack, cstack,
tempvalstack, tempdvalstack, storestack, labelstack. Le procedure
dell'interprete: loop, itsem, itsemden, itsemcl, itsemdecl . |
novembre 17 |
Programmazione in Java - dott. Michele Albano |
novembre 19 |
Programmazione in Java - dott. Michele Albano |
novembre 24 |
Programmazione in Java - dott. Michele Albano |
novembre 26 |
Programmazione in Java - dott. Michele Albano |
dicembre 1 |
Funzioni, Funzioni ricorsive,
parametri: Semantica operazionale con scoping statico, e con scoping
dinamico. Funzioni definite ricorsione: Estensioni della semantica.
Interprete. |
dicembre 3 |
Funzioni, Funzioni ricorsive,
parametri: Interprete per
scoping dinamico. Regole di scoping: confronti (storia e vantaggi dei due).
Linguaggi che non richiedono regole di scoping: Java |
dicembre 5 |
Programmazione in Java - dott. Michele Albano |
dicembre 10 |
Programmazione in Java - dott. Michele Albano |
dicembre 15 |
Programmazione in Java - dott. Michele Albano |
dicembre 18 |
Aula
E: prima prova intermedia a.a. 2009-10 - (template.pdf con la struttura di un
record di attivazione*) |
febbraio 22 |
Procedure, Procedure e Funzioni
mutuamente ricorsive, parametri:
Strutture e domini sintattici. Regole di Scoping. Domini semantici. Semantica
Operazionale (lucidi) |
febbraio 23 |
Procedure, Procedure e Funzioni
mutuamente ricorsive, parametri:
Interprete e strutture RTS. Un
linguaggio Imperativo, il suo interprete, un esempio di programma e la sua
esecuzione.zip |
marzo 1 |
Oggetti e Classi: Oggetti come ambienti permanenti
(ambiente locale statico) ad accesso multiplo. Classi, costruttori e parametri per
la creazione (inizializzazione) di istanze diverse. Oggetti, self reference e
definizioni mutuamente ricorsive. Oggetti, tipi astratti e definizioni di
strutture dati dinamiche. Ereditarietà. Relazioni con Java: analogie e
differenze. Struttura di un linguaggio Object Oriented. La sintassi e i suoi
domini. I domini semantici: La memoria Heap e le sue locazioni Pointer, Il
dominio dei valori e i valori Obj e Class. Lucidi (1-16) |
marzo 2 |
Oggetti e Classi - Struttura di un linguaggio
Object Oriented: Funzioni ausiliarie per la
costruzioni dei valori di Class e e la loro applicazione per il calcolo di
valori Obj. Semantica Operazionale: Estendiamo la funzione Sem con le nuove
espressioni (new, this e Field), Modifichiamo le funzioni Semb e Semdl. Lucidi (17-24) |
marzo 8 |
Oggetti e Classi - Struttura di un linguaggio
Object Oriented: Un esempio con ereditarietà.
Eliminazione della ricorsione (Lucidi
25-28) - facoltativo: estendiamo l'interprete (29-36). Esercizio:
Implementazione delle funzioni semantiche e Applicazione all'esecuzione di un
programma. .zip |
marzo 15 |
Trasmissione dei parametri: Altre tecniche: passaggio per nome -
Semantica Operazionale (domini e funzioni semantiche). Trasmissione in Lisp:
tecnica del Funarg e Chiusure (funzionali). Passaggio per Valore: ruolo della
memoria e update locazione valore memorizzabile. Una (differente) Semantica
Operazionale nella trasmissione per valore (domini e funzioni semantiche). Trasmissione
Value-Result. Lucidi (13-23) |
marzo 22 |
Ambienti Rivisitati: Tecniche
di implementazione a catena di ambienti locali. Catena statica e catena
dinamica. Valori funzionale e Retention di ambienti. Una struttura a cinque
componenti <namestack,evalstack,tagstack,slinkstack,currentenv> per
l'ambiente e implementazione delle operazioni applyenv, bind e bindlist.
Modifiche sull'interprete iterativo (linguaggio funzionale). Lucidi (1-18) |
aprile 13 |
Esercizi: Ambiente
statico e Ambiente dinamico. Scoping statico e Scoping dinamico. Java:
Ambiente statico e scoping statico. Lisp: Ambiente dinamico e scoping
dinamico. Haskell, OCaml: Ambiente dinamico, scoping statico. |
aprile 19 |
Metodologie di Programmazione - Astrazioni: Generalizzazione e Trasparenza. Le diverse forme di astrazione presenti in Java. Astrazioni procedurali in Java: Specifica e implementazione. Dalla Specifica all'implementazione attraverso la metodologia D&A (decomponi e astrai). Specifica in Java: Overview per classi e Header+Requires+Modifies+Effects per metodi. Lucidi |
aprile 26 |
Metodologie di Programmazione: Definizione di nuovi tipi di dati. Dati strutturati e non. Dati concreti e Astrazioni di dato. Records in Java: Il tipo cocreto coppia e il tipo astratto coppia Lucidi (1-9) |
maggio 3 |
Metodologie di Programmazione: Astrazioni di dati. Specifica, presentazione, rappresentazione e implementazione. Una metodologia. La funzioni AF e l'invariante I. Esempi: IntSet, PolyInt, IntStack. IntSet: tre stai concreti per rappresentare e le funzioni AF ed I corrispondenti. Derivare l'implementazione dalla specifica, e dalla scelta dello stato di rappresentazione. Lucidi (10-22) |
maggio 10 |
Metodologie di Programmazione: Astrazioni di dati. Ragionare sulle astrazioni di dati e provare I, provare AF, metodi additionals equals, clone e toString per valori mutable e per valori immutable. Benevolent side effects. Lucidi (22-33) |
maggio 17 |
Metodologie di Programmazione:
Esercizio StringIntFun
|
maggio 25 |
Aula
A,E (ore 14:00): seconda prova intermedia a.a. 2009-10 (template2.pdf con la struttura di un
record di attivazione e ambiente con retention*) |
* è
possibile fare uso dei templates in luogo dei fogli protocollo. In questo caso
consiglio di presentarsi con almeno 6/7 copie della pagina scaricata.
verifica1
|
Testo
|
esito
|
Soluzione (ex1-2)
|
verifica2
|
|
esito
|
|
appello III: testo esito - Orali (iscrizione non richiesta) prima data utile: giovedì ore 15.30 in aula Seminari Ovest (Dipartimento)
appello V: testo esito - Orali (iscrizione richiesta) vedi esito
appello VI: testo esito