Docenti
Acquisire una solida base di conoscenze generali permette di muoversi con una certa disinvoltura tra i vari linguaggi di programmazione e permette di apprendere in maniera rapida ed efficace nuovi linguaggi. La conoscenza degli aspetti implementativi permette di avere un stima del costo di esecuzione dei diversi costrutti di un linguaggio, e quindi fornisce le informazioni base per la scritture di codice efficiente.
Nel corso particolare risalto viene dato al paradigma di programmazione funzionale per le sue caratteristiche di pulizia ed espressività. Viene presentato il linguaggio funzionale Haskell e si mostra quindi come meccanismi quali high-order e non-determinismo possano essere sfruttate per scrivere codice compatto, elegante e flessibile (riutilizzabile).
Descrivere un linguaggio di programmazione: sintassi, semantica, pragmatica.
Analisi lessicale. Analisi sintattica. Generatori di analizzatori, lessicali e sintattici: Lex, Alex, Yacc, Happy.
I nomi e l’ambiente.
La gestione della memoria.
Strutturare il controllo.
Astrarre sul controllo: procedure e funzioni.
Strutturare i dati: i tipi di dati nei linguaggi di programmazione.
Paradigma orientato agli oggetti
Paradigma funzionale.
Introduzione alla programmazione funzionale. Il linguaggio Haskell.
Sistemi di assegnazione di tipo, descrizione formale.
Programmazione concorrente.
[HPF] P. Hudak, J. Peterson, J. Fasel. A gentle introduction to Haskell’98. Disponibile in rete.
[Car] Cardelli (2004). “Type systems”. In Allen B. Tucker. CRC Handbook of Computer Science and Engineering(PDF) (2nd ed.). CRC Press. ISBN 158488360X.
[Al] Alex user guide. C. Dornan, I. Jones, S. Marlow Disponibile in rete.
[Ha] Happy user guide. S. Marlow, A. Gill Disponibile in rete.
Università degli Studi di Udine
Dipartimento di Scienze Matematiche, Informatiche e Fisiche (DMIF)
via delle Scienze 206, 33100 Udine, Italy
Tel: +39 0432 558400
Fax: +39 0432 558499
PEC: dmif@postacert.uniud.it
p.iva 01071600306 | c.f. 80014550307
30 km from Slovenia border
80 km from Austria border
120 km from Croatia border
160 km South West of Klagenfurt (Austria)
160 km West of Lubiana (Slovenia)
120 km North East of Venezia (Italy)