Skip to main content

Teodor Rus - Contribuția la volumul ITC-50: „Începutul civilizației calculatoarelor în România”

· 35 minute
Teodor Rus

În lucrarea „Un institut pentru istorie. Semicentenarul Institutului pentru Tehnica de Calcul (1968-2018)”, publicată în anul 2018 la editura Excel XXI Books, Teodor Rus a contribuit un capitol intitulat Începutul civilizației calculatoarelor în România.


Șef de laborator ITC Cluj Napoca

Anul 1960 a rămas adânc întipărit în memoria mea prin multe evenimente unice. Este anul terminării facultății, anul angajării în primul serviciu și anul căsătoriei mele cu Elena. Primul meu serviciu a fost de Cercetător Stagiar la Institutul de Calcul al Academiei RSR Filiala Cluj. Directorul Institutului de Calcul era Academicianul Tiberiu Popoviciu, pe care-l știam din facultate ca Profesorul Tiberiu Popoviciu, șeful catedrei de analiză. Institutul era locat într-o vilă minunată pe Strada Republicii la Nr. 37. Funcțional, Institutul era împărțit pe sectoare, eu fiind repartizat la sectorul de Calcul Numeric condus de Conferențiar Rado Francisc. Prima persoană pe care am întâlnit-o în calitatea mea de membru al Sectorului de Calcul Numeric a fost Emil Munteanu, care era cercetător la Institutul de Calcul și membru al sectorului de Calcul Numeric. Emil era embrionul echipei de automatizare a calculului, iar eu am devenit membru al acestei echipe, unde am rămas până în anul 1968 când echipa de automatizare a calculului a Institutului de Calcul Cluj s-a transformat în „Filiala Cluj a Institutului de Tehnică de Calcul, ITC București”.

MARICA

Problema fundamentală care constituia obiectul nostru de studiu era sugerată de Acad. Popoviciu, care, sfidând politica socialistă, îndrăznise să aducă în institut termenul „capitalist” de cibernetică, astfel provocându-ne să înțelegem cum se poate automatiza calculul. Și firește aceasta însemna, înainte de toate, construirea unor automate care ar putea face calcule complicate cu intervenție umană minimă. Exemple de astfel de calcule citate de Acad. Popoviciu erau rezolvarea ecuațiilor, calcularea valorii funcțiilor, calcularea valorii numerice a integralelor definite etc. Manfred Rosman, un alt cercetător al Institutului de Calcul care făcea parte din echipa de automatizare a calculului, inventase pe MARICA (Mașina Automată cu Relee a Institutului de Calcul al Academiei), care putea face adunări și scăderi cu ajutorul releelor automate. MARICA consta din două rânduri de relee care serveau drept registre pentru intrarea datelor operației de executat, un rând de relee unde se acumula rezultatul operației și un comutator cu două poziții marcate de + (adunare) și - (scădere) respective, cu care se activa operația de executat.

Explicând importanța mașinii automate MARICA în cadrul problemei pe care trebuia s-o rezolvăm noi, Popoviciu a observat că Pascal și Leibnitz au formulat problema automatizării calculului în termeni matematici. Cercetătorii universităților din Anglia, Germania și America construiseră deja mașini de calcul de care se foloseau cu succes în rezolvarea unor probleme complicate. Turing (în Anglia) folosise mașini electronice de calcul pentru dezlegarea codurilor secrete germane în timpul războiului al II-lea mondial, iar armata americană folosea mașinile de calcul curent la calcularea traiectoriei proiectilelor în timpul tirurilor de artilerie. Dar eu nu știam nimic despre astfel de aventuri. Emil, în schimb, putea face calcule cu MARICA și, mai mult, el putea face programe pentru CIFA (Calculatorul Institutului de Fizică Atomică) care era recent construit de Victor Toma și alți cercetători ai Institutului de Fizică Atomică din București, în timp ce eu nici nu întâlnisem încă cuvântul „program”. Nu-mi amintesc să fi fost expus la structura calculatorului CIFA. Îmi amintesc doar că CIFA a fost primul calculator pentru care am făcut, împreună cu Emil, un program pe care l-am trimis la București, la CIFA, pentru a fi executat de calculator. Nu mai știu ce anume făcea acel program, dar știu că problema cea mai grea de rezolvat era să construim un exemplu de calcul, care trebuia să fie folosit de cercetătorii de la CIFA pentru a determina dacă programul nostru era sau nu corect. Comparând utilizarea lui MARICA cu utilizarea lui CIFA, putem observa că pe când MARICA executa o singură operație, CIFA executa un program (un șir de instrucțiuni), care reprezenta soluția problemei.

Discuțiile noastre despre MARICA și CIFA din timpul zilei se continuau seara la o partidă de poker. Aceste două jucării, deși simple, ilustrau minunat problema automatizării calculului. Mașina de calcul trebuia să aibă trei componente: memorie, dispozitiv de control și suporturi de informație. Metoda de rezolvare a problemei (mai târziu numită algoritm) trebuia reprezentată cu ajutorul unui program, care era un șir de instrucțiuni pe care dispozitivul de control putea să le execute. Dificultățile principale în folosirea unei astfel de mașini erau clare: codificarea operațiilor executate de mașină ca numere binare numite instrucțiuni, introducerea datelor codificate în regiștrii mașinii și culegerea rezultatului transformat în limbajul utilizatorului.

DACICC-1

