Luca Dan Șerbănați all'esame di maturità, 1961
Luca Dan Șerbănați nei primi anni Settanta
Luca Dan Șerbănați all'ultima lezione del quinto anno, aprile 1989

Luca Dan Șerbănați

Professore emerito alla Politehnica di Bucarest

Ricerca, insegnamento, industria e memorie

RO | EN | IT
Luca Dan Șerbănați a Venezia, 1990
Luca Dan Șerbănați a New York, 2005
Luca Dan Șerbănați

Tesi di dottorato

La mia tesi di dottorato ha segnato un momento decisivo nella mia carriera, unendo due direzioni di ricerca raramente conciliabili nel 1980: il rigore formale e la costruzione effettiva di un prodotto software operativo. Su richiesta del mio relatore, il professor Mircea Petrescu, con il titolo ufficiale “Implementazione di un linguaggio per un sistema interattivo di elaborazione dei dati”, la tesi nascondeva in realtà la progettazione di un compilatore conversazionale ALGOL-60 per un sistema multiutente, capace di rispondere in modo incrementale, in tempo reale, dopo ogni riga introdotta dall’utente. Il “linguaggio” del titolo era dunque un compilatore conversazionale ALGOL-60 — SICAL — integrato in un sistema destinato alla formazione dei programmatori in ALGOL-60.

All’inizio la scelta non mi entusiasmò: ALGOL-60 aveva ormai consumato gran parte della sua novità pratica, pur restando il riferimento che aveva inaugurato la descrizione formale della sintassi in informatica. Accettai la sfida perché la direzione conversazionale — alimentata dalla comparsa dei sistemi in time-sharing — apriva una nuova linea di ricerca, mentre il rigore formale del linguaggio mi permetteva di tentare un approccio sistematico alla costruzione del compilatore. La sua principale particolarità era la compilazione incrementale: dopo ogni riga introdotta, l’utente riceveva un feedback in tempo reale, anche quando sulle altre console si lavorava contemporaneamente.

Per l’analisi sintattica adottai LALR(1) e costruii, insieme a studenti eccezionali, un generatore di tabelle; per l’analisi semantica utilizzai schemi di traduzione orientati alla sintassi e grammatiche di attributi (Knuth). Lavorammo con risorse modeste (FELIX C-256), spesso di notte, riprendendo al mattino le esecuzioni interrotte — un esercizio di pazienza che ci tenne uniti e ci obbligò a trovare soluzioni ingegnose. Il compilatore conversazionale completo non fu terminato prima della discussione, ma furono consegnati i componenti essenziali (grammatica adattata, generatore LALR(1), regole semantiche e documentazione). Soprattutto, da quell’esperienza compresi che la teoria dei linguaggi formali non serve soltanto a un determinato compilatore, ma può offrire un quadro generale per descrivere e controllare il processo di sviluppo dei programmi.

Idea chiave

La compilazione è trattata come processo incrementale: l’analisi del testo del programma e le strutture interne della compilazione vengono aggiornate man mano che il programma viene scritto, non soltanto alla fine. In questo modo, la teoria dei linguaggi e della traduzione diventa parte dell’interazione uomo–macchina, sotto vincoli di tempo di risposta.


Obiettivi e risultati della tesi (sintesi)


Capitolo 1 – il nucleo concettuale della tesi

Dall’esperienza del progetto deriva l’“anomalia” fertile della tesi: il Capitolo 1 non tratta dettagli di implementazione di SICAL, ma propone una formalizzazione della progettazione dei programmi, vista come una successione di trasformazioni tra “forme intermedie” governate da regole precise. Nel capitolo ho cercato di formulare il quadro concettuale e di dare una forma rigorosa al problema: che cosa significano, in termini chiari, un linguaggio e un traduttore in un contesto conversazionale, come si esprime l’incrementalità e come possono essere descritte le strutture interne del programma “in costruzione”.

Ho lavorato con l’idea di “macchina astratta” come modello di comportamento, con stati e azioni, e ho cercato di cogliere come l’interfaccia con l’ambiente, le strutture dati e le operazioni possano essere raffinate sistematicamente fino a un livello eseguibile. Questo tentativo di passare dall’arte all’ingegneria — dall’intuizione a passi giustificabili — è diventato, nel tempo, lo scheletro metodologico che ho poi sviluppato.

Per questo capitolo esiste una copia PDF, una traduzione in inglese anch’essa in PDF, e anche una descrizione dettagliata, che metto a disposizione come documento distinto qui.

👉 Leggi di più sul Capitolo 1


Collegamenti con i lavori successivi

I temi della tesi — il rigore formale, le rappresentazioni intermedie, le strutture semantiche e il trattamento del processo di sviluppo come attività sistematica — hanno alimentato i miei interessi successivi per i linguaggi, i compilatori e la progettazione ingegneristica del prodotto software.


Materiali disponibili

Il testo integrale della tesi non è disponibile in un’edizione digitale completa e pulita. Metto però a disposizione l’indice e l’introduzione della tesi, oltre a una descrizione estesa (12 pagine), che ne presenta la struttura, le idee e i contributi.

Indietro