Emil MUNTEANU


abc
Emil MUNTEANU este unul dintre marii clasici ai literaturii românești de informatică, autor care s-a remarcat prin lucrări precum:
Emil MUNTEANU - Limbajul COBOL, manual pentru elevii liceelor pentru prelucrarea automată a datelor, Editura CNST, București, 1972, 200 pag.
Emil MUNTEANU - Utilizarea calculatoarelor în prelucrarea datelor, vol. 1, Editura Dacia, Cluj-Napoca, 1974, 188 pag.
Emil MUNTEANU - Utilizarea calculatoarelor în prelucrarea datelor, vol. 2, Editura Dacia, Cluj-Napoca, 1974, 272 pag.
Ioan MIHUȚ, Emil MUNTEANU, Adrian IVANOV - Inițiere în limbajul ADA, Editura Tehnică, București, 1986, 288 pag.
Am în mână cartea referită prin:
Emil MUNTEANU, Viorel COSTEA, Mircu MITROV - Programarea în limbaje de asamblare ASSIRIS, Editura Tehnică, București, 1976, 334 pag.
Autorii Emil MUNTEANU, Viorel COSTEA și Mircu MITROV au structurat cartea în 5 capitole, după cum urmează:
capitolul 1, intitulat Asamblarea și limbajele de asamblare de la paginile 11 - 51, abordează aspecte necesare celui ce învață să programeze în limbajul ASSIRIS, să treacă repede la scrierea și rularea pe calculator a programelor; sunt prezentate caracteristicile limbajelor de asamblare, setul de caractere, programul sursă; tipurile de constante (numerice, alfanumerice, literale, constante de adresă, constante zecimale directe, octale, binare, virgulă fixă, virgulă mobilă, întregi zecimale) sunt definite la nivel de detaliu, căci programatorii în limbaj de asamblare trebuie să știe totul la nivel de bit, nu altfel, căci ei trebuie să aibă explicații pentru orice mișcare a biților din programele pe care le scriu, în timpul când aceste programe intră în execuție; altfel, ei nu sunt programatori în limbaj de asamblare și ar fi asemeni lăutarilor care cântă după ureche;
capitolul 2 intitulat Directivele limbajului de asamblare, de la paginile 52 - 95, prezintă directivele DATA, GEN, TEXT, TEXTG, COM, EQU, RES, ORG, BOUND; se prezintă organizarea textului obiect, directive de asamblare condiționată, convenții de adresare, tratarea identificatorilor; pentru fiecare directivă este dată o secvență de text sursă și explicații cu reprezentări la nivel de byte sau de bit, după cum este cazul; sunt date elemente legate de segmentarea programelor, căci programatorul în limbaj de asamblare este cel care-și asigură singur managementul memoriei, căci în acele vremuri memoria internă trebuia gestionată cu atenție datorită dimensiunii reduse a acesteia; textul sursă de la paginile 84 - 86 ilustrează avantajele segmentării unui program;
capitolul 3 intitulat Instrucțiuni mașină ale limbajului de asamblare, de la paginile 96 - 236, oferă detalii legate de reprezentarea instrucțiunilor în format intern și, ceea ce este esențial, se discută despre reprezentarea instrucțiunilor la nivel de grupuri de biți, simultan cu discutarea indicatorilor de condiție și cu poziționarea măștilor, pentru a descrie variantele de stări care apar pe durata execuției, căci nimic nu trebuie să rămână necunoscut pentru programator; se prezintă instrucțiunile de încărcare LD4, LD1, LDM, LD1I, LD4I, LDC2, LDC4, LDC8 și de memorare ST1, ST4, STM, STS1, STS4, instrucțiuni de calcul binar AD4, AD8, AD4I, IC2, IC4, SB4, SB8, MP2, MP4, DV2, DV4, instrucțiuni de vehiculare cu șiruri de biți, instrucțiuni de lucru cu șiruri de caractere, instrucțiuni de comparare CP1, CP2, CP4, CP8, CP1I, CP2I, CP4I, instrucțiuni de salt BRU, BAL, BCF, BCT, BDF, BDT, instrucțiunea de împachetare PACK și de despachetare UNPK, instrucțiuni de calcul zecimal ZAD, ADD, SBD, MPD, DVD, CPD, LDDA și instrucțiuni de calcul în virgulă mobilă ADF4, ADF8, SBF4, SBF8, MPF4, MPF8, DVF4, DVF8; întrucât aceste instrucțiuni sunt miezul programării în limbaj de asamblare, autorii au oferit detalii asupra operanzilor, a lungimilor de zone de memorie, a conținutului zonelor de memorie, înainte și după execuția fiecărei instrucțiuni, ținând cont de reprezentarea informației la nivel de bit în fiecare zonă de memorie ce definește un operand;
capitolul 4 intitulat Macrodefinițiile în limbajul de asamblare ASSIRIS, de la paginile 237 - 299, definește conceptul de macroinstrucțiune, arată cum se construiesc macrodefinițiile și sunt prezentate macroinstrucțiuni pentru implementarea lejeră a operațiilor de intrare/ieșire și a operațiilor specifice gestiunilor de fișiere;
capitolul 5 intitulat Exemple de programe comentate, de la paginile 300 - 324 conține 14 exemple în care sunt descrise situații frecvente care apar în activitatea programatorului în limbaj de asamblare și autorii oferă soluții performante; exemplul 1 oferă textul sursă al soluției problemei de afișare a unei adrese de memorie sau a conținutului unei zone de memorie; subprogramul VIDAJ din exemplul 2 listează conținutul unei zone de memorie de lungime oarecare; exemplul 6 exemplifică apelul unui subprogram ASSIRIS dintr-un program apelator scris în FORTRAN; exemplul 14 realizează o conversie a benzii perforate folosind codul FRIDEN în codul EBCDIC, program extrem de util în ziua de azi când dorim ca procesul de digitalizare să nu ocolească nimic din ceea ce a fost informatizare acum 40 sau 50 de ani, când se foloseau benzi magnetice, discuri gigantice dar cu capacitate mică și benzi de hârtie perforată la diferite echipamente de contabilizat sau calculatoare din generația a II-a.
Cartea scrisă de Emil MUNTEANU, Viorel COSTEA și Mircu MITROV este dovada clară a faptului că numai o anumită categorie de programatori are capacitatea de a accepta că un program este ceea ce este numai și numai prin alegerile pe care ei le fac. Tipurile de operanzi sunt alese de ei. Denumirile operanzilor sunt alese de ei. Operațiile pe care le fac programele sunt instrucțiunile pe care ei le pun în secvențe. Programatorii gestionează totul. Programatorii pierd scuza de a spune că o anumită problemă apare nu din vina lor, ci datorită restricțiilor pe care le au limbajele de programare: Limbajul ASSIRIS permite orice prelucrare cu orice operanzi și permite obținerea de rezultate corecte și complete, dacă programatorul a ajuns la nivelul de a-și gestiona bine resursele cu care lucrează.
În limbajul ASSIRIS există mai multe moduri de structurare a instrucțiunilor și programatorul va alege exact acel tip de instrucțiune care se potrivește problemei pe care el dorește s-o rezolve. Există instrucțiuni de tip MM, RM, RR (R - Registru, M - Memorie) și programatorul este ajutat încă de la definirea instrucțiunilor să aleagă tipul de instrucțiune adecvat. Experiența arată că cei mai mulți dintre programatori respectă regulile de programare. Programatorii adevărați aprofundează modurile de adresare și își dau seama care este momentul în care să lucreze folosind adresarea indexată, adresarea indirectă sau adresarea indirectă indexată.
Nu am făcut referire la adresarea directă și la adresarea imediată, nu pentru că ar fi neinteresante, dar am văzut situații nefericite ale utilizării acestor moduri și secvențele de program rezultate erau puerile, ridicole, imposibile, primitive și de neacceptat. Ca să dau un exemplu, mă refer la inițializarea unei matrici cu zero și folosirea unui șir de instrucțiuni identice, pe care din jenă nu-l voi scrie aici. În cartea pe care o analizez aici și acum, explicațiile și exemplele sunt edificatoare, iar reprezentările grafice lămuresc cu precizie matematică aproape la nivel de bit cum stau lucrurile, pentru fiecare structură internă a instrucțiunii analizate.
Programatorul ASSIRIS știe să lucreze pe imaginea memoriei tipărite pe coloane cu cifre în baza 16 și pentru el fiecare bit sau grup de biți are o semnificație clară, ca bază de explicație riguroasă a fiecărui pas din execuția programului scris.
Numai programatorii de asamblare sunt cei care știu să scrie cărți de programare în asamblare. Zic.
Programarea în limbaj de asamblare nu este la îndemâna oricui, căci complexitatea subiectului necesită calități intelectuale deosebite din partea programatorului de asamblare. Pentru programatorul ASSIRIS conținutul zonei de memorie este interpretat cum își dorește el, lungimea zonei de memorie este aceea pe care dorește el s-o aibă la dispoziție, iar mitul programării fără salturi necondiționate este spulberat din moment ce a ajunge la o instrucțiune, alta decât instrucțiunea următoare din secvență, înseamnă a adăuga la un registru o deplasare; este echivalent cu ceea ce execută mult hulita instrucțiune GO TO din limbajele algoritmice FORTRAN, COBOL, ALGOL sau BRU din limbajul de asamblare.
Un programator adevărat de ASSIRIS este acela care, atunci când scrie programe, are în față o carte în care instrucțiunile, scrise în ordine alfabetică, sunt explicate în detaliu, ca semnificație, ca tipuri de adresare, ca număr de cicluri mașină și ca poziționare a indicatorilor de condiție.
Dacă vorbim de mecanisme implementate în limbajul ASSIRIS, trebuie neapărat să vorbim despre modurile de adresare, căci acestea ne ajută să operăm cu structuri de date, să alocăm memorie, să apelăm subprograme și să lucrăm cu segmente așa cum ne dorim, pentru a demonstra că tot ceea ce facem este ceea ce trebuie în raport cu un criteriu de eficiență pe care l-am stabilit.
Cartea scrisă de cei trei autori Emil MUNTEANU, Viorel COSTEA și Mircu MITROV este o carte valoroasă, pentru că ei erau la acea vreme excelenți programatori și omul când știe bine meserie, dacă depune un pic de efort, își prezintă cunoștințele exact așa cum trebuie, pe înțelesul celor care doresc la rândul lor să devină meseriași. Textele sursă sunt autodocumentate cu comentarii concise, bine definite, delimitate la început prin asteriscuri.
La pagina 325 se află Bibliografia formată din 8 titluri, din care 5 sunt documentații de la ITC, două sunt manuale pentru limbajul ASSIRIS care se refereau la calculatorul franțuzesc IRIS 50 și o carte se referea la calculatorul FELIX C-256 publicată la Editura TEHNICĂ din București în anul 1974, scrisă de un colectiv coordonat de Vasile BALTAC. Am apreciat că bibliografia nu conținea documente de partid, așa cum din slugărnicie făceau mulți autori, deși domeniile lor nu aveau nicio legătură cu acele referințe politice introduse forțat în bibliografie.
Cartea are 4 anexe:
Anexa 1 - Tabelul mnemonicelor limbajului ASSIRIS dispuse în ordine alfabetică. Tabelul are 5 coloane cu mnemonica, sintaxa instrucțiunii, codul instrucțiunii, timpul de execuție și tipul de instrucțiune.
Anexa 2 - Coduri de reprezentare a informației EBCDIC pe 8 biți.
Anexa 3 - Formatul zonei de memorie a informațiilor generale.
Anexa 4 - Opțiunile cartelei COMPILE pentru ASSIRIS.
La diferență de un an, adică în anul 1977, echipa formată din Valer ROȘCA, Gelu APOSTOL, Ion Gh. ROȘCA, din care am făcut și eu parte, a scris un curs de ASSIRIS destinat studenților Secției de Informatică Economică și știu cât de greu se scrie o astfel de carte, mai ales dacă se dorește să atingă acele elemente de detaliu care fac diferența între programatorul oarecare și programatorul care scrie programe în limbaje de asamblare și are posibilitatea să facă orice cu orice, căci limbajul de asamblare îi dă această posibilitate. Programatorul în limbaj de asamblare interpretează un șir de biți cum are el nevoie.
Același șir de biți este pentru el șir de caractere sau reprezentare zecimal despachetată sau număr în virgulă mobilă sau orice altceva, după cum nevoile de prelucrare îi dictează. Când am zis cuiva că un program este o structură de date, respectivul s-a uitat la mine chiorâș, dar el nu știa să programeze în limbaj de asamblare unde structura de date este o convenție și totul e interpretat în funcție de context.
Cartea a inspirat derularea activităților în domenii importante ale tehnicii de calcul și în mediul academic. La capitolul al V-lea din carte sunt programe care lucrează cu texte sursă ASSIRIS, COBOL și FORTRAN. După apariția cărții, la disciplina de Limbaje de programare a fost introdusă finalizarea prin susținerea unui proiect complex în care studentul scria un program apelator într-un limbaj de programare la alegere și apela două subprograme în alte limbaje de programare, tot așa la alegere, cu condiția să fie folosite cele trei limbaje. Îmi amintesc că un student a obținut nota 9 (nouă) la acest proiect pentru că textul sursă ASSIRIS nu avea un nivel de complexitate adecvat. I s-a spus acest lucru. La susținerea lucrării de diplomă, actuala lucrare de licență, studentul a venit cu un program de mare complexitate, scris exclusiv folosind limbajul ASSIRIS. El s-a ambiționat să-mi demonstreze că a devenit un excelent programator ASSIRIS și a reușit. Peste ani l-am întâlnit pe studentul respectiv, acum absolvent, care lucra într-un centru de calcul foarte mare din București și mi-a spus că a fost angajat acolo pentru că știa foarte bine să lucreze în ASSIRIS, căci la acel centru de calcul trebuiau efectuate conversii de date aflate pe suporturi tehnice vechi, iar programele de conversie la acea vreme necesitau acces la șiruri de biți și niciun limbaj de programare nu avea instrucțiuni pentru așa ceva, cum au limbajele C++ sau PYTHON.
Cine are curiozitatea să citească această carte, cunoscând limbajul de asamblare folosit în ziua de azi, va vedea că detaliile explicate de autori sunt de mare actualitate și în ziua de azi.
În opinia mea, cartea lui Emil MUNTEANU, Viorel COSTEA și Mircu MITROV de programare în ASSIRIS este o capodoperă și faptul că s-a tipărit într-un tiraj de 9150 + 10 + 70 de exemplare este dovada că numărul de programatori în limbaj de asamblare era rezonabil, număr care azi este în scădere alarmantă, datorită faptului că limbajele de programare moderne au preluat operații specifice limbajelor de asamblare și dau acces lejer la toate resursele unui calculator, fără opreliști și fără efortul programatorului de a-și gestiona resursele, căci bibliotecile și compilatoarele au rolurile lor în a-l asista pe programator, iar componentele de inteligență artificială sunt de mare ajutor programatorilor din ziua de azi, chiar dacă unii au pretenții că scriu doar secvențe originale.
Acum mulți ani, m-am nimerit în sala unde profesorul Emil MUNTEANU era omagiat de colegii săi la vârsta de 70 de ani. Când am dat mâna cu el, i-am vorbit despre cartea aceasta de programare în ASSIRIS și i-am zis că a fost Biblia pentru programatorii adevărați. Era un adevăr și sunt sigur că această confirmare venită de la un tip din ASE București l-a bucurat.

(20 iunie 2026, Bad Füssing, Germania)

revenire