Deși accesul nostru la informație era limitat numai la ceea ce se publica în limba română și în limba rusă, lărgirea colectivului de automatizare a calculului cu Liviu Negrescu, Gheorghe Farkaș, Mircea Bocu, Bruno Azzola și mai târziu alții, împreună cu un entuziasm greu de explicat acum, ne-a condus în perioada 1960-1963 la proiectarea și construirea lui DACICC-1 (Dispozitiv Automat de Calcul al Institutului de Calcul Cluj). Acest entuziasm era cumva o caracteristică a vremii, fiindcă în același timp cercetătorii Lowenfeld, Kaufmann, Baltac și alții, de la Institutul Politehnic din Timișoara, reușiseră să construiască calculatorul MECIPT (Mașina Electronică de Calcul a Institutului Politehnic, Timișoara). Deci, în anul 1963, în România erau deja trei calculatoare electronice, CIFA, MECIPT, DACICC-1, construite de către cercetătorii români. Experiența automatizării calculului obținută prin construirea și folosirea acestor calculatoare la soluționarea unor probleme practice puse în fața industriei din România la acel timp a fost cărămida pe care s-a construit mai târziu industria electronică și digitală din România.

DACICC-1 era un calculator modern, constituit din trei componente: o memorie pe inele de ferită, unde era memorat programul, un tambur magnetic care servea de memorie pentru date și un dispozitiv de calcul, DC. DC era creierul lui DACICC-1 și consta dintr-un registru numit program-counter (PC) unde se memora adresa din memorie unde era operația din program care urma să se execute, un registru numit instruction-register (IR) unde se memora instrucțiunea a cărei adresă era în PC, și regiștrii aritmetici, unde se aduceau datele operației codificate în IR. Acești regiștrii erau folosiți de circuite logice care transformau datele înregistrate în ei în rezultatul operației reprezentate de conținutul registrului IR. Interacțiunea mașinii cu utilizatorul se făcea cu ajutorul unui panou de comandă, constituit din butoane asociate cu beculețe pe care se înregistra informația în binar prin apăsarea butoanelor. Principalele componente ale panoului de comandă erau beculețele care reprezentau PC, beculețele care reprezentau IR și un beculeț care reprezenta butonul numit Start. Programul consta dintr-o succesiune de numere binare reprezentând instrucțiile lui DACICC-1. Folosirea mașinii pentru rezolvarea unei probleme consta din construirea succesiunii de instrucțiuni care codifica soluția problemei de rezolvat, care apoi se introducea, cu mâna, în memoria calculatorului. Operația principală executată de calculator era „executarea instrucțiunilor calculatorului”. Fiindcă această operație este proprie calculatorului, adică ea nu este o operație de calcul obișnuită, execuția instrucțiunilor calculatorului era cel mai greu de explicat. Matematic, această operație este o operație de compunere a celorlalte operații. Ea poate fi descrisă astfel:

  1. La lansarea ei, circuitele electronice ale DC aduc in IR instrucțiunea a cărei adresă este în PC;
  2. DC analizează porțiunea lui IR care reprezintă codul operației. Dacă acest cod nu este „stop”, DC analizează celelalte componente ale instrucțiunii și aduce operanzii in regiștrii aritmetici destinați lor după care execută operația desemnata de cod;
  3. DC determina adresa următoarei operații de executat și o încarcă în PC, după care repetă acțiunea (2). La acea vreme, următoarea operație de executat era implicit memorată în următoarea adresă a memoriei, adică DC executa acțiunea PC := PC + 1. De asemenea, instrucțiunea din IR poate reprezenta o operație de „salt” care indică adresa următoarea operație de executat, adică DC executa acțiunea PC := Adresa(IR);
  4. Dacă codul operației curente este stop, programul este terminat si mașina se oprește.

Execuția programului constă deci din înregistrarea in PC a adresei (binare) din memorie unde este memorată prima instrucțiune de executat si apăsarea butonului Start. La apăsarea butonului Start, DC executa acțiunile (1), (2), (3) după cum urmează:

  1. DC încarcă IR cu instrucțiunea a cărei adresa este în PC;
  2. Daca codul (IR) nu este Stop, DC execută operația din IR după care încarcă PC cu adresa următoarei operații de executat și repetă executarea acțiunii (1);
  3. Daca codul (IR) este Stop, mașina se oprește și execuția programului este terminată.

Pentru rezolvarea unor probleme cu calculatoarele CIFA, MECIPT, sau DACICC-1, soluția problemei trebuia transformată în program, care apoi se introducea în memoria calculatorului, iar adresa din memorie unde era memorată prima instrucțiune a programului se introducea cu mâna în PC, după care se apăsa butonul Start. Protocolul de utilizare al calculatorului era diferit la cele trei calculatoare. Diferența era „programul”. Nu-mi mai aduc bine aminte cum era programul la CIFA, îmi amintesc însă că greutatea consta în transformarea soluției în program și atașarea la program a unui exemplu numeric, care trebuia să fie un model exact al felului în care se executau instrucțiunile calculatorului. DACICC-1 și MECIPT aveau instrucțiunile cu o adresă, adică toate operațiile executate de mașină trebuiau codificate sub forma Cod Adresă, unde codul era un număr binar reprezentând operația de executat, iar Adresa era un alt număr binar reprezentând operandul operației sau adresa din memorie unde era alocat operandul. Toate operațiile erau binare, adică cu două argumente, unde primul argument era numărul dintr-un registru aritmetic specificat de codul instrucțiunii, iar al doilea operand era într-o adresă din memorie. De exemplu, dacă se dorea să se calculeze valoarea expresiei x + y pentru valorile x = 8, y = 9 și să se lase rezultatul în registrul R, a cărui adresă în binar era 001, se proceda astfel:

  • se alocau variabilele x, y la adresele din memorie, să zicem 100, 101;

  • se traduceau în binar numerele 8 și 9, obținând-se 1000, 1001 și se introduceau în memorie la adresele binare 100, 101;

  • presupunând că codul operațiilor Load este 001, Add este 010, Print este 011 și stop este 000, se scriau instrucțiunile:

    • Load R, 100; în binar 001 001 100
    • Add R, 101; în binar 010 001 101
    • Print R; în binar 011 001
    • Stop; în binar 000
  • Se introduceau instrucțiunile:

    001 001 100;
    010 001 101;
    011 001;
    000

    în adresele de memorie să zicem 200, 201, 202, 203.

  • Se încărca PC cu 200 (adresa primei instrucțiuni) și se apăsa butonul Start.

