LINGUAGGI DI PROGRAMMAZIONE
Pietro Di Gianantonio
OBIETTIVI FORMATIVI
Acquiring a solid base of general knowledge allows to move with a certain ease between the various programming languages and allows to learn new languages quickly and effectively. The knowledge of the implementation aspects allows to have an estimate of the cost of execution of the different programming language constructors and therefore provides the basic information for the efficient code writing.
In the particular course emphasis is given to the functional programming paradigm for its cleaning and expressiveness features. The Haskell functional language is presented and it is then shown how mechanisms such as high-order and non-determinism can be exploited to write compact, elegant and flexible (reusable) code.
CONTENUTI
Introduction to the compilers structure.
Describe a programming language: syntax, semantics, pragmatics.
Lexical analysis. Syntactic analysis. Analyzer, lexical and syntactic generators: Lex, Alex, Yacc, Happy.
The names and the environment.
Memory management.
Structuring the control. Abstract on control: procedures and functions.
Structuring data: data types in programming languages.
Object-oriented paradigm.
Functional paradigm. Introduction to functional programming. Haskell language.
Type assignment systems, formal description.
Concurrent programming.
TESTI DI RIFERIMENTO
[HPF] P. Hudak, J. Peterson, J. Fasel. A gentle introduction to Haskell’98. Available online.
[Car] Cardelli (2004). “Type systems”. In Allen B. Tucker. CRC Handbook of Computer Science and Engineering(PDF) (2nd ed.). CRC Press. ISBN 158488360X. Available online.
[Al] Alex user guide. C. Dornan, I. Jones, S. Marlow. Available online.
[Ha] Happy user guide. S. Marlow, A. Gill. Available online.