Wednesday, November 1, 2017

Tehnici de compilare

Tehnici de compilare sunt unele dintre cele mai frumoase lucruri din informatică din mai multe cauze dintre care enumăr:
- au teorie cât cuprinde;
- produsele cunt concrete;
- totul se verifică practic;
- generează evoluția;
- implementează mecanisme;
- dau expresie generalizărilor.
Despre compilatoare s-au scris tomuri întregi fie de teoreticieni, fie de practicieni, fie de teoreticieni care au stat în echipele de practicieni și au văzut cum pornind de la teorie se construiesc efectiv compilatoare. Mă laud că în vara anului 1970 am susștinut lucrarea de stat, cum este cea de licență acum intitulată Rutine interpretative și rutine compilative, sub îndrumarea marelui profesor de la Universitatea București, Dragoș VAIDA. După cei cinci ani de studenție  am devenit absolvent cu diplomă al Secției de Mecanizarea și Automatizarea Calculului Economic din facultatea de Calcul Economic și Cibernetică Economică.
Am urmărit cu deosebit interes literatura din zona compilatoarelor și când în 1988 lipsit de speranță am dus la topit documentația de vreo 300 kg, cel puțin 70% erau cărți fotocopiate și articole primite din străinătate pe probleme de compilatoare. Ca să văd cum stau lucrurile practic, prin 1973 am intrat în posesia unei documentații complete și cu scheme logice pentru un compilator de FORTRAN de la profesorul Csaba FABIAN și am mers la ITC București cu aprobări speciale am avut acces la documentația de bază a compilatorului COBOL inclusiv la nivel de scheme logice și diagrame, pe care le-am studiat câteva săptămâni în toate detaliile lor, deși dosarele m-au descurajat la început prin dimensiuni și prin numărul lor prea mare, mult prea mare. Torul se petrecea prin 1978, după ce citisem cartea lui Alfred V. AHO șiJeffrey D. ULLMAN intitulată Principles of Compiler Design, apărută în editura Addison-Wesley Publ. în anul 1977, destul de mare având 604 pagini și pe care am xeroxat-o pe la o centrală industrială unde aveam o intrare, cu un preț deloc neglijabil.
Am avut cărțile:
D. VAIDA - Limbaje formale și tehnici de compilare, Editura Universității, București, 1976,
D. VAIDA - Algoritmi de compilare, Editura Didactica si Pedagogica, București,  1971 ,
D. L. ȘERBĂNAȚI - Limbaje de programare si compilatoare, Editura Academiei RSR, București, 1987,
Dan SIMOVICI - Limbaje formale si tehnici de compilare, Editura Didactica si pedagogica, Bucuresti, 1978.
Mi-ar fi plăcut să știu că cei ce scriau cărți despre compilatoare fuseseră în echipe pe la mari companii care scriau compilatoare și nu doar adaptau sau doar traduceau mesaje, implementând limbaje noi de programare care deveniseră de succes între timp.
Ceva mai târziu am achiziționat cărți de construirea compilatoarelor însoțite de câte un CD unde se aflau compilatoare ce implementau subseturi ale unor limbaje de programare în vogă. Pe mine mă interesau lucruri foarte precise precum:
- implementarea recursivității;
- generalizare ciclurilor imbricate;
- asigurarea conversiitor de tip;
- transmiterea de parametri;
- operarea cu expresiile de pointeri;
- evalări de expresii complexe.
Cursurile despre compilatoare au în general o structură clasică și se referă la:
- gramatici;
- limbaje formale;
- descrieri;
- etape de compilare;
- compiarea de expresii aritmetice;
- alocarea de resurse;
- generarea de cod;
- secvențe de cod scrise în C++;
- evaluări de performanțe.
Concluzia la care am ajuns este că teoria e una, practica este alta și din start trebuie spus că ori se face un compilator ca lumea, ori nu se face nimic, pentru că atât timp cât în târg există compilatoare DOXA pentru limbajele C++, Java sau Pascal, este ridicol să se vină în 2017 să se propună un compilator pentru uz curent care implementează 20% dintr0un limbaj, numai pentru că este realizat în spațiul nostru cel mioritic, iar emfaza să fie elementul ce-i caracterizează pe cei care-l oferă. Cred că fără o echipă de cel puțin 50 de programatori de top nu ai cum să demarezi scrierea unui compilator adevărat, pentru un limbaj de programare adevărat, în cadrul unui proiect adevărat pe o perioadă de 2 - 3 ani cel puțin dacă se pornește nu chiar de la zero, iar managerul are în spate câțiva ani prin America la un mare constructor de compilatoare, pe care nu-l numesc să nu-i fac reclamă, vorba ălora penibili de la tv.
Tehnicile de compilare sunt un miracol care trebuie studiat și aprofundat cu evlavie, respect și credința că totul este posibil, real și aici lângă noi cei care ne dăm programatori.







(01 noiembrie 2017)

No comments:

Post a Comment