Thursday, January 25, 2018

Traducerile de informatică

Înainte de 1989 în țara noastră nu existau multe edituri. Cele care existau își duceau activitatea pe bază de plan, unde erau incluse și cărți de informatică. După 1989 au apărut edituri private care publică de toate. A fost o inițiativă a unor privați de a se specializa, dar nu au rezistat. Editura TEORA din București a avut o astfel de orientare. La începuturile anilor de după 1990 această editură a fost de succes pentru că a publicat atât traduceri, cât și cărți scrise de autori români. Apariția Internetului și a cărților și revistelor electronice a schimbat radical fața editurilor de la noi și deci și a editurii TEORA. Acum cine vrea să publice o carte în mai puțin de 150 de exemplare găsește imediat o editură care să facă acest lucru pentru că tehnologia permite acum ceea ce era imposibil acum 30 de ani, adică un tiraj minuscul. Și Editura SIGMA dar și Editura MATRIXROM au publicat cărți valoroase de informatică.
Acum este pe val Editura POLIROM de la Iași care publică lucrări ale profesorilor de la Universitatea Al. I. CUZA, preponderent. Și Editura Economică și Editura ASE au serii de cărți pentru informatică. Multe dintre editurile ambițioase la început, s-au pierdut în timp.
În vremurile de demult Editura Tehnică, Editura DACIA, Editura FACLA, Editura ALBATROS, Editura Academiei RSR, devenită acum Editura Academiei Române, Editura Științifică și Enciclopedică, Editura Didactică și Pedagogică, dar și Editura TRIBUNA publicau pe lângă cărți de literatură sau din alte domenii și cărți de informatică. Unele abordări mai filosofice legate de informație erau publicate de Editura Politică, acum devenită HUMANITAS.
Vor rămâne pentru eternitate lucrările referite prin:
  • Petre DIMO - Programarea in FORTRAN, Editura didactica si pedagogica, Bucuresti, 1971, 297 pg.
  • Horia GEORGESCU, Octavian BASCA - Programe in limbajul FORTRAN, Editura Albatros, Bucuresti, 1975, 327pg.
  • Stelian NICULESCU - Inițiere în FORTRAN, Editura Tehnică, București, 1972, 278 pg.
  • Margareta DRĂGHICI, Inițiere în COBOL, Editura Tehnică, București, 1972, 370 pg.
  • Ilie VĂDUVA, , Mihai JITARU, Vasile FLOESCU - Conceperea şi realizarea programelor COBOL, Editura Ştiinţifică şi Enciclopedică, Bucureşti, 1981, 471 pg.
  • Donald E.KNUTH - Tratat de programarea calculatoarelor: algoritmi fundamentali, vol.1, Editura Tehnică, Bucureşti, 1976, 676 pg.
  • Donald E.KNUTH - Tratat de programarea calculatoarelor, Sortare și căutare vol 2, Editura Tehnică, Bucureşti, 1976, 736 pg.
  • Donald E.KNUTH - Tratat de programare a calculatoarelor: algoritmi seminumerici, numere aleatoare, vol. 3, Editura Tehnică, Bucureşti, 1983, 724pg.

Ele dau măsura interesului cu care la noi în țară era privită informatica și dorința oamenilor de a se instrui și perfecționa în acest domeniu.






(26 ianuarie 2018)

Friday, January 12, 2018

Ion LUNGU și consecvența bazelor de date

Despre Ion LUNGU, mai exact, despre profesorul universitar doctor Ion LUNGU am a scrie foarte multe, căci îl cunosc de o viață.
Ne-am cunoscut pe când el lucra în Centrul de calcul al ASE, iar eu eram asistent universitar în Catedra de Cibernetică Economică și aveam un birou și un dulap în Centrul de Calcul la sala 2320 de azi, unde veneam să lucrez la contracte pe când director au fost acolo dr.ing Valeriu PESCARU, dr.ing. Constantin BILCIU, prof.dr. Mircea BULGARU și conf.dr. Eugen ȚIGĂNESCU.
Este născut în 9 octombrie 1950 în Drăgășani.
În intervalul  1964 - 1969, Ion LUNGU a fost elev la o clasă de real de la  liceul teoretic Gib MIHĂESCU din Drăgășani, finalizat cu media de 9,66 la examenul de bacalaureat.
În intervalul 1969 - 1974 a urmat cursurile Secției de Mecanizare și Automatizare a Calculului Economic din cadrul Facultății de Calcul Economic și Cibernetică Economică, finalizate cu susținerea lucrării de licență notată cu 10, iar media sa generală a fost de 9,42 la finalizarea studiilor universitare.
În intervalul 1979 - 1983 a traversat un stagiu doctoral finalizat cu susținerea unei teze de doctorat intitulată Probleme ale modernizării sistemului informațional-decizional al planificării producției țn industria metalurgică , avându-l conducător științific pe marele profesor doctor docent Constantin IONESCU, cel cu care colaborase la realizarea lucrării de 632 de pagini intitulată Organizarea și proiectarea sistemelor informaționale economice și publicată în  Editura ASE, București în anul 1982.
Din anul 1979 și până în prezent Ion LUNGU  lucrează în învățământul superior unde a parcurs toate gradele didactice de la asistent universitar în intervalul 1979 - 1987, lector universitar 1987 - 1989, conferențiar universitar în intervalul 1990 - 1993 și profesor universitar începând cu anul 1993. El este conducător de doctorat în specializarea Informatică Economică și director al Școlii doctorale de Informatică Economică din Academia de Studii Economice.
De-a lungul anilor, profesorul Ion LUNGU a predat cursuri şi a ținutseminarii la disciplinele Baze de date, Sisteme de gestiune a bazelor de date, Proiectarea sistemelor informatice, Sisteme Informatice Executive și Integrarea Sistemelor Informatice.
A coordonat colectivul de baze de date din cadrul Catedrei de Informatică Economică format din mai tinerii săi colaboratori care a fost în timp format din Manole VELICANU, Adela BÂRA, Iuliana BOTHA, Vlad DIACONIȚA, Anca ANDREESCU, Anda BELCIU, Georginana BĂDESCU, Cristina IONIȚĂ, Elena POSDARIE, Simona IONESCU și Mihaela MUNTEAN.
Profesorul Ion lungu a publicat nenumărate cărți și articole în reviste importante de specialitate, dintre care enumăr aici:
Adela Bara, Iuliana Botha, Anca- Georgiana Fodor, Ion Lungu, Simona Vasilica Oprea, SGBD ORACLE. Limbajul SQL,167 pag., 2016, Editura ASE, ISBN 978-606- 34-0133- 6
I. Lungu(coordonator), A. Andreescu, A. Bara, Anda Belciu, C. Bodea, I. Botha, V. Diaconita, A. Florea , A. Cornelia Gyorodi. - Tratat de baze de date. Vol 2. Sisteme de gestiune a bazelor de date, 375 pag., Editura ASE, Bucuresti, 2015, ISBN 978-606- 505-
472-1, ISBN 978-606- 505-472- 1, ISBN 978-606- 505-862- 0
 Robert Győrödi , Ion Lungu, Cornelia Győrödi- Sisteme avansate de descoperire a cunostiintelor din baze de date, 335 pag., Editura Universitătii din Oradea, Oradea, 2012, ISBN 978-606- 10-0447- 8
 I. Lungu(coordonator), A. Bara, C. Bodea, I. Botha, V. Diaconita, A. Florea , A. Velicanu. - Tratat de baze de date. Vol 1. Organizare, Proiectare, Implementare, 540 pag., Editura ASE, Bucuresti, 2011, ISBN 978-606- 505-472- 1, ISBN 978-606- 505- 481-3