Se poate vedea din acest exemplu cât de laborioasă era munca de pregătire a unui program, care cu greu putea fi făcută fără greșeală. De aceea CIFA cerea un exemplu numeric care să mimeze complet activitatea de programare și de obținere a rezultatului prin executarea programului.

Pentru simplificarea activității de programare, DACICC-1 și MECIPT erau prevăzute cu un pseudo-limbaj mașină, în care codurile operațiilor erau simbolice, adică programatorul trebuia să știe că adunarea este Add, înmulțirea este Mul etc., iar adresele regiștrilor și locațiilor de memorie se lăsau să fie numere întregi. Acest limbaj era numit limbaj de asamblare și putea fi ușor transformat în limbaj mașină de către un program simplu care citea instrucțiunile programului scris în limbaj de asamblare și le plasa la adresele din memorie specificate prin apăsarea butoanelor la pupitrul de comandă.

DACICC-1 aducea contribuții însemnate la soluționarea problemelor ridicate de folosirea lui, constând din următoarele componente:

  • Memorie pe inele de ferită, formată din 1024 cuvinte de memorie de lungime 32 biți (inele) fiecare. Fiecare cuvânt putea memora două instrucțiuni DACICC-1 sau un număr binar (întreg, fix, sau flotant). Instrucțiunile erau configurații binare de 15 poziții binare, în care primele 5 poziții binare reprezentau codul operației, următoarele 10 erau folosite pentru specificarea adresei și a metodei de calculare a adresei operandului. Metoda de calcul a adresei operandului, numită adresare, era integrată în circuitele de executare a instrucțiunilor și consta din:
    • adresare imediată, operandul era pe următoarele 10 poziții ale instrucțiunii;
    • adresare directă, adresa operandului era pe următoarele 10 poziții ale instrucțiunii;
    • adresare indirectă, adresa operandului se găsea în adresa de pe următoarele 10 poziții ale instrucțiunii; o adresare modificată, în care regiștrii mașini se puteau folosi la extinderea domeniului de adrese calculate de adresările precedente.
  • Dispozitiv de control, care executa 128 instrucțiuni DACICC-1 ce cuprindeau: operațiile aritmetice cu numere întregi, numere reprezentate binar în virgulă fixă, și numere reprezentate binar în virgulă mobilă (flotante), operații de comparare, operații de salt, operații logice, operații de deplasare a operanzilor la stânga (înmulțire cu 2) și la dreapta înmulțire cu 1/2, etc.
  • Perforator de bandă, pentru înregistrarea programului și a datelor pe bandă perforată, cititor de bandă perforată, pentru introducerea programului și a datelor în memorie, și mașina de scris (imprimanta), pentru tipărirea rezultatelor.

Programul se scria în limbajul de asamblare, iar datele se perforau pe bandă și se citeau de către program prin lansarea unor instrucțiuni de Input/Output.

Pentru folosirea lui DACICC-1 programul se scria în limbaj de asamblare, se perfora pe bandă, care se citea de către cititorul de bandă în memorie, unde un asamblor îl transforma în instrucțiuni și date binare. Odată programul introdus în memorie, acesta se executa prin înscrierea adresei de memorie care conținea prima instrucțiune în PC și prin apăsarea butonului Start. Rezultatele se perforau pe bandă, care se putea citi în memorie, sau se tipăreau cu o mașină de scris atașată la dispozitivul de control.

DACICC-1 s-a folosit cu succes între anii 1962-1966 la rezolvarea unor probleme economice importante la vremea aceea, cum ar fi: stabilirea unui plan de fabricare a zahărului din sfecla de zahăr, care maximiza cantitatea de zahăr produsă și minimiza costul de producție, stabilirea traficului pe calea ferată pe distanța Brașov-Predeal, care optimiza numărul de locomotive folosite minimizând costul, implementarea metodei simplex de rezolvare a problemelor de programare lineară și folosirea programului rezultat la stabilirea rațiilor de hrănire a porcilor pentru crescătoriile de porci din Bărăgan, și altele. Unele din aceste programe (cum era programul folosit la fabricarea zahărului și programul care implementa metoda simplex) erau premiere mondiale, dar fiindcă noi nu aveam acces la literatura apuseană, nu știam acest lucru.

