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

Implementazione del linguaggio LPTR

RTL/2 era un linguaggio di programmazione in tempo reale di piccole dimensioni, progettato da J. G. P. Barnes presso Imperial Chemical Industries nel 1972. Il linguaggio era basato su ALGOL 68 e consentiva la compilazione separata dei componenti del programma chiamati bricks (“mattoni”). La progettazione di RTL/2 fu guidata da principi essenziali per i sistemi in tempo reale, nei quali prestazioni e prevedibilità sono fondamentali: semplicità, affidabilità ed efficienza. Di conseguenza, il linguaggio introduceva alcuni concetti chiave:

Alcune caratteristiche del linguaggio RTL/2 furono riprese anche in LPTR:

  1. In RTL/2, le unità di codice, cioè i moduli, erano chiamate bricks. Questi mattoni rappresentavano diverse componenti di un programma ed erano classificati in quattro categorie:
    • procedure bricks: blocchi di codice rientrante dotati di nome;
    • data bricks: collezioni statiche dotate di nome, composte da scalari, matrici e record;
    • stack bricks: aree di memoria riservate all’esecuzione di tutte le procedure appartenenti a un singolo processo; contenevano inoltre lo stack delle chiamate, le variabili locali e altri elementi ausiliari;
    • SVC bricks (Supervisor Call): l’interazione con l’ambiente ospite di un programma RTL/2 era assicurata mediante procedure speciali e dati protetti, denominati procedure SVC e dati SVC.
  2. Gestione della memoria e vincoli di tempo reale: una caratteristica distintiva di RTL/2 era il suo approccio alla gestione della memoria. Il linguaggio non prevedeva meccanismi di allocazione dinamica, una scelta progettuale coerente con la natura deterministica dei sistemi in tempo reale.
  3. RTL/2 compilava in linguaggio assembly e offriva l’istruzione CODE, che consentiva di includere codice assembly nel programma sorgente RTL/2.

RTL/2 trovava applicazione in diversi settori che richiedevano capacità di elaborazione in tempo reale, tra cui automazione industriale, industria aerospaziale e difesa, telecomunicazioni e altri ancora. I colleghi del gruppo ICI che si occupavano di sistemi informativi in tempo reale speravano che RTL/2 diventasse uno standard industriale riconosciuto a livello mondiale, sul quale avviare collaborazioni con altri paesi, in particolare con il Regno Unito.

Il nostro contratto con ICI durava due anni e prevedeva la realizzazione di un compilatore per un linguaggio compatibile con RTL/2, destinato a essere inserito nella Biblioteca Nazionale dei Programmi (BNP), accessibile a tutti gli operatori industriali interessati. Alla fine del periodo contrattuale, il gruppo del Politecnico da me diretto completò l’implementazione di LPTR; il compilatore fu convalidato e depositato nella BNP. Da allora non ricevetti più informazioni sul suo destino. Probabilmente non fu adottato dall’industria, come avvenne del resto anche per RTL/2 che, pur essendo stato standardizzato, morì di morte naturale, come molti prodotti software rimasti inutilizzati.

Per me, il contratto LPTR significò formare e dirigere un gruppo di colleghi e studenti per la progettazione e l’implementazione del compilatore. Dopo alcune piccole modifiche alla sintassi di RTL/2, portai la sintassi di LPTR a una grammatica LL(1), rendendo possibile un’analisi sintattica discendente. La grammatica fu attributata, consentendo un’elegante analisi semantica. Infine, la generazione del codice fu realizzata in MACRO, il linguaggio assembly del minicomputer di destinazione INDEPENDENT. L’intero compilatore fu scritto in linguaggio C.

Questa esperienza mi portò a una significativa maturazione tecnica e a una nuova prospettiva sulla gestione dei progetti complessi.