C. Gyorodi , I. Lungu –Sisteme de baze de date evoluate, 350 pag, Editura Universitătii din Oradea, Oradea 2011, ISBN 978-606-10- 0447-8
Velicanu M. , Lungu I, Botha I. s.a. – Sisteme de baze de date evoluate, Editura ASE Bucureşti, 430 pag., 2009, ISBN 978- 606-505- 217-8
A. Bara, I. Botha, V. Diaconita, I. Lungu, A. Velicanu – Baze de date. Limbajul PL/SQl, 244 pag., Editura ASE, Bucuresti, 2009, ISBN 978-606- 505-263- 5(CNCSIS).
Lungu, A. Bâra, M. Andronie – Administrarea bazelor de date, 191 pag., Editura ASE, 2008, ISBN 978-606- 505-071- 6
I. Lungu, R. Bologa, A. Bâra, V. Diaconita, I. Botha - Integrarea sistemelor informatice, 302 pag, Editura ASE, Bucureşti 2007, ISBN 978 – 973 – 594 – 690
I. Lungu, A. Bâra – Sisteme informatice executive, 287 pag., Editura ASE, Bucureşti 2007, ISBN 978 – 973 – 594 – 690 – 6
Profesorul Ion LUNGU în bogata sa activitate din domeniul informaticii economice a făcut programare la greu, lucrând în cadrul unor echipe care au contribuit la realizarea unor proiecte importante precum:

  • Sistem informatic pentru planificarea producţiei
  • Sistem informatic de urmărire a producţiei fizice planificate
  • Sistem informatic pentru activitatea financiar-contabilă
  • Sistem informatic pentru conducerea activităţii de comerţ exterior
  • Sistem informatic pentru fundamentarea planului şi urmărurea contractelor de aprovizionare
  • Proiectarea şi implementarea unei baze de date pentru urmărirea lucrărilor de reparare autilajului petrolier
  • Sisteme expert pentru asistarea învăţământului superior economicBaze de date inteligente pentru învăţământ
  • Sistem informatic integrat în reţea pentru conducerea întreprinderilor mici şi mijlocii
  • Baze de date multimedia pentru învăţământ.

De asemenea, a coordonat echipe de cercetători pentru a realiza numeroase proiecte de cercetare științifică din domeniul informaticii economice dintre care enumăr:
Server pentru aplicaţii software de înaltǎ performanţǎ
Cercetări privind proiectarea sistemelor suport de decizie orientate pe date pentru piaţa
imobiliară
Soluţii economice şi informatice pentru inteligenţa afacerii
Interferenţa tehnologiei BD cu platforma Java în arhitectura Grid Computing
Tehnologii informatice pentru integrarea sistemelor informatice pentru instituţiile publice
Solutii informatice de asistare a procesului decizional şi pentru dezvoltarea managementului bazat
pe cunoştinţe în instituţiile publice.
În informatică lucrul cel mai important este fie integrarea în echipă a specialistului, fie coordonarea unei echipe. În ambele cazuri, specialistul trebuie să posede calități remarcabile, căci numai așa el va înțelege să comunice, să colaboreze și să accepte să fie coordonat, respectiv, să coordoneze dacă are rol de manager de priect informatic. Profesorul Ion LUNGU a dovedit de-a lungul carierei sale că dispune de tot ceea ce este necesar pentru a dezvolta cu succes proiecte importante, lucru pe care l-a făcut atât de pe poziții de execuție, cât și de pe poziții de management. El este unul dintre fondatorii școlii de informatică economică din țara noastră, căci cine vorbește despre baze de date, trebuie să pună obligatoriu în lista mailor dascăli,  autori de cărți de specialitate și practicieni numele său.






(13 ianuarie 2018)

Volumele Conferintei Internaționale de Informatică

Începând cu anul 1993 Departamentul de Informatică Economică a organizat Conferința Internațională de Informatică Economică având caracter bianual, iar din anul 2011 această conferință are caracter anual.
Lucrările acestei conferințe au fost publicate în volume care se referă astfel:
  • Lucrarile Simpozionului International de Informatica Economica, Bucuresti, mai 1993, Editura Centrul Editorial Tipografic ASE, 621pg.
  • The Proceedings of the 2nd International Symposium of Economic Informatics Software Engineering and Applications, Bucharest, 10-13 May, 1995, INFOREC Printing House, 693pg
  • The Proceedings of the 2nd International Symposium of Economic Informatics, Bucharest, 1997, INFOREC Printing House, ISBN 973-97435-2-8, 871pg
  • The Proceedings of the 3rd International Symposium on Economic Informatics, Bucharest, May 6 - 9, 1999, INFOREC Printing House, ISBN 973-98508-5-5
  • The Proceedings of the 4th International Symposium of Economic Informatics May 2001, Editura economica, ISBN: 973-99450-4-X, 1189pg
The Proceedings of the 5th International Conference on Economic Informatics Digital Economy, May 8 - 11, 2003, pg. 1077 - 1082, ISBN 973-8360-02-1, 1189pg
  • The Proceedings of the 6th International Conference on Informatics in Economy, 19 - 20 May 2005, ASE Printing House, Bucharest 2005, pp.1328 - 1333, ISBN 973-8360-014-8, 1427pg
  • The Proceedings of the 7th International Conference of Informatics in Economy, Informatics in Knowledge Society, Bucharest, Romania, May, 17 -18, 2007, ASE Printing House, ISBN: 978-973-594-921-1, 1130pg
  • The Proceedings of the 8th International Conference of Informatics in Economy, Education, Research & Business Technologies, Bucharest, Romania, May, 2009, ASE Printing House, ISBN: 978-606-505-172-2, 949pg
  • Proceedings of the 9th International Conference of Informatics in Economy ( IE 2012), Economy, Education, Research & Business Technologies, Bucharest, Romania, May 10-11, 2011, Editura ASE, ISSN: 2247-1480, ISSN-L = 2247-1480, CD
  • Proceedings of the 10th International Conference of Informatics in Economy ( IE 2012), Economy, Education, Research & Business Technologies, Bucharest, Romania, May 10-11, 2012, Published by University of Economic Studies Press, ISSN: 2284-7472, ISSN-L = 2247-1480, 548pg.
  • Proceedings of the 11th International Conference of Informatics in Economy ( IE 2012), Economy, Education, Research & Business Technologies, Bucharest, Romania, May 10-11, 2011, Editura ASE, ISSN: 2247-1480, ISSN-L = 2247-1480, CD
  • Proceedings of the 12th International Conference of Informatics in Economy ( IE 2013), Economy, Education, Research & Business Technologies, Bucharest, Romania, May 25-26, 2013, Published by University of Economic Studies Press, ISSN: 2284-7472, ISSN-L = 2247-1480, 548pg.
  • Proceedings of the 13th International Conference of Informatics in Economy ( IE 2013), Education, Research & Business Technologies, Bucharest, Romania, May 15-18, 2014, Published by University of Economic Studies Press, ISSN: 2284-7472, ISSN-L - 2247-1480, 548pg.
  • Proceedings of the 14th International Conference on Informatics in Economy, IE 2015, 30 April - 03 May 2015, Bucharest, Romania, ASE Printing House, ISSN 2284-7472, ISSN-L 2247-1480.  
  • Proceedings of the 15th International Conference on Informatics in Economy, IE 2016, 02 - 05 June 2016, Cluj-Napoca, Romania, ASE Printing House, ISSN 2284-7472, ISSN-L 2247-1480
  • Proceedings of the 16th International Conference on Informatics in Economy (IE 2017), Bucharest, Romania 04 – 07 May, 2017, Published by University of Economic Studies Press, ISSN: 2284-7472, ISSN-L - 2247-1480, 548pg.
Începând cu anul 2011 rezumatele și forme mai restrânse ale comunicărilor se găsesc pe site-uri specializate căci ele sunt indexate în baze de date recunoscute. Trebuie să mă laud și eu cu ceva și anume că am fost prezent la toate edițiile acestei conferințe cu o lucrare, ceea ce este mare lucru, dacă am în vedere că în anul 2018 se vor împlini 25 de ani de când a pornit această prestigioasă manifestare științifică.





(12 ianuarie 2018)

Alocuțiune Ștefan MUSTĂȚEA