Printre evenimentele care mi-au rămas în memorie din acest interval sunt plecarea lui Emil Munteanu la aspirantură (doctorat) în URSS în 1962 (cred), înscrierea mea la doctorat în 1962 și nașterea Danielei, în 18 iunie 1963. În iulie 1963 am plecat la Timișoara ca să programez la MECIPT sistemul de ecuații integrale, care rezolva problema fabricării zahărului. Această problemă era adusă la institut de către doamna Moldovan, amanta Profesorului Popoviciu, cu care mai târziu s-a căsătorit. Importanța rezolvării acestei probleme era subliniată de faptul că, conform doamnei Moldovan, se acorda premiul de stat pentru un program care soluționa această problemă, și firește aceasta ar fi însemnat o îmbunătățire esențială a bugetului familiei noastre, dacă eu aș fi soluționat-o. De aceea, Elena a fost de acord cu plecarea mea la Timișoara și a aranjat ca bunica ei din Buia să vină și s-o ajute cu îngrijirea Danielei. Lucrând zi și noapte la Timișoara, împreună cu Liviu Negrescu și Ioan Păvăloiu, am reușit să transformăm sistemul de ecuații integrale, care simulau procesul de fabricare a zahărului, în program MECIPT. Problema era că acest sistem producea un tabel cu linii și coloane variabile, care reprezenta procesul de fabricare a zahărului din sfecla de zahăr culeasă la diferite intervale, din diferite plantații distribuite în Transilvania. MECIPT nu avea un program care să poată produce acest tabel. Îmi aduc aminte că Farkas, un programator de la MECIPT, ne descurajase cu privire la abilitatea noastră de a construi un astfel de program. Dar, entuziasmul nostru a învins și în următoarele două săptămâni tabelele, reprezentând procesul de fabricare a zahărului din sfecla de zahăr, erau pe drum spre Cluj. Din păcate, premiul de stat nu ne-a fost acordat pentru soluționarea acestei probleme, cred din vina mea, fiindcă la propunerea lui Popoviciu, eu am spus că doamna Moldovan a adus numai problema, ea n-a contribuit la soluționarea ei. Atunci încă nu știam că dacă doamna Moldovan n-a rezolvat problema, atunci nimeni n-a rezolvat-o și deci trebuia să găsesc altă soluție pentru întregirea bugetului familiei. Și, firește, soluții erau cu duiumul. Eram încă din studenție recunoscut ca un meditator de matematică foarte iscusit și orele de matematică erau destul de scumpe atunci. Dar și DACICC-1 oferea posibilități. Astfel, un doctorand din Bărăgan (nu-mi mai amintesc numele lui) dorea să-i rezolvăm probleme de programare liniară care produceau ca soluții rețete de hrană a porcilor. Așa s-a născut probabil primul program DACICC-1 și cred că nu numai a lui DACICC-1, al metodei simplex de rezolvare a problemelor de programare lineară. Din păcate și acest „business” a fost până la urmă un eșec, fiindcă odată ce am oferit soluțiile, banii au încetat să vină. Acum îmi aduc aminte de o altă aventură cu programarea la DACICC-1. În anii 1963-1965 cred, Prof. Rîpeanu de la Institutul Politehnic din Cluj își scria teza de aspirantură (doctorat) și avea nevoie de calcule pentru finalizarea ei. Ei bine, cu ajutorul unor relații pe care el le avea cu Acu, contabilul Filialei Cluj a Academiei, pe care eu îl știam bine, a reușit să achiziționeze un contract cu Academia RSR Filiala Cluj pentru o sumă destul de mare, din care mie mi s-ar fi cuvenit 40.000 lei (care era enormă la acea vreme când salariul meu pe lună era în jur de 800 lei). De data aceasta problema nu era programul, problema era că formulele lui Rîpeanu erau scrise pe caiete cu 100 file, unde formula începea pe prima filă a caietului și se termina pe ultima, sau într-un caiet atașat. După luni de lucru am reușit să rup formulele lui Rîpeanu în secvențe mânuibile și verificabile și le-am transformat în program. Dar, având deja experiența cu inginerul din Bărăgan, nu m-am grăbit să-i dau rezultatul. Din păcate, după câteva luni de așteptare, Acu mi-a comunicat că Institutul Politehnic nu mai are bani pentru contractul cu Rîpeanu. M-am adresat Acad. Popoviciu, care mi-a spus că n-are rost să țin rezultatele, fiindcă n-avem ce să facem cu ele. Deci, i-am dat rezultatele lui Rîpeanu. N-am fost invitat la susținerea tezei lui Rîpeanu, am aflat mai târziu că la întrebarea cine i-a făcut calculele, Rîpeanu a răspuns „calculele au fost făcute de IBM”. Gustul amar al colaborării cu doamna Moldovan și al contractului cu Rîpeanu nu mi-a dispărut încă.

Primele încercări

Între anii 1962-1966 febra calculatoarelor a cuprins întreaga cercetare din România. Universitățile începeau să-și organizeze cercetarea legată de calculatoare în Centre de Calcul, Institutele Politehnice începuseră să ofere cursuri de calculatoare (proiectare, construire, folosire). Se organizau colocvii interne și internaționale, se trimiteau delegații în URSS, Europa, SUA, etc. pentru a testa la fața locului evoluția calculatoarelor. Prima lucrare științifică pe care eu am realizat-o a fost „Programarea Calculului Valorii Polinoamelor de Interpolare” pe care am prezentat-o la un colocviu ținut la Institutul Politehnic din Cluj. Academicianul Grigore Moisil era în primul rând în sala de prezentare și mie mi se părea că doarme. Dar la un comentariu negativ al Prof. Stancu, care se întorsese de curând din SUA, Moisil s-a trezit, m-a felicitat pentru prezentare și a făcut un comentariu pe care acum l-aș putea reda sub forma: „nu mă mir că universitarii nu iubesc calculatoarele, dacă nici matematicienii nu reușesc să le înțeleagă”.

Anii 1962-1965 au fost deosebit de bogați în rezultate. În acest timp am susținut o mulțime de examene pentru doctorat, am învățat limba engleză, fără profesor, am început să comunic cu cercetători care făceau cercetări similare, folosind limba engleză (W.S. Hatcher, în Neuchâtel, Elveția, Rattray în Queen Mary College, Londra). Am publicat o mulțime de articole în revistele Academiei Române și am început să elaborez teoria algebrică a limbajelor de programare. În anul 1964, W.S. Hatcher a elaborat un plan de fundamentare matematică a științei calculatoarelor sub egida Institutului Internațional de Matematică, urmând să se organizeze un Institut Internațional sub egida UNESCO, la Neuchâtel, unde embrionul trebuia să fie Bill Lowvere - algebrist, W. Hatcher - logician, și Teodor Rus - calculatoare. Din păcate eu n-am primit aprobarea de la Institut (fiindcă, conform doamnei Moldovan, puteam face matematică și după cuptor, în Cluj) și, după cum am aflat mai târziu, inițiativa nu s-a mai implementat. Primul meu contact cu cercetătorii din Apus a fost în august 1968, când am participat la școala de vară organizată de CIME (o organizație italiană) la Varena, Italia. Participarea mea la această manifestare a fost suportată de CIME, care mi-a acordat o bursă de participare la școala de vară de la Varena, unde se discutau probleme de logică matematică și calculatoare. Acolo l-am întâlnit pe W. Lovwere, renumit pentru teoria categoriilor și pe Caracciolo di Forino, care era unul dintre fondatorii organizației IFIP și care m-a invitat să țin conferințe la Florența, unde el era profesor.

