Linguaggi di programmazione e compilatori
Corso tenuto tra il 1981 e il 1989, articolato su tre semestri (quarto anno – due semestri, quinto anno – un semestre), presso la Facoltà di Automatica. Proseguiva in modo naturale il percorso avviato con Teoria degli automi e Teoria dei linguaggi formali, spostando l’accento sui linguaggi di programmazione, sulla traduzione e sulla progettazione sistematica dei compilatori.
Riferimenti essenziali
- Istituzione: Istituto Politecnico di Bucarest, Facoltà di Automatica
- Cattedra: Calcolatori
- Periodo di insegnamento: 1981–1989
- Durata: 3 semestri
- Collocazione nel piano di studi: quarto anno (due semestri) e quinto anno (un semestre)
- Base del corso: la serie di manuali Limbaje și compilatoare, seguita dalla sintesi del 1987
Il posto del corso nella formazione di allora
Questo corso segnava il passaggio dai fondamenti teorici dell’informatica, insegnati nel terzo anno, al nucleo professionale della formazione software. Se Teoria degli automi e Teoria dei linguaggi formali fornivano i modelli astratti, qui iniziava il confronto con i linguaggi di programmazione reali, con la struttura della traduzione e con l’architettura interna dei compilatori.
Per me fu uno dei corsi più importanti di quella fase, perché mi permetteva di riunire diverse direzioni che mi interessavano: il rigore formale, la disciplina della programmazione, il significato dei linguaggi e la costruzione effettiva di strumenti software complessi.
L’architettura del corso nei tre semestri
Sebbene i manuali siano apparsi in più parti, in realtà costituivano un unico corso, sviluppato progressivamente.
- Primo livello: il vocabolario generale dei linguaggi di programmazione. Venivano introdotte le idee di sistemi informativi, comunicazione e linguaggi, nonché l’“anatomia” dei linguaggi di programmazione vista dalla prospettiva dell’implementazione.
- Secondo livello: la programmazione in Pascal. Pascal appariva come linguaggio della chiarezza e della disciplina della programmazione, utile sia per l’avviamento sia per il consolidamento di un pensiero algoritmico rigoroso.
- Terzo livello: sistemi formali, traduzione e progettazione dei compilatori. Qui il corso diventava esplicitamente ingegneristico: dalle grammatiche e dagli schemi di traduzione si passava all’analisi lessicale, all’analisi sintattica, all’analisi semantica e alla generazione del codice intermedio.
I manuali del corso
La serie di manuali fu concepita come supporto di lavoro per questo lungo percorso. Deve essere intesa come un insieme unitario, anche se pubblicato in più volumi.
- 📘 Parte I: Linguaggi di programmazione — definisce il quadro concettuale: sistemi informativi, comunicazione e linguaggi, struttura dei linguaggi e rapporto con la loro implementazione.
- 📘 Parte II: Programmazione in Pascal — utilizza Pascal come linguaggio della programmazione sistematica e della disciplina intellettuale nella costruzione dei programmi.
- 📘 Parte III–IV: Sistemi formali e progettazione dei compilatori — introduce i fondamenti della teoria della compilazione e la costruzione effettiva delle principali componenti di un compilatore.
- 📗 Limbaje de programare și compilatoare (1987) — il volume di sintesi che consolida e porta a maturazione la serie precedente.
Dal linguaggio al compilatore
Una delle idee importanti del corso era che i linguaggi di programmazione non dovessero essere trattati come semplici elenchi di costrutti sintattici. Dovevano essere considerati in rapporto al modo in cui vengono definiti, tradotti e implementati. Per questo motivo, il corso poneva in parallelo due livelli: la descrizione formale e la realizzazione ingegneristica.
Sotto questo aspetto, per me era più di un corso classico sui compilatori. Era il tentativo di offrire agli studenti una visione unitaria: dalle nozioni generali sul linguaggio, alla pratica della programmazione in un linguaggio di alto livello, fino all’apparato formale e tecnico necessario per costruire un traduttore o un compilatore.
Il suo significato nella mia evoluzione didattica
Visto retrospettivamente, questo corso fu il punto in cui la mia esperienza nell’area dei fondamenti teorici incontrò l’interesse sempre più forte per la costruzione sistematica del software. Da quel momento in poi, gli interessi per i linguaggi, la traduzione, il significato e la progettazione si sarebbero intrecciati sempre più strettamente.
Ebbe anche un ruolo istituzionale: contribuì a delineare una direzione di formazione software più coerente all’interno della Facoltà di Automatica, in un momento in cui l’informatica nel Politecnico cominciava ad acquisire un’identità più chiara.
Collegamenti
Cronologia: per il contesto biografico e istituzionale, si veda Il mio percorso nella ricerca.