Onorată asistență, doamnelor și domnilor.
Pentru mine, acest eveniment aniversar, este un prilej de mare bucurie și de recapitulare a unor întâmplări din viața mea, legate de acest eveniment. Deoarece nu pot participa la această anversare, le arăt aci pe scurt, numai ca să punctez cele mai importante etape, în dezvoltarea LCCE, și prin asta
a Catedrei de Cibernetică Economică și a facultății în care mi-am desfășuram activitatea, aproape 30 de ani.
În octombrie 1965, intram pentru prima dată, în primul birou al LCCE, care se afla undeva în apropierea rectoratului. Acolo erau ca directori, domnii Edmond Nicolau și Vaida Dragoș, împreună cu mat. Coroiu Rodica, Ec. Curta Lizeta, precum și secretarele Ștark și încă o doamnă, al cărei nume îmi scapă acum. Undeva deasupra unui amfiteatru, mai era o cămăruță, unde lucrau tinerii matematicieni Dumitru Vincențiu, Ionescu Vasile, Iosifescu Adela și Oprescu, un băiat cu mustăcioară, dar tare pirpiriu. Cam așa am început, prin grija domnului Teovessi, care era
prorector, și care a organizat atunci un concurs pentru matematicieni-
programatori.
La subsol, unde-i acum tipografia ASE, era adus dela Direcția Centrală de Statistică, un tabulator rusesc, de care se ocupa doamna Biță Larisa. Prin grija domnului profesor Manea Mănescu (MM), spre sfârșitul anului 1966, ne-a sosit, primul calculator electronic românesc, numit Economist CIFA 102. Eu, după instrucatjul care ni s-a făcut la IFA- Măgurele, am început să lucrez la acest calculator. Inginer era domnu Popovici, care ne ajuta la numeroasele depanări. Cu timpu au mai venit aici în clădirea veche și alți colegi, dintre care-mi mai aminetsc pe matematicienii Catona Ion și Diaconescu Gabriel și încă un inginer, al cărui nume-mi scapă acum.
Prin octombrie 1967, am fost vizitați de Nicolae Ceaușescu și alți demnitari, primtre care și domnu MM, să binecuvânteze activitatea noastră de cercetare, prin utilizarea lui CIFA 102.
Cu timpu au mai venit și alți colegi, dar prin toamna lui 1967, după vizita de mai sus, a apărut la noi în cameră unde lucram, prin grija domnului MM, calculatorul japonez NEAC 1240, mult mai sigur și mai util nouă decât CIFA 102.
Pe la sfârșitul lui 1967, când a fost gata clădirea din Eminescu, ne- am mutat acolo, sub conducerea domnului Racoveanu și Făgărășanu, care au mai adus în micul nostru colectiv alți colegi. Îmi amintesc mai bine de inginerii Dumitrescu Ion și Somnea Dan și parcă un tehnician, toți sosiți
dela Ploiești. Atunci s-au mai angajat matematicienii Ciobanu Gheorghe, Ciochină Costel, Weis Gheorghe, Fabian Csaba și alți câțiva. Aici a venit și un minicalculator NCR, la care a lucrat domnu Potoțki Alec, care la-nceput s-a ocupat de revista catedrei. În locul lui la revistă a
venit domnu Lutic Mihai și încă 2-3 doamne. Prin ianuarie 1968, au sosit în vizită japonezii dela firma NEC Tokyo, să definitiveze unele prevederi din contractul cu NEAC 1240, după care am avut onoarea, de a fi desemnat să merg la Tokyo, pentru instructaj NEAC. Au mers acolo în februarie 1968, sub conducerea domnului Vaida Dragoș, Fabian Csaba și cu mine ca programatori, precum și inginerii Paiu Octavian și Popovici Alexandru pare-mi- se, de unde am revenit prin aprilie.
Când a fost gata actuala clădire în care e acum facultatea, noi ne-am mutat cu toții în acea parte a clădirii rezervată nouă. Aici au fost făcute alte angajări, dar cel mai important eveniment a fost instalarea calcultorului IBM 360, prin iunie 1968. Altă viață a fost pentru armata de programatori, care creștea din ce în ce. Eu, în paralel cu IBM, am mai avut de terminat pe
NEAC unele lucrări, mai ales pentru procesul de învățământ, că trebuie menționat faptul că dintre noi, unii țineam deja ore de programare și de cibernetică, cu studenții facultății noastre. Venirea acestui IBM a dat, după părerea mea, un serios avânt procesului de învățământ din facultate la- nceput, apoi în tot ASE-ul, ceiace a făcut ca posibilitățile lui IBM 360, să nu mai ajungă cerințelor din ce în ce mai mari, mai ales din partea procesului didactic. Se preda pentru programare, CIFA – NEAC la-nceput, apoi Assembler, Fortran și altele.
Prin 1973 parcă, a sosit la LCCE un nou calculator de la firma IBM. Era un IBM model 370/135 și era mult mai puternic decât modelul 360 care-l aveam deja. Cu această ocazie a crescut simțitor capacitatea LCCE de a rula programme, ceiace a adus multe beneficii, atât procesului didactic
din ASE, cât și institutelor de proiectare cu care colaboram. LCCE era organizat astfel. La parter erau calculatoarele (IBM la- nceput) de care răspundea doamna Biță Larisa la-nceput, apoi de domnu
Dumitrescu Ion, apoi de mine, apoi de domnu Homescu începând cu 15 ianuarie 1980. La etajul unu era colectivul de programatori de sistem condus de Satran Iulian, un inginer tare priceput, Biblioteca Tehnică și colectivul de perforare, condus ceva mai târziu, de domnu Radu Homescu.
La etajul 2 era colectivul domnului Lutic, calculatorul NEAC 1240, NCR-ul și tabulatoru. La etajul 3 a fost tot timpul colectivul de progranare condus de domnu Ionescu Vasile. Ca cei mai buni programatori, eu mi-i amintesc pe Catona Ion, Diaconescu Gabriel și Duță Lucian. Cu timpl au venit aici mulți absolvenți ai facultății noastre, foarte buni programatori, printre care mi-i mai amintesc pe Surcel Traian, Pencea Margot, Teodor Ion, Magda Mircea și Brad Ștefan. La etajul 4, era conducerea LCCE, secretarele conduse de Funieru Stela, o excelentă dactilografă. Într-o cămăruță lângă lift a lucrat mult timp domnu Vincențiu Dumitru și Luban Florica. Tot la acel etaj avea un birou și o sală de ședințe și domnu MM. La etajul 5 era colectivul de cibernetică, condus de Altăr Moise și ceva mai târziu, (1972 cred) colectivul de cercetări operaționale, condus de domnu Boldur Gheorghe. La etajul 6 era un laborator foto, o sală de ședințe, apoi din 1980, colectivul care se ocupa de banca de date a ministerului nostru (BDPM) și un mic colectiv de Marketing. La etajul 7, era biblioteca LCCE, unde avea acces oricine din ASE sau din beneficiarii ASE-ului, condusă multă vreme de doamna Mihnea.
Cum ne-am mutat în noua noastră clădire, a apărut ca preocupare cercetarea științifică, demarată de conducerea catedrei de cibernetică, la care au colaborau mulți specialiști din țară. Noi cei din LCCE eram, pe lângă sarcinile noastre normale (contracte, didactice) și secretari la diferitele specialități din planul de cercetare, iar responsabili de specialități, erau cadre didacttice și specialiști, majoritatea din din facultatea noastră și din ASE. La Econometrie de exemplu, conducători erau domnii Teovessi și
Ionescu Constantin, iar eu eram secretarul secției. Ca unitate de modernizarea conducerii unităților economice, conducerea LCCE, prin domnu Pescaru Valeriu, directorul nostru de aunci, și-a propus să realizeze și un sistem informațional, care să folosească conducerii ASE-ului. A ceastă sarcină mi-am asumat-o eu și am început cu realizarea unui sistem de programe, privind admiterea la ASE, apoi cu un sistem de calculu burselor. Mari dificultăți am avut la- nceput, din partea personalului care acum folosește din plin acele sistemede programare.
Prin 1974, domnu MM a fost numit Primul Ministru al României, și-n această calitate a preluat și conducerea CSP-ului (Comitetul de Stat al Planificării). Cu această ocazie a-n- ființat la CSP un centru de calcul și având acolo nevoie de cadre de nădejde, dânsu a luat de la LCCE, pe cei mai buni. Pe directorul nostru Inginerul Valeriu Pescaru ca director al centrului de calcul de la CSP, iar pe Catona Ion, Duță Lucian și Cristian Popescu i-a luat ca programatori experimentați, pentru a începe
punerea pe calculatorul lor IBM, a problemelor specifice CSP-ului. Cu această ocazie a rămas la noi ca director domnu Inginer Bilciu Constantin, care venise decurând la LCCE.
Prin anul 1975 a avut loc cel de al treilea Congres Internațional de Cibernetică, care s-a ținut la facultatea noastră și care a fost coordonat din punct de vedere administrativ, de tot personalul LCCE. Pe vremea aia, domnu MM era primul ministru al României și asta a avut un mare rol în ținerea congresului la București, în clădirea noastră LCCE și în cea a facultății de Cibernetică Economică. Atunci a fost o mare vânzoleală cu problemele administrative ale congresului și fiecare dintre noi eram implicați în multe din acele acitvități. Dar totu s-a desfășurat în bune condițiuni, iar toate comunicările prezentate la acel congres, au fost incluse într-un volum special al acelui congres, treabă care a ocupat și ea destul timp din activitatea noastră. Tot în acest an la 25 septembrie, a sosit la noi la LCCE și o nenorocire de calculator românesc, numit Felix C-256, o copie nereușită după un calculator IRIS, neperformant, la care francezii au renunțat repede și l-au vândut proștilor de români. Cei care au fost în Franța și au contractataceastă afacere proastă, nu s-au gândit la interesele țării ci doar la buzunarele lor. În fapt, ei au sabotat dezvoltarea informaticii în România.
În martie 1977, am lucrat peste 2 luni de zile, la refacerea clădirii, după cutremur. În sala calculatoarelor erau IBM-urile și un Felix C256.Colac peste pupăză. Cam la un an ne mai trezim cu încă un Felix C-562, care a fost și el, înghesuit în aceiași sală, după ce s-a renunțat la primul IBM, în favoarea domnului Grama, care conducea centrul de calcul al Minsiterului Industriei Ușoare. Din discuțiile pe care le-am avut cu domnu Bilciu, a rezultat că oarecum am fost obligați de nu știu cine, să ne dotăm cu asemenea configurații neeficiente. Începând de prin 1979, au început lucrările de analiză pentru banca de date a ministerului învățămâmtului, o colaborare complexă a unui colectiv din minister, cu LCCE , coordonator al întregii activități, și centrele de calcul din universitățile București, Iași, Cluj și Timișoara. Sarcini de programare aveau LCCE majoritatea, dar și centrele de calcul al celor trei universități. Cred că cu această ocazie, trebuie menționat colectivul din laboratorul domnului Ionescu Vasile, coordonat de domnu Diaconescu Gabriel, care au asigurat cu Magda Mircea, o parte din pachetul necesar de programe. După ce s-au definitivat aproape toate programele, s-a trecut la colectarea informațiilor și încărcarea fișierelor cu date privind personalul didactic din toată țara și s-a organizat un colectiv, care să asigure, actualizarea și exploatarea acestor informații, conform cerințelor direcției de personal din minister, condusă de domnu Bondrea. Conducerea acestui colectiv mi-a fost încredințată mie la 8 iunie 1980. Pentru perfecționarea colaborării, între unitățile implicate în utilizarea acestei bănci de date, s-a hotărât ca-n fiecare an să se țină câte o întrunire de analiză și perfecționare a activităților desfășurate.
Anul 1981 a-nceput cu pregătiri pentru Conferința Națională de Cibernetică, care a- nceput pe 14 ianuarie și a durat cam o săptămână, dar în toată luna ianuarie ne-am ocupat cu problemele create această conferință, la care au venit multe personalități de seamă din întreaga țară, interesați desigur de cibernetică. Prin septembrie a avut loc la New York un alt congres de Cibernetică, unde ne-a reprezentat domnu Bilciu, care n-a mai avut curaju să revină-n țară.
După plecarea domnului Bilciu, a-nceput morișca directorilor LCCE. La 13 februarie 1982, a fost numit director la LCCE, domnu Țigănescu Eugen, care fusese asistentul domnului MM și care acum era profesor la aceiași catedră, în colectivul de Statistică. Nu știu din ce cauză, domnu Țigănescu n-a stat prea mult pe acel post și-n locul lui a fost numit Dumitrescu Vladimir, care era programator
de sistem în echipa lui Satran. Probabil că numirea lui Vladimir a fost o soluție tranzitorie, că după un timp a fost numit pe acel post mult râvnit de mulți, domnul Bulgaru Mircea, un om școlit la Moscova, profesor și el de Statistică Agrară, la aceiași catedră, tot în colectivul de statistică. Cât a fost dânsu director, pentru mine a fost un chin, că nu reușeam să ne-nțelegem deloc. Lua niște decizii care mie mi se păreau ciudate, deoarece aduceau prejudicii activităților de care mă ocupam. N-a trecut mult și când conflictul s-a ascuțit, l-a informat pe domnu MM că-i periclităm postu și a provocat pe 28 iunie 1983, ora 13, o ședință sub conducerea domnului MM, care greșit informat, ne-a batjocorit pe toți deavalma cu trimitere special la mine și Vladimir. După asta, nu știu cine, bănuiesc pe domnii Altăr sau Ionescu Constantin, sau cineva din conducerea de atunci a facultății, i-o fi spus ceva domnului MM despre mine și-ntr- o zi de toamnă târzie, ne pomenim că n-a mai apărut Bulgaru printre noi. După câteva zile, de tatonări, am fost din nou adunați la biblioteca dela etajul 7 și ni s-a prezentat ca nou director, tot pe inginerul Dumitrescu Vlaimir. Odată scăpat de Bulgaru, m-am ocupat numai de contractele mele, de BDPM, burse, admiterea la ASE și de definitifarea tezei de doctorat, pe care am susținut-o în decembrie 1985. De aci-ncolo, până la ceiace se chema atunci revoluție, m-am ocupat numai de orele pe care le aveam cu studenții, contractele mele și de BDMP.
Prin anul 1984, nu știu cum s-a făcut, dar a fost adus la LCCE un minicalculator M18, care a fost instalat la etajul 2, ultima cameră pe stânga. Prin iunie 1987, ne-a vizitat incognit-o domnu MM. Cum Vladimir era plecat și mă lăsase pe mine în locul lui, l-am așteptat jos și am urcat împreună cu liftul la etajul 4. Cum s-a închis liftul, m-a- ntrebat, cum mai merg treburile. I-am răspuns oftând că ne chinuim mult cu Felixurile și nu mai putem lucra la IBM, din lipsă de hârtie de imprimantă. Mi-a răspuns scurt că nu mai avem ce face. Ne-am despărțit cum s-a deschis ușa
liftului. După “revoluție” în fiecare laborator de cercetare din LCCE, s-au organizat alegeri pentru noi șefi de laboratoare și nu am avut norocu să scap de beleaua aia de șef. Am scăpat ceva mai târziu, când BDPM nu a mai fost necesară, contractele dispăruseră și colectivul meu, cu mine-n frunte a fost inclus în laboratorul 3, pe care-l conducea domnu Teodor Ion, ales ca șef, în locul lui Ionescu Vasile. Din acest laborator am dispărut în vara lui 1994, prin pensionare. Cât am mai lucrat la LCCE, până la pensionare, prin 1990 au sosit la LCCE, două minicalculatoare, trimise de domnu Bilciu din SUA.
Apoi a mai fost adus un minicalculator Nova AS/400, care a permis pentru prima dată la LCCE, lucru la terminalele instalate jos la dispeceratul IBM. Cam la un an a mai apărut și un produs românesc, minicalulatorul I-100, la care eu n-am mai apucat să mai lucrez. Scuze dar nu cunosc cu exactitate, datele când au apărut ultimele 2 minicalculatoare, deoarece prezența mea în LCCE a fost mai slabă-n perioada aia, deoarece am avut un deces important în familie.
Cam asta a fost după părerea mea și nu vreau să închei, înainte de a-mi exprima marele regret, pentru nedreptatea ce i s-a făcut domnului profesor Manea Mănescu, care și-a sacrificat absolut tot, numai să ajute ASE-ul și prin el întreaga țară. Dânsu, prin modalitatea care a ales-o, a făcut ca acum țara să beneficieze de economiști pregătiți pentru a introduce la locurile lor de muncă, metode științifice de conducerea activităților economice. Am avut ocazia să discut cu dânsu prin octombrie 2008, când era foarte bolnav și când și-a exprimat totala nedumerire a modului cum sa-nțeles, chiar și de cei mai apropiați dânsului, modalitatea dânsului de a realiza ce și-a propus. Mi-a explicat foarte detaliat, dece nu a putut face altfel. Ascultându-l, i-am dat desigur dreptate și am ajuns la concluzia, că dânsu pentru a realiza ce și-a propus, a aplicat foarte bine pe vremea aia, proverbul românesc, care zice să te faci frate și cu dracu, numai să treci puntea. Dar ce? Credeți că numai dânsu a făcut treaba asta? Chiar foarte mulți, dar pentru interesele lor personale, nu ca domnuMM, pentru ASE și pentru țară. Păcat, mare păcat.
Ștefan Mustățea, azi 25 aprilie 2017.