În 1962 (cred) eu am fost trimis pentru o lună de către Academia RSR la un schimb de experiență la Universitatea Lomonosov din Moscova. Acolo l-am întâlnit pe A. A. Markov și am asistat la seminariile de Algoritmi Normali pe care le ținea Nagornâi, un asistent a lui Markov, care mai târziu a publicat în Lecture Notes un volum dedicat acestui seminar. Așa am început să înțeleg problemele teoretice de calcul, cu funcțiile recursive și problemele legate de calculabilitate și mașini Turing. La Moscova am încercat să fac programe pentru Strela, un calculator realizat sub conducerea lui Ershov, dar pe Ershov nu l-am putut întâlni. N-am înțeles niciodată de ce Ershov nu era accesibil. În sfârșit, învățarea limbii ruse și experiența cu Algoritmii Normali a lui Markov mi-au folosit enorm la formularea subiectului tezei mele de candidat în științe (doctorat), Rezolvarea problemelor ne-numerice cu ajutorul calculatorului, pe care am susținut-o în anul 1965. În anul 1966 mi s-a decernat titlul de Candidat în Științe (Doctor în Științe) de către Academia RSR, și deci am câștigat 300 lei/lunar la salariu, ceea ce era important. Dar atmosfera în Institut era din ce în ce mai ostilă mie. Popoviciu divorțase și se căsătorise cu doamna Moldovan, aceasta devenind doamna Popoviciu. Deși Popoviciu și Moldovan m-au folosit la procesul de divorț al lui Popoviciu, doamna Popoviciu, care conducea de fapt acum institutul, mă punea deoparte de câte ori putea, atât la promovări, cât și la alte evenimente unde eu eram îndreptățit să particip. Numai după ce Moisil i-a spus lui Popoviciu, „dacă nu-l programezi tu să-și susțină teza, atunci o să-l programez eu s-o susțină la mine la București” m-a programat Popoviciu să îmi susțin teza, ai cărei referenți erau Rado, Moisil și Călugăreanu. Dar situația mea în Institut nu s-a schimbat nici măcar după ce Popoviciu și soția lui, doamna Popoviciu, m-au trimis la București cu actele de promovare a doamnei Popoviciu ca Profesor, care trebuiau semnate de Acad. Miron Niculescu, președintele Academiei RSR, care mă aprecia.

DACICC-200

Succesele lui DACICC-1 nu au trecut neobservate. Institutul de Cercetări Agricole al Academiei RSR ne-a angajat să producem o mașină și mai bună pentru rezolvarea problemelor generate de agricultura românească. Așa s-a născut DACICC-200 în anii 1965-1968, care era practic una din mașinile cele mai avansate la acea vreme, putând concura cu calculatoarele produse de industria electronică din Apus. DACICC-200 era prevăzut cu memorie modulară pe ferite de 4096 locații modulul, de 24 poziții binare fiecare. DC al calculatorului era dotat cu un sistem de întreruperi care facilita executarea programului în sistem utilizator sau în sistem monitor. La apariția unei întreruperi, PC-ul se încărca cu o locație specială în care se găsea prima instrucțiune a monitorului, care prelua controlul memorizând locația din program care generase întreruperea. La terminarea activității monitorului, care înseamnă că întreruperea a fost complet tratată, monitorul refăcea starea programului întrerupt și îl continua de la instrucțiunea care a cauzat întreruperea. De asemenea, calculatorul era dotat cu un limbaj de asamblare mult mai evoluat, Limbajul PAS, pe care l-am definit eu și a cărui asamblor l-am programat ajutat de Hanes Stein și Viorel Costea, și un compilator Fortran-IV implementat de Liviu Negrescu. Operațiile de intrare și de ieșire a datelor erau controlate de un sistem de operare avansat. Nu-mi aduc aminte dacă DACICC-200 era prevăzut cu sistem de protecție, dar sistemul de întreruperi facilita cu siguranță implementarea unui sistem de protecție primitiv, constând din împărțirea instrucțiunilor în privilegiate și neprivilegiate.

Construcția lui DACICC-200 a început în 1965 cu organizarea echipei de automatizare a calculului în trei subechipe: subechipa de hardware, subechipa de software, și subechipa desemnată ca intermediari, care făcea legătura între hardiști și softiști. Hardiștii (Farkas, Bocu, Juhas, Azzola) au venit cu o structură de calculator apropiată de structura lui DACICC-1, care a evoluat la o structură similară cu PDP-11, deși PDP încă nu fusese elaborat și deci nu cunoșteau structura acestui calculator. Softiștii (Munteanu, Rus, Negrescu) trebuiau să elaboreze limbajele de programare ale calculatorului, sistemul de operare, și să instruiască o echipă de utilizatori pe care Institutul de Cercetări Agricole trebuia să-i trimită la Cluj în acest scop. Echipa de intermediari (Farkas, Bocu, Munteanu, Rus, Negrescu) era deci formată din membri subechipelor de soft și hard care discutau sistemul de instrucțiuni al calculatorului, sistemul de input/output și toate detaliile de interacțiune dintre componentele calculatorului. Problema principală era determinată de lipsa documentației. Exista în acea vreme doar cartea lui Ivan Flores, Computer Programming. Nu-mi mai aduc aminte cum am ajuns în posesia acestei cărți, dar știu că am început s-o traduc în română și s-o folosim ca ghid pentru elaborarea sistemului de instrucțiuni și a unui limbaj de programare similar celui descris de Flores. De asemenea, am folosit traducerea mea pentru instruirea echipei de programatori trimisă la Cluj de Institutul de Cercetări Alimentare. Până la urmă îmi aduc aminte că Editura Academiei a publicat traducerea mea (stilizată de cineva care vorbea engleza), dar eu nu mai am nici o copie a acestei traduceri și nici căutând-o printre documentele memorate electronic la Editura Academiei n-am mai găsit-o.

