In questa sezione raccolgo i miei lavori nell’area teorica dell’informatica — quei contributi che riguardano la formalizzazione, i linguaggi, la traduzione e i modelli matematici del calcolo. Alcuni testi sono stati utilizzati anche come supporto didattico, ma vengono presentati qui soprattutto come base concettuale per le mie direzioni successive nell’ingegneria del software, nell’intelligenza artificiale e nell’informatica medica.
Il materiale è strutturato per assi concettuali, non in forma biografica. Per ogni asse esiste una pagina separata, nella quale integrerò progressivamente descrizioni, liste di lavori e, dove opportuno, frammenti pubblicabili.
Il mio interesse per i fondamenti è iniziato con questioni legate alla descrizione formale della semantica dei linguaggi di programmazione e al rapporto tra costruzioni teoriche e comportamento effettivo dei programmi. In questo quadro si colloca anche la mia tesi di laurea presso la Facoltà di Matematica, dedicata alla definizione della semantica con l’aiuto del Metodo di Vienna.
La teoria degli automi è una delle pietre angolari dell’informatica teorica: modelli di calcolo, riconoscimento di linguaggi, equivalenze, minimizzazione, proprietà di chiusura, collegamenti con le descrizioni algebriche e con i modelli di programmazione.
I linguaggi formali e le grammatiche offrono il quadro matematico per la descrizione della sintassi e per la costruzione dei traduttori.
Nel 1980 ho discusso la mia tesi di dottorato, “Implementazione di un linguaggio per un sistema interattivo di elaborazione dei dati”, un progetto che univa il rigore formale alla costruzione di un compilatore conversazionale ALGOL-60 utilizzato nella formazione dei programmatori. Il compilatore era capace di compilare ed eseguire programmi riga per riga, offrendo un feedback immediato agli utenti. Il progetto combina la teoria dei linguaggi formali con la pratica ingegneristica.
In questa sottosezione raggrupperò le sintesi dedicate ai linguaggi di programmazione e alle tecniche di compilazione nel mio libro Linguaggi di programmazione e compilatori, pubblicato nel 1987: l’anatomia stratificata di un compilatore, l’analisi lessicale e sintattica, l’analisi semantica, la traduzione guidata dalla sintassi, le rappresentazioni intermedie e la generazione del codice.