Ștefan MUSTĂȚEA, primul meu profesor de programare

Mustățea ȘTEFAN mi-a fost profesor de programarea calculatoarelor pe vremea în care eram student în anul al IV-lea la Secția de Mecanizare și Automatizare a Calculului Economic din Facultatea de Calcul Economic și Cibernetică Economică din Academia de Studii Economice, adică în anul universitar 1968 - 1969.
La cursul de Programarea calculatoarelor era profesor doctorul Dragoș VAIDA care lucra la Universitatea București. Practic și plastic vorbind, domnul Ștefan MUSTĂȚEA a fost acela care mi-a pus în mână creionul de programator. Ceea ce am remarcat la acest om se rezumă în următoarele cuvinte:
- era scump la vorbire, deci nu vorbea mult așa cum făceau profesorii din zona economicului;
- ceea ce avea de spus, spunea cu vorbe puține, clar și nu lăsa loc la interpretări;
- știa concret să programeze pe toate etapele ciclului de dezvoltare;
- venea din zona programării în cod mașină și se vedea că avea experiență adevărată.
Profesorul meu de atunci Mustățea ȘTEFAN, venea din zona programării în cod mașină și cu el am mers prima dată să văd cum funcționează calculatorul CIFA 102 în clădirea din Eminescu, unde acum se află Catedra de Informatică de Gestiune și unele dintre laboratoarele acesteia. Îmi aduc aminte și acum, după atâțea ani cum enunța el o problemă, cum explica pas cu pas despre alegerea variabilelor și cum se construiște schema logică pentru a rezolva problema. De la schema sa logică pleca spre program, cu utilizarea de regiștrii, cu instrucțiunile elementare și cu explicațiile de cum trebuie perforate pe bandă de hârtie acele instrucțiuni. Misterul lucrului pe un calculator electronic din prima generație l-am dezlegat datorită profesorului meu de atunci, Mustățea ȘTEFAN, care venea direct din laborator, îmbrăcat cu galatul său alb din material sintetic.
Ani în șir l-am urmărit cu admirație pe domnul Mustățea ȘTEFAN, bărbatul înalt, zvelt, drept, cu mersul apăsat, cu privire ageră și cu vorbă măsurată. Dacă avea să se adreseze cumva o făcea cu cuvântul acela des utilizat în vremurile de demult, tovule, dar niciodată nu spunea decât ceea ce era absolut necesar și într-o manieră care impunea respect.
Știam despre domnul Mustățea ȘTEFAN că este absolvent de matematică, știam că avea în spate perfecționări în programare, inclusiv în Japonia la firma NEAC de unde a și fost cumpărat un calculator pe care tot în anul al IV-lea am lucrat în limbajul COPCODER. Când aveam de studiat ceva, mergeam în biblioteca tehnică a Laboratoarelor Catedrei de Cibernetică Economică - LCCE,  unde găseam printre documentații de firmă materiale elaborate de Mustățea ȘTEFAN în colaborare cu tinerii cu care lucra și am multe exemple de materiale elaborate de acesta împreună cu Anca ANDREI și cu Ioan ODĂGESCU, dar și multe articole publicate în revista Studii și Cercetări de Calcul Economic și Cibernetică Economică, a cărei variantă în limba engleză este ISI catalogată și cu care toată lumea se mândrește. Amintesc aici lucrările referite prin:
Stefan MUSTATEA, Ion ODAGESCU - Programarea calculatoarelor electronice - FORTRAN IV - culegere de probleme rezolvate si propuse, Litografia ASE, Bucuresti, 1973, 296pg.
Ștefan MUSTĂȚEA, Dan SOMNEA, Mircea PĂTRULESCU - Sistemul dBASE II, prezentare, utilizare, studiu de caz, partea a I-a și partea a II-a, Studii și Cercetări de Calcul Economic și Cibernetică Economică, vol. 22, n2. 2 și nr, 3, 1987.
După decembrie 1989 fostul meu profesor Ștefan MUSTĂȚEA a susținut cu succes o teză de doctorat intitulată Gestiunea optimă a materialelor, la nivelul unei unități economico-sociale, folosind calculatoare electronice. În timp, activitatea din Laboratoarele Catedrei de Cibernetică Economică s-a restrâns treptat din lipsa contractelor cu industria intrată în degringoladă, mai ales după ce premierul o catalogase drept grămadă de fier vechi și nu am mai avut ocazia să-l întâlnesc pe fostul meu profesor Ștefan MUSTĂȚEA. Am înțeles că a plecat din țară, dar uneori când revenea megrea să se reîntâlnească cu locurile unde și-a desfășurat zeci de ani din activitatea profesională, prilej cu care l-am reîntâlnit și cu același respect am discutat despre vremurile de pionierat ale informaticii din țara noastră, el fiind un actor important, căci fără programatorii profesioniști ai primelor generații de calculatoare în niciun caz nu s-ar vorbi despre o informatică autentică având temelii solide și rezultate de început foarte valoroase, cu programe folosite efectiv în întreprinderi.
În primăvara anului 2017 fostul meu profesor a avut o alocuțiune, pe care o redau exact așa cum autorul ei mi-a încredințat-o, alocuțiune care în opinia mea este o radiografie a informaticii economice românești care se suprapune cu activitatea laboratoarelor Centrului de Calcul al ASE.