ITC – Filiala Cluj

În anii 1966-1968 în România se aduseseră calculatoare din străinătate, care se confruntau cu cele românești. Îmi aduc aminte de calculatoarele ELLIOT care se instalaseră la Hunedoara, unde Iuliu Satran cu echipa lui reușise să pună pe calculator procesul de laminare a sârmei. De asemenea era un IBM 360 (cred) instalat la centrul de calcul al Universității din București. Aveam deja documentație de ICL și IBM, dar nu aveam acces la informația curentă tipărită în reviste. Aceasta însemna că nu puteam evalua calitatea rezultatului cercetării noastre în contextul oferit de cercetarea similară internațională. Eu însă începusem să fac prezentări de lucrări științifice de programare la diferite conferințe interne, fiindcă la manifestările din exterior nu aveam acces. Dar eram un reviewer activ la Mathematical Review și deci începusem să scriu în engleză. Țările din lagărul sovietic începuseră să-și sincronizeze cercetările de calculatoare și astfel formase grupul „GAMS” (cred) care ținea ședințe anuale. Din păcate, sau poate din fericire, membri la GAMS din partea României nu erau neapărat specialiști în construcția și utilizarea calculatoarelor. Erau mai degrabă aranjamente politice, care făceau ca o anumită persoană să fie un reprezentant român în aceste organizații. În același timp era o mișcare generală în România care trebuia să se termine cu organizarea unui institut național care să unifice cercetările de calculatoare din România. Eu nu eram implicat în aceste mișcări și deci nu-mi aduc aminte de pilonii acestei mișcări. Îmi aduc însă aminte de câteva ședințe ținute la Institutul Politehnic din București, unde persoane care cutreieraseră America și Europa în căutarea unei soluții la problema organizării cercetărilor de calculatoare din România, prezentau observațiile lor din aceste călătorii. Din păcate, documentele pe care le distribuiau erau mai degrabă reviste de sex, care în acea vreme erau complet interzise în România. Important este faptul că la aceste ședințe se discuta doar hardware, nimeni nu punea problema folosirii calculatorului, fiindcă experiența de programare era minimă și era neglijată ca o parte neînsemnată a tehnologiei. Importante atunci erau circuitele integrate, tranzitorii, structura modulară etc.

La congresul mondial de lingvistică ținut la București în 1967, unde am prezentat o lucrare despre recursivitatea limbajelor Context-Liber, l-am cunoscut pe Donald Knuth, care era proaspăt profesor la Stanford, și pe advisor-ul său, Prof. Marcel-Paul Schutzemberger. Schutzemberger era matematician francez și Doctor în Medicină, renumit atât pentru călătoriile lui în lume, cât și pentru cercetările de automate și limbaje formale. Knuth și Schutzemberger erau impresionați de faptul că eu le povesteam cum am început construcția lui DACICC-200, cum am dezvoltat limbajul și asamblorul PAS. Ca urmare Knuth m-a abonat la Rapoartele Tehnice pe care Stanford și MIT le produceau în acea vreme, pe care le-am primit regulat până în anul 1982, când am plecat din țară. Astfel, în anii 1967-1968 eram poate singurul din România în posesia acestor documente de o valoare inestimabilă pentru noi.

Până la urmă s-a stabilit o strategie națională de dezvoltare a unei industrii de calculatoare în România, a cărui promotor principal a fost profesorul Mihai Drăgănescu. S-a înființat un fel de minister condus de dânsul, numit Comisie guvernamentală, care a venit cu soluția unificării cercetărilor de calculatoare din Cluj, Timișoara și București într-un institut național numit „Institutul de Tehnică de Calcul, ITC, București”, iar Generalul Florin Munteanu a fost desemnat ca Directorul ITC București, urmând să aranjeze atașarea colectivelor din Cluj și Timișoara ca Filiale ale acestui institut.

Prima acțiune pe care comisia guvernamentală a luat-o a fost să neglijeze complet cercetările de calculatoare ale colectivelor din România și să cumpere o licență de calculatoare din Franța. Generalul De Gaulle făcuse o vizită în România și era, cred, la curent cu ceea ce puteau face românii în acest domeniu. De asemenea, cred că gândirea Profesorului Drăgănescu era determinată și de lipsa unei industrii care să producă componente de calculator în România și deci era greu de previzionat o dezvoltare proprie care să ducă la o producție industrială.

Pentru Institutul de Calcul al Academiei Filiala Cluj aceasta însemna desființarea grupului de automatizare a calculului și transferarea membrilor lui la ITC Filiala Cluj. Acest lucru nu era o treabă ușoară, fiindcă nu exista un local al ITC Filiala Cluj, iar membrii grupului erau deja angajați în construirea lui DACICC-200.

Profesorul Drăgănescu, împreună cu membri ai noului institut ITC București, au început să facă vizite la Institutul de Calcul din Cluj, luând legătura cu Academicianul Popoviciu și firește discutând cu membri colectivului de automatizare a calculului. Ca urmare a acestor discuții, partea de hardware a grupului nostru a fost automat transferată la ITC- Filiala Cluj, care la început a funcționat în vila institutului de calcul. Unii dintre membrii grupului de automatizare a calculului erau lămuriți de membrii Institutului să nu se transfere la ITC întrucât acesta era o aventură nouă și nu știam ce se va întâmpla în viitor. Dar Emil Munteanu a fost numit Șeful ITC-Filiala Cluj. Dată fiind poziția mea în Institutul de Calcul, eu am impresia că doamna Popoviciu a folosit ocazia ca să scape de mine, deci am fost pur și simplu angajat la ITC fără multă discuție. ITC Filiala Cluj era formată atunci din două laboratoare, un laborator de hardware, al cărui șef de laborator a fost numit Ing. Gheorghe Farkas, și un laborator de software a cărui șef a fost desemnat Emil Munteanu, fiindcă nu exista o poziție de director pentru ITC Filiala Cluj.

