Portabilitatea programelor
De la exerciții de laborator la articole și instrumente: portabilitatea ca obiectiv inginerec și ca fir coerent al cercetării mele.
Portabilitatea ca idee și ca rezistență
Pe fundalul experiențelor cu SISIF s-a construit, aproape fără să îmi dau seama la început, primul fir coerent al cercetării mele: portabilitatea programelor. Într-un context tehnologic dominat de mașini incompatibile între ele și de limbaje legate strâns de hardware, portabilitatea era, de fapt, o formă de rezistență: încercarea de a acorda software-ului un statut de „cetățean liber”, capabil să migreze de la o arhitectură la alta fără a fi rescris de la zero.
În jurul acestei idei s-a cristalizat treptat o mică „școală” în cadrul catedrei: colegi și studenți cu care am transformat problemele practice din laborator în rezultate publicabile. Întrebările erau simple și presante: ce înseamnă exact un program portabil, față de ce trebuie să fie independent și care sunt costurile reale ale portabilității?
BCPL și codul intermediar
Primul „laborator” real al acestor idei a fost limbajul BCPL, conceput de Martin Richards ca limbaj pentru scrierea de compilatoare. BCPL introducea explicit separarea dintre partea independentă de mașină și cea dependentă de mașină, printr-o formă intermediară tratată ca limbaj al unei mașini abstracte. Implementarea pe FELIX, folosind interpretorul INTCODE, a făcut portabilitatea vizibilă și concretă.
Articolele despre portabilitate (1975–1978)
Din experiențele de laborator s-a născut o primă serie de articole în care am încercat să abstractizăm lecțiile practice într-un cadru conceptual reutilizabil: tipuri de portabilitate, bariere uzuale, strategii de atenuare și compromisuri între eficiență și generalitate.
Macroprocesoare și rescriere controlată
O a doua direcție importantă a fost cea a macroprocesoarelor, în special STAGE-2, care a adus portabilitatea într-o altă formă: rescriere controlată și infrastructuri minimale, ușor de transferat. Din această experiență au rezultat atât un macroprocesor specializat pentru dezvoltarea de software, cât și explorarea limbajului JANUS, apropiat de vechiul vis UNCOL al unui limbaj intermediar universal.
Concluzie
Privind retrospectiv, laboratorul nostru cu BCPL, INTCODE și STAGE-2 a devenit, fără să ne propunem explicit, un mic „atelier al portabilității”. Aceste experiențe au fost atât exerciții tehnice, cât și pași decisivi către o viziune inginerească mai largă, în care programarea nu mai este doar o tehnică locală, ci o artă a depășirii constrângerilor.
Firul portabilității va continua mai târziu în preocupările mele pentru compilatoare, forme intermediare și, în cele din urmă, pentru ingineria software ca disciplină a proiectării controlate.