(12 ianuarie 2018)

Lungime sau volum de prelucrări

Când se scrie un program se fac multe calcule pentru a vedea care este varianta de program cea mai convenabilă. Se fac alegeri justificate cu destul de multe argumente, unele fiind foarte convingătoare. De regulă se construiesc modele de eficiență în care apar inegalități din care să rezulte când este bună o variantă și când este bună o altă variantă de program. Voi da un exemplu de astfel de analiză. Există o problemă P în care trebuie evaluate expresiile:
C = A + B
P = R + S
X = Y + Z
W = U + V
unde A, B, C, P, R, S, X, Y, Z, W, U și V sunt matrice cu diferite dimensiuni care permit totuși efectuarea operațiilor specifice acelor expresii, adică matricele A, B, C au fiecare M1 linii și N1, coloane, matricele P, R, S au fiecare câte M2 linii și N2 coloane, matricele X, Y, Z au fiecare M3 linii și N3 coloane, iar matricele W, U și V au respectiv M4 linii  și N4 coloane. Ideia de bază care se desprinde este aceea de a scrie un subprogram de adunare a două matrice, subprogram care va fi apelat de 4 ori, ceea ce duce la textul sursă următor:

            SUBROUTINE ADMAT(A,B,C,M,N)
            DO 10 I=1,M
            DO 10 J=1,N
            C(I,J)=A(I,J)+B(I,J)
10        CONTINUE
            RETURN
            END
Programul principal va conține:

................. secvență inițializare variabile M1, N1, M2, N2, M3, N3, M4, N4 .............
................. secvență inițializare matrice A, B .............
................. secvență inițializare matrice R, S .............
................. secvență inițializare matrice Y, Z .............
................. secvență inițializare matrice U, V .............
            CALL ADMAT(A,B,C,M1,N1)
            CALL ADMAT(R,S,P,M2,N2)
            CALL ADMAT(Y,Z,X,M3,N3)
            CALL ADMAT(U,V,W,M4,N4)