Prima sarcină pe care comisia guvernamentală a atribuit-o la ITC București a fost să asimileze calculatorul francez IRIS-50 sub numele românesc de FELIX C-256. Așa ne-am pomenit în septembrie 1969 cercetători din București, Timișoara, Cluj, expediați la Paris să ne familiarizăm cu calculatoarele produse de CII (Companie Internationale pour l’Informatique). De la Cluj au plecat cred cinci softiști și niciun hardist. Aceasta a fost o mare greșeală, fiindcă în acest fel colectivul din Cluj s-a văzut neglijat și cercetarea de hard, deși cea mai evoluată la acel timp, poate din acest motiv, a fost total neglijată. La Cluj se țeseau curent memorii pe ferite, dar fabrica de memorii s-a făcut la Timișoara. Azzola avea deja experiență de construcție a circuitelor integrate, dar experiența lui o fost complet neglijată. Farkas avea deja rezultate în construcția terminalelor cu intrare de date pe claviatură și afișare pe ecran (display), dar au mai trecut ceva ani până când ITC a ajuns la astfel de cercetări. Colectivul de software a fost mai norocos, fiindcă la Paris Emil Munteanu și Liviu Negrescu au început să se ocupe de COBOL, iar eu am fost repartizat să lucrez în limbaj de asamblare Assiris pentru Generatorul de Sistem al calculatorului IRIS-50. Nu-mi aduc aminte ce anume făceau Vușcan și Nitzki. În orice caz, la întoarcerea din Paris, în aprilie 1970, ITC- Cluj a crescut cu încă un laborator de software, laboratorul 127 dedicat cercetărilor de construcție a compilatoarelor, al cărui șef am fost numit eu. La Paris am venit în contact cu cercetători care se ocupau de Lisp și Prolog, și care mai târziu au câștigat un concurs de dezvoltare a limbajului Ada, destinat cercetărilor NATO. Așa am ajuns în anii 1978-1980 să fiu membru al unei echipe de implementare a sistemului de Input/Output a limbajului Ada. Membrii acestei echipe se întâlneau la Bruxelles de două ori pe an, fiind plătiți de NATO. Vasile Baltac, care îl înlocuise pe Munteanu la conducerea ITC București și ajunsese secretar de stat în Ministerul Construcțiilor de Mașini, îmi facilita participarea la aceste întâlniri. Îmi aduc aminte că diurna, pe care eu o depuneam la o bancă în Bruxelles, era de aprox. 1000 dolari. Cel mai important rezultat al participării mele la aceste cercetări a fost organizarea cercetărilor laboratorului 127 (cred) după modelul sistemului de operare UNIX, sub care trebuia să funcționeze compilatorul Ada la care lucram. Așa am ajuns să programez în limbajul de programare C. Consecința, cartea lui Kernigham și Ritchie, C programming language, Prentice-Hall 1978, în care era scris întregul sistem Unix, a ajuns la ITC Cluj. În 1972 am fost invitat de Prof. Günter Hotz, de la Universitatea din Saarbrucken, Germania, ca Gast Dozent pentru un semestru, unde sarcina mea era să predau un curs de programare și să particip la cercetările de calculatoare și software pe care Hotz le ducea cu o mulțime de doctoranzi. Aceasta a fost o ocazie minunată să învăț limba germană și să mă familiarizez cu cercetările de la Saarbrucken. Îmi aduc aminte acum de asistentul meu Ulrich Sinn, doctorand la Hotz, care la plecare m-a condus până la părinții lui într-un orășel de lângă Saarbrucken. Acolo, în timp ce mă odihneam, l-am văzut pozat ca ofițer german într-un tablou atârnat deasupra fotoliului unde eram eu așezat. Mai târziu (prin 1999 cred) când l-am reîntâlnit pe Hotz în Iowa City cu ocazia unei conferințe AMAST, acesta mi-a spus că nu l-a văzut pe Sinn nici înainte de venirea mea și nici după plecarea mea. Dar Sinn era un student foarte bun cu care eu am colaborat, am scris programe de prelucrare a datelor în Cobol și am publicat o lucrare „An algebraic approach to data organization” în jurnalul BIT. Cu ocazia vizitei mele în Saarbrucken am acceptat o invitație de la Charles Rattray, care era doctorand la Queen Mary College, să-i fac o vizită la Londra, unde l-am întâlnit pe Landin, conducătorul lui de doctorat, renumit pentru cercetările lui de limbaje de programare. Discuțiile cu Landin și Rattray au confirmat importanța tratării algebrice a limbajelor de programare. În anul 1974, folosind experiența de la construcția lui DACICC-200, experiența de programare de la CII din Franța, și experiența didactică și de cercetare din Saarbrucken, am publicat cartea Structuri de Date și Sisteme de Operare, în Editura Academiei RSR. Această carte era o premieră mondială la acea vreme. Traducerea acestei cărți completată cu un capitol privind sistemul MULTICS care se implementa la acea vreme la MIT, a fost publicată de John Willey & Sons sub titlul Data Structures and Operating Systems, 1979. În 1975 am fost invitat de W. S. Hatcher să petrec o lună la departamentul de computer science al Universității Laval din Canada, unde în colaborare cu Hatcher, am scris lucrarea „Contex-Free Algebras”. Consiliul profesoral de la Laval mi-a propus o poziție de profesor. Dar eu nefiind însoțit de Elena și Daniela, le- am spus ca acceptarea acestei oferte ar putea fi făcută numai cu aprobarea oficialităților din țară. Ca urmare, Prof. Pierre Audoin (cred ca el era șeful departamentului de computer science) a făcut o vizită la Cluj în 1977 cu scopul convingerii oficialităților să-mi dea drumul împreună cu Elena și Daniela. Rezultatul a fost însă negativ, deși mai târziu, în 1979, când am ajuns în posesia pașaportului pentru o deplasare ITC în China unde am ținut lecții de Lisp și APL, am observat că în 1977 eu aveam viza pentru plecare în Canada.

