04138 - LINGUAGGI DI PROGRAMMAZIONE

Anno Accademico 2025/2026

  • Docente: Roberto Gorrieri
  • Crediti formativi: 12
  • SSD: INF/01
  • Lingua di insegnamento: Italiano
  • Moduli: Roberto Gorrieri (Modulo 1) Maurizio Gabbrielli (Modulo 2) Saverio Giallorenzo (Modulo 3)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
  • Campus: Bologna
  • Corso: Laurea in Informatica (cod. 8009)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente: - conosce i principali concetti della teoria dei linguaggi formali e li sa applicare per la classificazione di semplici linguaggi; - conosce le principali tecniche per l'analisi sintattica dei linguaggi di programmazione; - conosce la struttura di un linguaggio di programmazione e le tecniche per implementare la sua macchina astratta; - conosce il paradigma orientato agli oggetti ed un altro paradigma non imperativo.

Contenuti

Il corso è strutturato in due moduli, strettamente integrati.

Primo modulo, primo semestre; docente:Roberto Gorrieri http://www.cs.unibo.it/~gorrieri/

Evoluzione dei linguaggi di programmazione: Dai linguaggi assembler ai linguaggi ad alto livello. Macchine astratte, interpreti, compilatori. Descrizione di un linguaggio: Sintassi, semantica, pragmatica e implementazione. Sinatssi in BNF. Semantica operazionale strutturata (SOS). Grammatiche regolari, automi finiti, espressioni regolari: equivalenze e risultati principali (p.e., pumping lemma). Costruzione di analizzatori lessicali; cenni a Lex. Grammatiche libere da contesto, automi a pila: equivalenze e risultati principali (p.e., pumping theorem). Grammatiche libere deterministiche: algoritmi di riconoscimento e costruzione dell'albero di derivazione; grammatiche LL(1), LR(0), SLR, LR(1), LALR(1). Cenni a YACC.

Secondo modulo, secondo semestre; docenti: Maurizio Gabbrielli e Saverio Giallorenzo

http://www.unibo.it/SitoWebDocente/default.htm?UPN=maurizio.gabbrielli%40unibo.it

https://www.unibo.it/sitoweb/saverio.giallorenzo2

Ambiente, regole di scoping e loro implementazione. Pila dei record di attivazione; heap. Gestione della memoria: garbage collection. Controllo di sequenza, procedure, ricorsione. Tipi e controllo di tipo. Parametri e modalità di passaggio: per valore, per riferimento, per risultato, per nome. Parametri funzionali. Chiusure. Eccezioni. Il paradigma object-oriented: classi e oggetti, inizializzazione, inheritance e late-binding, il modello operazionale, differenza tra subtyping e inheritance. Cenni al paradigma logico: unificazione, derivazioni SLD, Prolog. Cenni al paradigma funzionale: Scala. Cenni alla programmazione concorrente e service oriented: Jolie.

 

Testi/Bibliografia

Maurizio Gabbrielli, Simone Martini

Linguaggi di programmazione: principi e paradigmi. Seconda edizione. McGraw-Hill Italia, 2010. ISBN 88-386-6573-8.

 

Maurizio Gabbrielli, Simone Martini, Saverio Giallorenzo,

Programming Languages: Principles and Paradigms (second edition), Springer, 2023. ISBN 978-3031341434

Metodi didattici

Lezioni frontali ed esercitazioni

Modalità di verifica e valutazione dell'apprendimento

Esame scritto ed esame orale.

L'esame scritto si compone di 8 esercizi a domanda aperta su diversi argomenti del corso. L'esame scritto é valutato con un punteggio in 32-esimi, dove ad ogni esercizio è attribuito un punteggio di 4. Durante l'esame scritto, della durata di 120 minuti, non è ammesso l'uso di libri o appunti.

Potranno essere offerti esami scritti limitati a uno o più moduli del corso, il cui superamento complessivo configura il superamento dell'esame scritto.

La validità di ogni esame scritto superato è limitata all'interno di una sessione, per un totale di 3: estiva, autunnale e invernale. L'esame orale segue l'esame scritto e può essere sostenuto solo se si è ottenuto, nell'esame scritto, un punteggio minimo di 16/30 nella sessione in cui si intende sostenere l'esame orale.

Durante la prova orale, della durata di circa 20-30 minuti, allo studente vengono poste domande che possono riguardare tutti gli argomenti in programma. La prova orale é valutata con un punteggio in 30-esimi. Il voto dell'esame orale è stabilito in base alla preparazione rispetto agli argomenti facenti parte del programma del corso, la capacità critica di analizzare gli stessi, la padronanza della terminologia specifica e la capacità di collegare i vari argomenti trattati nel corso.

Il punteggio finale, in 30-esimi, rappresenta la media dei punteggi della prova scritta e della prova orale.

Strumenti a supporto della didattica

https://virtuale.unibo.it/course/view.php?id=35781

http://www.cs.unibo.it/~gorrieri/LP/lp.html (login:esame password:linguaggi)

http://www.cs.unibo.it/~gabbri/corsi/linguaggi.html
 

Link ad altre eventuali informazioni

https://virtuale.unibo.it/course/view.php?id=35781

Orario di ricevimento

Consulta il sito web di Roberto Gorrieri

Consulta il sito web di Maurizio Gabbrielli

Consulta il sito web di Saverio Giallorenzo

SDGs

Istruzione di qualità Parità di genere

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.