Luca Dan Șerbănați la bacalaureat, 1961
Luca Dan Șerbănați în primii ani ’70
Luca Dan Șerbănați la ultimul curs, aprilie 1989

Luca Dan Șerbănați

Profesor emerit la Politehnica din București

Cercetare, învățământ, industrie și memorii

RO | EN | IT
Luca Dan Șerbănați la Veneția, 1990
Luca Dan Șerbănați la New York, 2005
Luca Dan Șerbănați

Implementarea limbajului LPTR

RTL/2 era un limbaj de programare în timp real, de mici dimensiuni, conceput de J. G. P. Barnes la Imperial Chemical Industries, în 1972. Limbajul era bazat pe ALGOL 68 și permitea compilarea separată a componentelor de program numite bricks („cărămizi”). Proiectarea RTL/2 a fost ghidată de principii esențiale pentru sistemele în timp real, unde performanța și predictibilitatea sunt primordiale: simplitatea, fiabilitatea și eficiența. În consecință, limbajul introducea câteva concepte-cheie:

Câteva particularități ale limbajului RTL/2 au fost preluate și în limbajul LPTR:

  1. În RTL/2, unitățile de cod, adică modulele, erau numite bricks. Aceste „cărămizi” reprezentau diferite componente ale unui program și erau clasificate în patru categorii:
    • cărămizi de procedură: blocuri de cod reentrant, cu nume;
    • cărămizi de date: colecții statice, cu nume, de scalari, matrici și înregistrări;
    • cărămizi de stivă (stack): zone de stocare rezervate pentru rularea tuturor procedurilor unui singur proces; conțineau și stiva de apeluri, variabilele locale și alte elemente auxiliare;
    • cărămizi SVC (Supervisor Call): interacțiunea cu mediul-gazdă al unui program RTL/2 era asigurată prin proceduri speciale și date protejate, numite proceduri SVC și date SVC.
  2. Gestionarea memoriei și constrângerile de timp real: o caracteristică definitorie a RTL/2 era abordarea sa privind gestionarea memoriei. Limbajul nu avea mecanisme de alocare dinamică, o alegere de proiectare conformă cu natura deterministă a sistemelor în timp real.
  3. RTL/2 compila în limbaj de asamblare și oferea instrucțiunea CODE, care permitea includerea limbajului de asamblare în codul-sursă RTL/2.

RTL/2 avea aplicații în diverse domenii care necesitau capacități de calcul în timp real, printre care automatizarea industrială, industria aerospațială și de apărare, telecomunicațiile etc. Colegii din colectivul de la ICI care se ocupau de sistemele informatice în timp real sperau ca RTL/2 să devină un standard recunoscut în industrie la nivel mondial, pe baza căruia să poată fi inițiate colaborări cu alte țări, în principal cu Marea Britanie.

Contractul nostru cu ICI dura doi ani și prevedea realizarea unui compilator pentru un limbaj compatibil cu RTL/2, care urma să fie inclus în Biblioteca Națională de Programe (BNP), accesibilă tuturor agenților interesați din industrie. La sfârșitul perioadei contractuale, colectivul de la Politehnică, condus de mine, a implementat LPTR, iar compilatorul a fost validat și depus în BNP. De atunci, nu am mai avut informații despre soarta lui. Probabil nu a fost adoptat în industrie — așa cum s-a întâmplat, de altfel, și cu RTL/2, care, deși standardizat, a murit de moarte naturală, ca multe produse software neutilizate.

Pentru mine, contractul LPTR a însemnat formarea și conducerea unei echipe de colegi și studenți pentru proiectarea și implementarea compilatorului. După mici modificări ale sintaxei RTL/2, am adus sintaxa LPTR la o gramatică LL(1), ceea ce a permis o analiză sintactică descendentă. Gramatica a fost atributată, ceea ce a permis o analiză semantică elegantă. În fine, generarea de cod s-a făcut în MACRO, limbajul de asamblare al minicalculatorului-țintă INDEPENDENT. Întregul compilator a fost scris în limbajul C.

Această experiență mi-a adus o maturizare tehnică importantă și o perspectivă nouă asupra managementului proiectelor complexe.