În 1980, Charles Rattray era profesor la Stirling University, Stirling, Scoția. Astfel, m-a invitat să petrec trei luni la Stirling să definitivăm cercetările începute încă din 1970. Am plecat la Stirling în iunie 1980 după terminarea cursurilor școlare fiindcă Daniela era elevă, iar Elena era asistentă la Facultatea de Fizică Universității Babeș-Bolyai. Am călătorit cu mașina cumpărată din Germania în 1972, care avea cablul de ambreiaj rupt. Până la Stirling ne-am cheltuit toți banii în Germania ca să reparăm mașina. În Aachen, un atelier de reparat mașini vechi ne-a tapat de toți banii pe care-i aveam și nu ne-a reparat mașina. Așa că a trebuit să mă urc pe vapor și apoi să conduc prin Londra mașina cu ambreiajul rupt. A fost o treabă pe care n-aș mai face-o. Dar am ajuns la Stirling și ne-am instalat într-un apartament universitar în campus. A fost prima dată când mă simțeam liber în lume, cu Elena și Daniela lângă mine. Am visat acest moment de multe ori înainte și mi-am zis, gata, nu mă mai expun la încă o călătorie cu mașina stricată, prin toată Europa. Dar n-a fost să fie așa. După două luni Daniela simțea lipsa prietenilor din Cluj, Elena spunea că nu se poate despărți de Daniela, iar Nicki Orlandea, care era în Michigan, îmi spunea “nu rămâne fără Elena și Daniela”. Așa s-a întâmplat că în septembrie 1980 am fost din nou la Cluj, în apartamentul nostru elegant din Grădinile Mănăștur și cu cercetările de la ITC. Prietenii din Cluj însă îmi spuneau: „tâmpitule, numai tu puteai gândi așa”. Astfel, a trebuit să mai treacă doi ani până când în sfârșit am pus capăt aventurilor din Cluj. Dar am petrecut acești doi ani terminând cartea ”Mecanisme Formale Pentru Specificarea Limbajelor” pe care am predat-o editurii Academiei în iulie 1982 înainte de plecare, care a fost publicată în 1983. Dar eu fiind plecat, n-am corectat șpalturile, și am uitat de ea până de curând (adică după 50 ani) când, scriind aceste amintiri mi-a căzut în mână o copie. De aproximativ două luni o citesc cu pasiune și mă minunez cum am putut eu gândi în anii 1980-1982, când am scris această carte, atât de adânc despre calculatoare și evoluția lor. Din păcate această carte cred că n-a fost citită de nimeni din România după plecarea mea. Socot că ar trebui tradusă și publicată într-o limbă accesibilă lumii, fiindcă sunt în această carte idei care prezic epoca actuală dedicată la „artificial intelligence” și justifică dezvoltarea roboticii arătând că aplicațiile actuale ale calculatoarelor nu sunt decât “the top of the iceberg”.

O problemă deosebită la soluționarea căreia ITC-Filiala Cluj a avut o contribuție esențială a fost crearea liceelor de informatică. Aceste școli ar putea fi exemplul pe care lumea informaticii actuale ar trebui să-l cunoască pentru a vedea cum problema educației tehnicii de calcul a fost rezolvată în România cu atâta succes, încă în anii 1970. În urma multor discuții purtate de Mihai Varia, Consilier în Institutul Central de Informatică, ICI, cu cercetători de la ITC Filiala Cluj (Emil Munteanu și Teodor Rus) și firește cu oficialitățile responsabile din Cluj, Consiliul de Miniștrii a elaborat și emis în 21 Iunie 1971 HCM Nr. 739 prin care s-au înființat primele patru licee de informatică din țară: București, Cluj, Iași și Timișoara. Directorul liceului din Cluj a fost Sever Groze, Conferențiar la Facultatea de Matematică a Universității Babeș-Bolyai. Inspectoratul Școlar Județean Cluj a numit 7 profesori suplinitori pentru disciplinele de cultură generală și cinci profesori atașați pentru disciplinele de specialitate, care dețineau funcția de cercetători la Institutul de Tehnică de Calcul Cluj. Colectivului de profesori astfel constituit i-a revenit sarcina de a elabora primele programe de specialitate și primele manuale de informatică, algoritmi și scheme logice, limbaje de programare, etc., care prin grija Directorului Sever Groze au fost multiplicate în laboratoarele Universității din Cluj și difuzate la cele patru licee proaspăt înființate. Aceste manuale au fost recunoscute câțiva ani ca singurele manuale de specialitate din țară. Autorii acestor manuale au fost Dr. Emil Munteanu, Dr. Teodor Rus, Negrescu Liviu, Vasile Listeș si Teodor Vușcan. Absolvenții acestor licee au fost mulți ani printre câștigătorii competițiilor naționale și internaționale de matematică, fizică, și informatică. Actualmente este greu să vizitezi oricare dintre centrele mondiale de tehnică de calcul sau universitățile mari din Europa și SUA să nu întâlnești absolvenți ai acestor licee ca cercetători sau profesori. Ei de fapt au pus bazele industriei de calculatoare și tehnică de calcul din România.

Emeritus Professor, The University of Iowa
Department of Computer Science
Iowa City, IA 52240, USA
Email: rus@uiowa.edu

Referințe