................. secvență cu alte prelucrări ale matricelor C, P, X și W.
Pentru ceea ce ne interesează să se optimizeze, textul sursă se referă la o construcție de lungime
Lg = 6 + 4 = 10 instrucțiuni ( instrucțiuni pentru subprogram și 4 instrucțiuni pentru apelul subprogramului ADMAT(...).
Dacă se încorporează toate secvențele în programul principal, acesta va arăta astfel:

................. secvență inițializare variabile M1, N1, M2, N2, M3, N3, M4, N4 .............
................. secvență inițializare matrice A, B .............
................. secvență inițializare matrice R, S .............
................. secvență inițializare matrice Y, Z .............
................. secvență inițializare matrice U, V .............
            DO 10 I=1,M1
            DO 10 J=1,N1
            C(I,J)=A(I,J)+B(I,J)
10        CONTINUE
            DO 10 I=1,M2
            DO 10 J=1,N2
            P(I,J)=R(I,J)+S(I,J)
20        CONTINUE
            DO 10 I=1,M3
            DO 10 J=1,N3
            X(I,J)=Y(I,J)+Z(I,J)
30        CONTINUE
            DO 10 I=1,M4
            DO 10 J=1,N4
            W(I,J)=U(I,J)+V(I,J)
40        CONTINUE
................. secvență cu alte prelucrări ale matricelor C, P, X și W.
Această variantă are lungime Lg = 16 instrucțiuni. Programul în prima variantă are la execuție pentru cele patru apeluri de subprograme grupul de operații complexe:
- o instrucțiune de salt necondiționat spre subprogram;
- estragere de pe stivă a adreselor operanzilor;
- execuția adunării elementelor matricelor;
- revenirea în programul apelator.
La fiecare apel volumul de prelucrări este undeva la 7 instrucțiuni, deci ceea ce părea o economie se concretizează prin 28 de instrucțiuni, dintre care unele sunt costisitoare la ciclurile mașină dacă salturile necondiționate se fac intersegment când suprogramul se află în alt segment decât programul apelator. Este o întreagă filosofie a discuta despre echilibrul lungime program și volum de prelucrări și totul se rezolvă prin măsurători de ordin statistic, adevărul fiind undeva la jumătate.

(12 ianuarie 2017)


Sunday, January 7, 2018

Generare n numere prime

Numerele prime sunt acelea care sunt divizibile prin 1 și prin ele însele. A genera N numere prime înseamnă:
- se inițializează o variabilă K=1;
- a genera un număr impar A=2*L+1;
- a extrage radicalul din numerul impar A, obținând numărul B;
- dacă la extragerea radicalului partea zecimală este nulă, A nu este număr prim.
- a împărți numărul B la toate numele de la 2 la B-1;
- dacă una dintre împărțiri nu are rest înseamnă că numărul A nu este prim;
- dacă toate împărțirile sunt cu rest, X(K)=A și K=K+1;
- se majorează numărul A, A=A+2;
- procedeul se reia de la extragerea de radical atât timp cât K este mai mic decât N.
Subprogramul GNPRIM(...) generează un șir de N,  numere prime cu N mai mare decât 5 și mai mic decât 1001.

             SUBROUTINE GNPRIM(N,X,IK)
             DIMENSION X(1000) /1,2,3,5,7/
             IK=0
             IF((N.LT.5).OR.(N.GT.100))  GO TO 30
             K=6
             A=11.
10         CONTINUE
             B=SQRT(A)
             IVAL=INT(B)
             AVAL=IVAL
             IF((IVAL-B).EQ.0)  GO TO  30
             DO   20   I=2,IVAL-1
             AI=I
             IF(AMOD(AVAL,AI).EQ.0)  GO TO 30
20         CONTINUE 
             X(K)=A
             K=K+1
 30         CONTINUE
             A=A+1
             IF(K.LT.N) GO  TO  10
 40        CONTINUE 
             IK=1
              RETURN
             END 
Observăm că apar multe instrucțiuni GO TO datorită faptului că nu există implementare pentru structura DO-UNTIL
(07 ianuare 2018)       


Saturday, January 6, 2018

Programatorul de înaltă clasă

Și atunci, ca și acum, există o mare diversitate de programatori, dar cel mai bun lucru este să reușim să identificăm exact pe programatorul de care avem nevoie să ne rezolve în condițiile cele mai bune problema pe care vrem s-o rulăm pe calculator.
În acele vremuri nu oricine dorea chiar devenea programator pentru că:
- lipsea Internetul ca sursă de documentare;
- un calculator presupunea cunoștințe tehnice numeroase;
- limbajele de programare erau extrem de restrictive;
- centrele de calcul aveau criterii de angajare stricte;
- cărțile de programare nu erau laândemâna oricui;
- se formase deja o castă închisă a programatorilor;
- depanarea programelor era piatra dură de încercare.
Îți dădeai seama de programatorii foarte buni după cum le arătau fie imprimantele cu programe, fie foile de programare, căci un programator foarte bun scria un program, de asemenea, foarte bun, cu părți foarte clar structurate, cu includerea de secvențe elaborate și cu folosirea de chestiuni speciale care arătau că el știe meserie. Programatorul foarte bun realiza acel echilibru absolut necesar între cantitate și calitate și se vedea de la o poștă că programul său este precedat de nenumărate calcule din care a rezultat că secvențele incluse sunt dintre cele mai bune.
Și azi este tot așa. Mie nu trebuie să-mi arate cineva mii de programe scrise de el, ci un program. Acum când se lucrează online, oricare dintre programatori trebuie să se prezinte printr-o aplicație și după cum arată interfața, cât de șmecheră este aceasta și mai ales, dacă nu te lasă cu ochii-n soare, înseamnă că am în față un programator bun. Dacă programul se termină subit, aiurea cu un mesaj al sistemului de operare taman când eu vreau să mai rezolv și o altă problemă, înseamnă că respectiva hardughie este făcută după ureche și nu s-a ținut seama de cerințele unei aplicații online.
În vremurile de demult, programatorii de înaltă clasă aveau programe care:
- erau incluse în biblioteci renumite;
- rezolvau clase de probleme;
- admiteau probleme de dimensiuni nelimitate;
- gestionau numărul de iterații și precizia;
- aveau nenumărate validări care să asigure rezultate corecte și complete;
- erau înzestrate cu facilități de customizare;
- stocau seturi de date de intrare pe care le actualizau.
Am avut posibilitatea să cunosc pe unii dintre autorii acestor programe și să lucrez cu acele programe, pentru că la disciplina Programe aplicative care era predată studenților de la Facultatea de Cibernetică erau folosite astfel de produse program, multe dintre ele fiind făcute de firme străine, dar câteva precum VERONICA, CROCODIL, EMI, produsul de alocare și nivelare a resurselor, erau reaslizate de programatori din Centrul de Calcul al ASE. Duță Doru Lucian, Csaba Fabia, Ciobanu Gheorghe și Ruxanda Gheorghe sunt numai câțiva din marii programatori cu ale căror produse program am avut onoarea să lucrez la seminarii cu studenții ciberneticieni de-a lungul vremii. Despre Catona Ioan și Popescu Cristian voi scrie separat că ei au realizat implementarea la Danubiana a unor componente esențiale de calcul de necesar și de planificare a producției din sistemul BOMP al IBM. Erau și alți programatori eficienți care elaborau programe de bună calitate, căci nimeni nu rezista în branșă fără să aibă un nivel ridicat de performanță. 
În programare ori ești bun și oferi beneficiarului programe care să-i rezolve problemele, ori nu ești bun și tot timpul spui că ești cu programul ba în compilare, ba în editare de legături, ba în testare, până beneficiarul se plictisește și caută pe altul care să-i rezolve problema.
La un moment dat am ajuns să identific programatorii de înaltă clasă și pe cei pe cale de a deveni programatori foarte buni prin câteva semne pe care le-am considerat esențiale, precum:
- modestia;
- tăcerea;
- munca;
- ordinea;
- perseverența;
- concentrarea;
- disciplina.
Imediat ce o persoană îmi înșirea ceea ce știe el să facă și lista era mult prea bogată, o includeam în grupul celor care zic că se pricep la multe, dar de fapt nu știu să facă prea multe. Imediat ce vedeam niște for de programare cu ștersături și împrăștiate, se clarificau multe dintre minusurile celui care se credea a fi bun programator. Imediat de programtorul vorbea despre bogata sa e.xperiență dar nu avea cel puțin un program pe care să-l văd la treabă, îmi dădeam seama că respectivul doar se laudă. Imediat ce într-o discuție apăreau schimbări prea dese de variante de soluții, îmi dădeau seama că respectivul nu prea are capacitatea de a porni ceva și de a soluționa, căci el intervine și tot timpul modifică, fără să finalizeze vreun program.
În programare este esențială identificarea programatorilor de înaltă clasă căci lor trebuie să li se dea să facă programe mari și grele pe care ei au capacitatea de a le duce la bun sfârșit. Este deja o tragedie când se acordă un cec în alb unui programator lăudăros, fără rezultate, dându-i-se să facă un program greu, căci respectivul nu-l va face, va încurca lucrurile. Dacă ceea ce respectivul a făcut este dat unui programator foarte bun să continue, cu siguranță că programatorul foarte bun va arunca la coșul de gunoi acel program fără valoare și va lua el de la zero realizarea programului. Eroarea de management are riscuri mari în ceea ce privește depășirea de termene de predare a lucrărilor.



(06 ianuarie 2018)

Calculul entropiei

Formula uzuală an entropiei H unui sistem care se făsește în una din stările S1, S2, S3, ..., Sn este:


unde:
n - numărul de stări ale sistemului
pi - probabilitatea ca sistemul să se afle în starea Si.
Trebuie reținut faptul că biblioteca de funcții a limbajului FORTRAN IV nu conține funcție care să permită extragerea logaritmului din baza 2, ceea ce impune lucrul cu subprogramul de calcul a logaritmului din baza 10. Deci se volosește formul:
log2(A) = log10(A)/log10(2.) Se va folosi funcția ALOG10().
Subprogramul ENTRO ( ...) care calculează entropia este:

               SUBROUTINE ENTRO(P,N,H,IK)
               IK=0
               SUM=0.
               DO 10   I=1,N
               IF(((P(I).LT.0).OR.(P(I).GT.1.)) GO TO 30
               SUM=SUM+P(I)
10           CONTINUE
               IK=2
               IF(SUM.NE.1) GO  TO 20
               IK=1
               ALFA=1./ALOG10(2.)
               H=0.
               DO 20   I=1,N
               H=H+P(I)*ALOG10(P(I))*ALFA
20           CONTINUE
                H=-H
30           CONTINUE                           
               RETURN
               END
Subprogramul returnează IK=0 dacă datele nu sunt corecte, returnează IK=1 dacă rezultatul este cel dorit, returnează IK=2 dacă suma probabilităților nu este 1.
(06 ianuarie 2018)

Transformarea unei matrice normale în matrice rară

Matricea normală este aceea definită prin DIMENSION nume(dim_1,dim_2) și care în FORTRAN IV se memorează coloană după coloană, nu linie de linie ca în alte limbaje de programare. Matricea rară se memorează în trei vectori doar prin elementele nenule, indicând linia, coloana și valoarea acestora. Elementele vectorului LIN() arată linii, elementele vectorului ICOL() arată poziția pe coloane a elementelor nenule și vectorul VAL() arată care sunt valorile nenule ale matricei.
Subprogramul care memorează elementele nenule ale matricei A în cei trei vectori este :

          SUBROUTINE TRNNR(A,M,N,LIN,ICOL,VAL,K,IK)
          IK=0
          IF((K.LE.0).OR.(K.GT.N).OR.(K.GT.M)) GO TO 20
          K=0
          DO 10  I=1,M
          DO 10  J=1,N
          IF(A(I,J).EQ.0) GO TO 10
          K=K+1
          LIN(K)=I
          ICOL(K)=J
          VAL(K)=A(I,J)
10      CONTINUE
          IK=1
20      CONTINUE
          RETURN
          END




(06 ianuarie 2018)

Transformarea matricei rare în matrice normală

Matricea rară se memorează în trei vectori doar prin elementele nenule, indicând linia, coloana și valoarea acestora. Elementele vectorului LIN() arată linii, elementele vectorului ICOL() arată poziția pe coloane a elementelor nenule și vectorul VAL() arată care sunt valorile nenule ale matricei.
Subprogramul care reconstruiește matricea A  este:

          SUBROUTINE TRANSR(M,N,LIN,ICOL,VAL,K,A,IK)
          IK=0
          IF((K.LE.0).OR.(K.GT.N).OR.(K.GT.M)) GO TO 30
          DO 10  I=1,M
          DO 10  J=1,N
          A(I,J)=0.
10      CONTINUE
          DO 20  I=1,K
          I=LIN(K)
          J=ICOL(K)
          A(I,J)=VAL(K)
20      CONTINUE
          IK=1
30      CONTINUE
          RETURN
          END




(06 ianuarie 2018)

Friday, January 5, 2018

Transpusa matricei rare

Matricea rară este reprezentată prin 3 vectori ce conțin informații doar despre elementele sale nenule. A calcula transpusa unei matrice rare înseamnă a interschimba conținutul vectorilor pentru linii cu cel pentru coloane. Subprogramul este:

          SUBROUTINE TRARAR(LIN,ICOL,K, IK)
          INTEGER AUX
          IK=0
          IF((K.LE.0).OR.(K.GT.N)) GO TO 20
          K1=0
          DO 10  I=1,K
          AUX=ICOL(I)
          ICOL(I)=LIN(I)
          LIN(I)= AUX                   
          LIN1(K1)=LIN(I)
          ICOL(K1)=ICOL(I)
          VAL1(K1)=VAL1(I)
10      CONTINUE
          IK=1
20      CONTINUE
          RETURN
          END
Variabila AUX de tip întreg ajută la efectuarea interschimbului. Aici nu este necesar apelul subprogramului de efectuare a interschimbului elementelor unui vector pentru că s-ar efectua un apel inutil de subprogram, ori așa, am încorporat secvența pur și simplu că nu este  lungă și este simplă.

(05 ianuarie 2018)

Normalizarea de matricei rare

Normalizarea de matrice rare este un subprogram extrem de inportant care musai trebuie apelat înainte de a ieșii din orice subprogram care lucrează cu două matrice rare sau inversează o matrice rară. După efectuarea unor astfel de calcule este posibil ca în matricea rezultat să apară valori nule acolo în vectorul VAL(N). Se va elimina din tripletele de vectori linia și coloana unde VAL(J) este cu valoarea zero. Vor rezulta alți trei vectori LIN(N), ICOL(N) și VAL(N) cu un număr K1 de componente K1 < K unde K este numărul de componente ale matricei rare freprezentată prin 3 vectori înainte de normalizare și K1 reprezintă numărul de componente după ce s-a făcut normalizarea.
Se consideră matricele rare A și B definite prin:

Matricele A și B au fiecare câte 10 linii și 8 coloane. Se construiesc tripletele următoare pentru matricea A:
(1, 2, 1), (1, 7,4), (2,4, 4), (2, 8,7), (3, 5, -1), (4, 1, 9), (5, 1, 3), (5,2,2), (5, 8,5), (7, 2, 8), (7, 4, 6),    (7, 5, 7), (9, 6,12), (10,2,31), (10,8,87).
Se construiesc tripletele următoare pentru matricea A:
(1, 2, 1), (1, 7,4), (2,4, 4), (2, 8,7), (3, 5, -1), (4, 1, 9), (5, 1, -3), (5,2,2), (5, 8,5), (7, 2, 8), (7, 4, 6),    (7, 5, 7), (9, 6,-12), (10,2,31), (10,8,-87).
Dacă se adună cele două matrice rare se obțin tripletele matricei rezultat următoare:
(1, 2, 1), (1, 7,4), (2,4, 4), (2, 8,7), (3, 5, 0), (4, 1, 9), (5, 1, -3), (5,2,2), (5, 8,5), (7, 2, 8), (7, 4, 6),   
(7, 5, 7), (9, 6,0), (10,2,31), (10,8, 0).
Prin normalizare tripletele bolduite vor dispărea căci ele conțin valori zero ale elementelor matricei rezultat. Lista de triplete LIN1, ICOL1, VAL1 devine:
(1, 2, 1), (1, 7,4), (2,4, 4), (2, 8,7), (4, 1, 9), (5, 1, -3), (5,2,2), (5, 8,5), (7, 2, 8), (7, 4, 6),    (7, 5, 7), (10,2,31).
Subprogramul pentru normalizarea matricei rare este:

          SUBROUTINE NORAR(LIN,ICOL,N,K, LIN1,ICOL1,K1,IK)
          IK=0
          IF((K.LE.0).OR.(K.GT.N)) GO TO 20
          K1=0
          DO 10  I=1,K
          IF(VAL(I).EQ.0.) GO TO 10
          K1=K1+1
          LIN1(K1)=LIN(I)
          ICOL(K1)=ICOL(I)
          VAL1(K1)=VAL1(I)
10      CONTINUE
          IK=1
20      CONTINUE
          RETURN
          END
Variabila IK este zero dacă sunt erori în datele inițiale. Ea este 1 dacă rezultatul este corect, inclusiv dacă rezultă o matrice rară cu toate elementele nule.


   







(05 ianuarie 2018)

Matricele rare

Și în vremurile de demult se lucra cu probleme de mari dimensiuni, concretizate prin matrice cu grad de umplere redus, adică, matrice rare. Gradul de umplere al matricei A, G(A), este dat de formula:
G(A) = (K * 100) / (M*N)
unde:
K - numărul elementelor nenule din matricea A;
M - numărul de linii ale matricei A;
N - numărul de coloane ale matricei A.
O matrice A se zice că este rară dacă și numai dacă G(A) < 0,33%. Și în vremurile de demult lucrul cu matrice rare presupunea existența unei biblioteci de subprograme ce conținea subprograme privind:
- inițializarea matricei rare cu date provenind din cartele perforate;
- transformarea matricei definite full în matrice rară;
NORAR() - normalizarea de matrice rare;
- adunarea cu normalizare de matrice rare;
- scăderea cu normalizare de matrice rare;
- înmulțirea cu normalizare de matrice rare;
- inversarea cu normalizare a matricei rare;
- calcului transpusei unei matrice rare;
- comoararea de matrice rare.
Algoritmii care se implementau în acele vremuri țineau seama dacă se lucra sau nu cu matrice rare pentru că disponibilul de memorie internă era o mare problemă atunci. Se făceau calcule la sânge cum s-ar zice cu operanzii ca să se obțină rezolvări de probleme cu dimensiuni cât mai mari.
O matrice rară se memorează folosind 3 vectori, fiecare având câte NM componente și anume:
LIN(NM) -  memorează liniile elementelor nenule;
ICOL(NM) - memorează coloanele elementelor nenule;
VAL(NM) - memorează valorile nenule din matricea A.
Se consideră că acest mod de memorare a unei matrice rare este eficient pentru o matrice A de tip double cu M linii și N coloane dacă și numai dacă 8 * M * N < 4 * 2 * K + 8 * K, unde K este numărul elementelor nenule din matricea A. Vectorii LIN() și ICOL() sunt definiți de tip INTEGER și fiecare componentă a lor are 4 bytes, iar vectorul VAL() are componente de câte 8 bytes fiecare pentru faptul că matricea A este definită ca având tipul DOUBLE.




(05 ianuarie 2018)

Thursday, January 4, 2018

Gemerarea unui termen din șirul FIBONACCI

Gemerarea unui termen din șirul FIBONACCI presupune scrierea unui subprogram care calculează totți termenii care preced termenul ce tyrebuie căutat și returnează valoarea termenului cerut. Formula de calcul a termenului Fn din șirul FIBONACCI este Fn =  Fn-1 + Fn-2. Subprogramul este:

         SUBROUTINE ELEFIB(N,ISIRK,IK)
         IK=0
         IF((N.GT.46).OR.(N.LE.2)) GO TO 20
         ISIRI1=0
         ISIRI2=1
         DO  10 I=3,N
         ISIRK=ISIRI1 + ISIRI2
         ISIRI1=ISIRK
         ISIRI2=ISIRI1
10     CONTINUE
         IK=1
         RETURN
         END
Subprogramul returnează IK egal cu zero dacă termenul cerut este eronat, respectiv IK=1 dacă rezultatul returnat este corect. Variabila ISIRK va arăta care este valoarea termenul din șirul FIBONACCI care a fost cerut să fie generat.



(04 ianuarie 2018)

Generarea elementelor șirului FIBONACCI

Generarea elementelor șirului FIBONACCI se realizează după formulele:
F0 = 0
F1 = 1
F2 = F0 + F1
...
Fn = Fn-1 +Fn-2

 A genera n+1  termen ai șirului FIBONACCI înseamnă a calcula termenii 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,... , Fn-1 +Fn-2.
Știind că F461.836.311.903  și cel mai mare număr întreg memorat pe 4 bytes este 2.147.483.647 iar F47 = 2.971.215.073 vectorul cu termeni generați nu trebuie să depășească 47 de termeni, subprogramul generează cel mult  termenii F0 F1,  F2 F3,  ....F46,  din șirul FIBONACCI, pentru N mai mare decât 2 și mai mic decât 47..
Subprogramul este:
         SUBROUTINE FIBON(N,ISIR,IK)
         IK=0
         IF((N.GT.46).OR.(N.LE.2)) GO TO 20
         ISIR(1)=0
         ISIR(2)=1
         DO  10 I=3,N
         ISIR(I)=ISIR(I-1) + ISIR(I-2)
10     CONTINUE
         IK=1
         RETURN

         END
Subprogramul returneză șirul de termeni generat și variabila de stare IK egală cu 1 dacă șirul a fost generat, respectiv, IK egal cu zero dacă numărul de termeni este incorect.




(04 ianuarie 2018)

Interschimb de variabile

Interschimbul de variabile este echivalentul cu interschimbul conținutului a două borcane A și B, borcanul A care conține ulei și celălalt, borcanul B, care conține apă. În final trebuie ca borcanul B să conțină ulei și borcanul A să conțină apă. Evident este nevoie de un al treilea vas temporar, TEMP care va prelua conținutul borcanului A. O dată golit borcanul A, în el va fi vîrsat borcanul B. Vasul temporar va fi vărsat în borcanul B golit deja de apă.
         SUBROUTINE SCHIMB(A,B)
         TEMP=A
         A=B
         B=TEMP
         RETURN
         END
Aceeași operație se realizează și pentru vectorii X și Y de câte N componente, obținând subprogramul:
         SUBROUTINE SCHVEC(X,Y,N)
         DO  10 I=1,N
         TEMP=A(I)
         A(I)=B(I)
         B(I)=TEMP
10     CONTINUE
         RETURN
         END
Pentru interschimbul elementelor din două matrice A și B fiecare având N linii și M coloane se va scrie subprogramul:

         SUBROUTINE SCHMAT(A,B,M,N)
         MAXAIJ=A(1,1)
         DO  10 I=1,N
         DO  10 J=1,N
         TEMP=A(I,J)
         A(I,J)=B(I,J)
         B(I,J)=TEMP
10     CONTINUE
         RETURN
         END
Aici se vede cum se obține generalizarea de la interschimb de elemente, la interschimb de vectori și apoi la interschimb de matrice, continuarea fiind aceeași pentru masivele multidimensionale.


(04 ianuarie 2017)

Ridicarea la putere a matricei

A ridica o matrice pătrată A cu N linii și N coloane la puterea K înseamnă a o înmulți cu ea însăși de K-1 ori. Rezultatul se află în matricea REZ. Este nevoie de:
- un subprogram CPYMAT de copiere de matrice;
- un subprogram PROMAT de înmulțire de matrice;
- subprogramul PUTERE de ridicare la putere matrice.

         SUBROUTINE PROMAT (A,B,C,M,N,K)
         DO 20 I=1,M
         DO 20 J=1,K
         CIJ=0.
         DO 10 L=1,N
10     CIJ=CIJ+A(I,L)*B(L,J)
         C(I,J)=CIJ
20     CONTINUE
         RETURN
         END
         SUBROUTINE CPYMAT(A,B,M,N)
         MAXAIJ=A(1,1)
         DO  10 I=1,M
         DO  10 J=1,N
         B(I,J)=A(I,J)
10     CONTINUE
         RETURN
         END
         SUBROUTINE PUTERE(A,N,REZ)
         DIMENSION TEMP(N,N) 
         CALL  CPYMAT(A,TEMP,N,N)
         DO  10 J=1,N-1
         CALL  PROMAT (A,TEMP,REZ,N,N,N)
         CALL  CPYMAT(TEMP,REZ,N,N)
10     CONTINUE
         RETURN
         END
Subprogramul PUTERE(....) are în el așa cum este scris niște asperități, dintre carea cea mai supărătoare este copierea de matrice de la ultima iterație care este nenecesară, dar care se gestionează cu o instrucțiune IF(...) dar a cărei execuție nu aduce un profit așa de mare decât numai dacă volumul de operații generat de dimensiunea matricei A este cu mult mai mare, lucru care se stabilește cu exactitate, dar care nu mi se pare a fi esențial pentru ceea ce mă interesează pe mine ca exemplificare.
(04 ianuarie 2018)