04138 - LINGUAGGI DI PROGRAMMAZIONE

Anno Accademico 2022/2023

  • 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.

Metodi didattici

Lezioni frontali ed esercitazioni

Modalità di verifica e valutazione dell'apprendimento

Esame scritto ed esame orale (da sostenersi nella stessa sessione). Un solo esame copre entrambe i moduli.
Potranno essere somministrati compiti durante l'anno che daranno luogo all'esonero dallo scritto (ma non dall'orale).

Strumenti a supporto della didattica

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

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=25802

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.