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