1 Macchine astratte
La nozione di macchina astratta e l’interprete, Interprete, Un esempio di macchina astratta: la macchina hardware, Implementazione di un linguaggio, Realizzazione di una macchina astratta, Implementazione: il caso ideale,Implementazione: il caso reale e la macchina intermedia, Gerarchie di macchine astratte
2 Descrivere un linguaggio di programmazione
Livelli di descrizione, Grammatica e sintassi, Vincoli sintattici contestuali, Compilatori, Semantica, Pragmatica, Implementazione
3 Fondamenti
Il problema della fermata, Espressivita' dei linguaggi di programmazione, Formalismi per la calcolabilita', Funzioni e algoritmi
4 I nomi e l’ambiente
Nomi e oggetti denotabili, Oggetti denotabili, Ambiente e blocchi, I blocchi, Tipi di ambiente, Operazioni sull’ambiente, Regole di scope, Scope statico, Scope dinamico, Problemi di scope
5 La gestione della memoria
Tecniche di gestione della memoria, Gestione statica della memoria, Gestione dinamica mediante pila, Record di attivazione per i blocchi in-line, Record di attivazione per le procedure, Gestione della pila, Gestione dinamica mediante heap, Blocchi di dimensione fissa, Blocchi di dimensione variabile, Implementazione delle regole di scope, Scope statico: la catena statica, il display, Scope dinamico: lista di associazioni e CRT
6 Strutturare il controllo
Le espressioni, Sintassi e Semantica delle espressioni, Valutazione delle espressioni, La nozione di comando, La variabile, L’assegnamento, Comandi per il controllo di sequenza, Comandi per il controllo di sequenza esplicito, Comandi condizionali, Comandi iterativi, Programmazione strutturata, La ricorsione, La ricorsione in coda, Ricorsione e iterazione
7 Astrarre sul controllo
Sottoprogrammi, Astrazione funzionale, Passaggio dei parametri, Funzioni di ordine superiore, Funzioni come parametro, Funzioni come risultato, Eccezioni, Implementare le eccezioni
8 Strutturare i dati
Tipi di dato, Tipi come supporto all’organizzazione concettuale, Tipi per la correttezza, Tipi e implementazione, Sistemi di tipi, Controlli statici e dinamici, Tipi scalari, Booleani, Caratteri, Interi, Reali, Virgola fissa, Complessi, Void, Enumerazioni, Intervalli, Tipi ordinali, Tipi composti, Record, Record varianti e unioni, Array, Insiemi, Puntatori, Tipi ricorsivi, Funzioni, Equivalenza: per nome, strutturale, Compatibilita' e conversione, Polimorfismo, Overloading, Polimorfismo universale parametrico, Polimorfismo universale di sottotipo, Cenni sull’implementazione, Controllo e inferenza di tipo, Sicurezza: Evitare i dangling reference: Tombstone, Lucchetti e chiavi, Garbage collection: Contatori dei riferimenti, Mark and sweep, rovesciare i puntatori, Mark and compact, Copia
9 Astrarre sui dati
Tipi di dato astratti, Nascondere l’informazione, Indipendenza dalla rappresentazione, Moduli
10 Cenni sui linguaggi di programmazione in altri paradigmi di programmazione (dichiarativo, logico, funzionale)
...continua