Editura Academiei RSR, 1987
Cartea din 1985 își are originea într-o serie de trei manuale universitare conținând cele patru parti ale cursului, publicate în anii 1981–1983:
Seria a fost consolidată și maturizată în acest volum care se adresa nu numai studenților ci si informaticienilor dornici să aprofundeze tematica limbajelor de programare și mai ales a translatoarelor acestora.
Cartea „Limbaje de programare și compilatoare” (Editura Academiei RSR, 1987) este concepută ca o sinteză unitară între fundamentele teoretice și tehnicile inginerești necesare definirii și implementării limbajelor de programare, rezultată dintr-un curs avansat, de lungă durată (trei semestre), predat începând cu 1980 prin reunirea teoriei automatelor, a limbajelor formale și a compilatoarelor. Miza ei este în același timp „umană” și tehnică: limbajul este principala convenție de cooperare om–calculator, iar compilatorul este mecanismul care face această convenție executabilă, transformând programele din descrieri în procese reale, nu prin „rețete” disparate, ci printr-o metodologie coerentă.
Ideea centrală a cărții este că traducerea programelor poate fi tratată ca o operație formalizabilă: o transformare sistematică între două descrieri ale aceluiași algoritm, de la limbajul sursă către forme apropiate de mașină. În acest cadru, fiecărui limbaj îi corespunde implicit o mașină virtuală care conferă semnificație construcțiilor sale, iar compilarea devine disciplina de interfațare dintre universul acestei mașini virtuale și cel al mașinii reale.
Structura este explicit tripartită, precedată de o introducere conceptuală despre sisteme, informație, comunicare, limbaje și traducere, tocmai pentru a fixa faptul că un compilator nu este un „truc”, ci răspunsul la o nevoie generală de transformare controlată a reprezentărilor:
Cartea se distinge prin refuzul de a separa teoria de practică: fiecare temă urmează traseul „motivație – algoritm – implementare”, formând nu doar cunoștințe tehnice, ci și o disciplină a gândirii. Un element unificator este recursul sistematic la modelul de „mașină” (abstractă/virtuală, cu stări, stivă, tabele și acțiuni), care structurează aceeași logică de la recunoaștere la traducere și până la generarea de cod, oferind cititorului un mod de gândire extensibil la proiectarea altor aplicații software complexe.