Interesul meu pentru compilatoare nu a apărut ca o specializare târzie, ci ca o consecință firească a preocupărilor mele timpurii pentru limbaje de programare, semantică și modele formale ale calculului. Pentru mine, compilatorul nu a fost niciodată o simplă unealtă tehnică, ci locul de întâlnire dintre limbaj, formalism și mediul de execuție — mecanismul prin care o convenție umană devine proces-mașină.
Stabilirea, în 1974, a temei doctoratului meu — un compilator conversațional pentru ALGOL 60 — a accentuat orientarea mea spre compilatoare. În consecință, am primit și sarcina de a preda cursul de compilatoare studenților din ultimul an de la Automatică, specializarea Programe de bază.
Această perspectivă s-a cristalizat treptat, prin experiențe succesive de cercetare și implementare: de la lucrul cu macroprocesoare și limbaje simbolice, în contextul portabilității programelor, până la proiectarea unor translatoare reale și a unor sisteme de dezvoltare asistată de calculator. Implementarea limbajului SNOBOL, în 1974, precum și macroprocesoarele portabile STAGE-2 și JANUS au reprezentat pentru mine primele „laboratoare” în care am putut explora relația dintre descrierea formală și traducere, înțeleasă ca transfer sistematic al semanticii spre execuție.
👉 Vezi secțiunea despre portabilitate
Ulterior, compilatorul pentru LPTR (Limbaj pentru Timp Real), implementat pe noul minicalculator românesc INDEPENDENT, a aprofundat această direcție. LPTR era o variantă a limbajului RTL/2 (Real-Time Language), conceput pentru aplicații în timp real. Compilatorul a fost realizat în cadrul unui contract cu ICI.
👉 Vezi o scurtă prezentare a compilatorului LPTR
În fine, teza de doctorat a constituit un cadru de reflecție metodologică asupra procesului de proiectare a compilatoarelor, aducând în prim-plan probleme de incrementalitate, structurare semantică și interacțiune om–sistem, generarea automată de componente și, nu în ultimul rând, relația dintre limbaj, mașina sa abstractă și execuție. În multe privințe, teza anticipează și fundamentează viziunea dezvoltată ulterior în cartea Limbaje de programare și compilatoare. O prezentare detaliată a tezei și a contextului în care a fost elaborată se găsește în secțiunea dedicată acesteia.
👉 Vezi secțiunea Teza de doctorat
Din această experiență s-a născut, în mod natural, nevoia unei sinteze. Cartea Limbaje de programare și compilatoare (Editura Academiei RSR, 1987) nu este doar un manual didactic, ci rezultatul unei cercetări de durată asupra traducerii programelor ca proces formalizabil: transformarea controlată între două descrieri ale aceluiași algoritm, de la limbajul de programare la o formă executabilă pe o mașină reală. Miza declarată — și poate atipică pentru epocă — este simultan umană și inginerească: limbajul ca principală interfață om–calculator, iar compilatorul ca mecanism care face această interfață funcțională.
Limbaje de programare și compilatoare (Editura Academiei, 1987), sinteză coerentă a cursului pe care l-am predat la Politehnica din București, unifică anatomia limbajelor — FORTRAN, ALGOL și PASCAL — cu teoria formală — Chomsky și Knuth — și cu ingineria compilatoarelor.
👉 Vezi secțiunea cărții „Limbaje de programare și compilatoare”
Partea I analizează limbajele de programare ca sisteme stratificate — lexical, sintactic și semantic —, cu accent pe componente și proprietăți: variabile (VS/VD), atribute, date structurate, proceduri și gestiunea memoriei (statică, stivă și heap), privite din perspectiva execuției și traducerii.
Partea a II-a prezintă formalismul esențial: gramatici independente de context și regulate, automate finite și push-down, scheme de traducere dirijată de sintaxă și gramatici de atribute pentru semantica statică.
Partea a III-a este „atelierul” practic: analiză lexicală și sintactică (LL/LR), cod intermediar în trei adrese, tabela de simboluri, optimizare și cod obiect — fiecare tratate prin teorie, algoritmi și implementare în pseudocod. Cartea a devenit un reper didactic pentru fundamentele compilatoarelor.
Privită retrospectiv, această cercetare se situează la intersecția dintre informatica teoretică și ingineria software, într-o perioadă în care granița dintre ele nu era nici stabilă, nici explicit formulată. Cartea și sistemele de programe care au precedat-o sunt, pentru mine, mărturia unei etape în care am încercat să aduc rigoare formală într-un domeniu aflat încă în plină constituire și să transform practica traducerii programelor dintr-un meșteșug într-o disciplină inginerească bazată pe modele, metode și verificabilitate.