Linguguaggi di programmazione
Corso di laurea in Informatica
Docente
Finalità del corso
Scopo del corso è approfondire le conoscenze relative ai linguaggi di programmazione. Usando coma base le conoscenze già acquisite, negli anni passati, su diversi linguaggi di programmazione, vengono presentate nozioni e principi "universali" che guidano la definizione e l'implementazione dei moderni linguaggi di programmazione.
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).
-
Macchine astratte, Interpretazione e Compilazione
-
Descrivere un linguaggio di Programmazione (Sintassi e Semantica) Introduzione alla struttura dei compilatori.
-
Analisi lessicale.
-
Generatori di Analizzatori Sintattici (Yacc + esempi).
-
I nomi e l'ambiente
-
La gestione della memoria
-
Strutturare il controllo
Astrarre sul controllo
-
Strutturare i dati.
Type Systems monomorfi e polimorfi
Cenni all'implementazione di Type checking e type inference
-
Paradigma Funzionale
Introduzione alla Programmazione Funzionale. High-order Programming. Il linguaggio Haskell.
Testo adottato
-
M. Gabbrielli e S. Martini. Linguaggi di Programmazione - Principi e Paradigmi. McGraw-Hill. ISBN 88-386-6261-4
Altri documenti e testi di possibile consultazione
Gli argomente trattati nel corso sono reperibi su diversi libri di testo, piuttosto simili tra di loro per contenuti e struttura.
-
In particolare, questo corso prende ispirazione anche da:
Michael Scott. Programming language pragmatics. Morgan Kaufmann.
-
Un libro di testo analogo, facilmente reperibile in rete:
Robert W. Sebesta. Concepts of Programming Languages. Pearson. ISBN-13: 978-0131395312
- Introduzione
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Sintassi
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Nomi e ambiente
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Gestione della memoria
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Strutture di controllo
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Astrarre sul controllo
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Astrarre sui dati
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Tipi di dati astratti
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Paradigma ad oggetti
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Paradigma funzionale
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
- Alcuni esercizi presentati a lezione
- Lucidi in formato pdf:
[1 per pagina],
[4 per pagina].
L'esame si compone di una prova scritta e di una prova orale.
-
Prova Scritta:
-
L'esame scritto prevede:
- lo svolgimento di una serie di esercizi analoghi a quelli presentati durante le esercitazioni;
- la risposta ad una serie di domande riguardanti gli argomenti trattati a lezione.
Durante le prove scritte non è possibile consultare il libro di testo o gli appunti né utilizzare calcolatrici tascabili.
-
Prova Orale:
-
La prova orale, obbligatoria per tutti, solitamente consiste in poche e brevi domande sugli argomenti trattati a lezione. Per poter sostenere la prova orale è necessario aver superato l'esame scritto con un voto maggiore o uguale a 16. Si richiede inoltre che la prova scritta sia stata superata da meno di un anno.
Nel caso la prova orale non venga superata o si decida di non accettare il voto, le rimanenti prove rimangono valide, ed è possibili ripetere la sola prova orale.
-
Nota:
-
L'iscrizione all'esame su Esse3 è necessaria anche per motivi organizzativi, in questo senso, iscriversi all'esame e non presentarsi crea quasi gli stessi inconvenienti di presentarsi all'esame senza essersi iscritti. Pertanto chi rinunciasse a presentarsi ad una prova d'esame è caldamente invitato ad annullare la propria iscrizione su Esse3.
Gli studenti che non dispongano di un account su Esse3 possono iscriversi mandandomi un messaggio di posta elettronica all'indirizzo "pietro.digianantonio at uniud.it".
-
Periodo di validità delle prove:
-
Le prove scritte mantengono la loro validità per un anno, ossia una volta superato lo scritto lo studente ha un anno di tempo per completare l'esame sostenendo le rimanenti prove.