Showing posts with label tehnici de programare. Show all posts
Showing posts with label tehnici de programare. Show all posts

Thursday, December 21, 2017

Reciclarea de personal în programare

Reciclarea de personal în programare este o realitate crudă, pentru că în raport cu toate celalalte meserii, în programarea calculatoarelor uzura morală a tehnologiilor și tehnicilor de programare este atât de rapidă, încât cine nu învață permanent și nu se perfecționează și nu folosește cele mai noi cunoștințe în cel mult cinci ani, deja va fi trecut pe linie moartă, căci este depășit. De aceea, companiile care dezvoltă software impun salariaților lor un ritm alert de cerificare în tot feliul de specializări, pentru a avea personal calificat, gata:
- să implementeze o nouă tehnologie;
- să folosească un nou limbaj de programare;
- să lucreze cu un nou mediu de dezvoltare;
- să se lase asistat de un nou instrument.
Există programatori autodidacți care rămân în actualitate prin studiu individual. Numai că firmele dezvoltatoare de software care ele însele doresc să se certifice ISO nu mai știu cât sau să se auditeze, au nevoie de specialiști care să dovedească cu acte că au un anumit nivel de pregătire. La angajeare se verifică practic prin teste ce știe să facă fiecare, dar la auditări și certificări de companie, sunt necesare documente, certificate și diplome, nu neapărat numai de participare, ci de atestare. Trebuie spus că firmele dezvoltatoare de software românești nu dau în brânci în aș-i trimite salariații pe banii lor la cursuri importante de perfecționare de teama că acești salariați o dată pregătiți vor migra către alte companii și ei vor rămâne cu banii dați, căci legea protejează pe salariat.
În IT&C mobilitatea personalului face o ierarhizare automată a celor care intră în firmă, dar mai ales a celor care pleacă, pentru că prin politicile salariale se reglează totul. Faptul că foarte mulți tineri acced în poziții importante în procesul de dezvoltare software se datorează faptului că tinerii au capacitatea de a învăța, de a merge să se certifice și să obțină atestate, dintre cele mai dificile, lucru care le sporește cotele în firme și deci și accesul la salarii mari.
Reciclarea de personal în programare este deosebit de importantă și reprezintă una din carențele multor firme dezvoltatoare de software că mizează pe caracterul autodidact la programatorilor lor.



(21 decembrie 2017)

Thursday, November 16, 2017

Uzura morală în informatică

Uzura morală are în zona IT&C un ritm deosebit de alert manifestat prin:
- descoperiri tehnice care schimbă radical conceptele;
- evoluții în ritm alert la nivelul duratelor de viață pentru tehnologii, instrumente și limbaje;
- schimbările care apar la nivelul filosofiei de dezvoltare software prin dispariția restricțiilor;
- punerea tot timpul în concordanță a software cu hardware și invers;
- găsirea soluțiilor care distrug barierele puse în fața complexității prin minimizări de costuri;
- acceptarea schimbărilor rapide prin eforturile susținite a menținerii în actualitate;
- reducerea duratelor și costurilor de realizare a produselor cu complexitate cu mult mai mare.
Dacă în analiza matematică sunt extrem de puține lucrurile revoluționare apărute în ultimii 50 de ani, în zona limbajelor de programare, o dată la 10 ani se produc adevărate revoluții, mai ales din cauză că au dispărut barierele generate de capacitatea de stocare, capacitate care acum se consideră a fi fără limite din moment cu 1 Tb costă de mult sub 100USD.
Uzura morală a dat și dă mari bătăi de cap teoriei economice care trebuie să se adapteze la ceea ce se numește investiție și, respectiv, perioada de recuperare a investiției. Dacă se are în atenție imobilismul contabil, să ne amintim cum în contabilitate zăcea un PC de tip 286 care figura cu valoare de inventar de 2.500USD amortizat sub 50% în timp ce în piață era un PC de tip 486 cu preț de 1.000USD și lumea nu înțelegea de unde provenea misterul. Chiar în anul 2015 la un outlet în Militari era un memory stick de 256 Mb la preț de 50 USD, în timp ce pe e-Mag un memory stick de 16 Gb era sub 30 USD.
Istoria informaticii românești a înregistrat schimbări dramatice când:
- a apărut dominantă cartela perforată;
- au apărut PC-urile;
- Internetul a devenit accesibil;
- aplicațiile web au devenit ceva familiar;
- peste 30% din probleme se rezolvă cu un PC de la distanță;
- s-a acceptat lucrul de acasă de pe calculator 20%  din timp.
Meseria de programator este una al cărui conținut este afectat de uzura morală prin faptul că la intervale foarte mici apar noi:
- instrumente de asistare;
- medii de dezvoltare;
- tehnologii software;
- structuri de interfețe;
- teori de dezvoltare;
- metrici ale calității;
- standarde de calitate;
- moduri de achiziție date;
- echipamente miniaturizate;
- elemente de autonomie;
- resurse software și hardware.
Programatorul, dar și analistul trebuie să se pună de acord cu tot ceea ce este nou pentru a rezista presiunilor pe care le generează piața prin apariția de noi generații de calculatoare, noi generații de limbaje de programare și mai ales prin noile tehnologii care apar mai ceva ca ciupercile de după ploaie. 
Istoria informaticii românești a traversat marile evenimente cu dureri destul de mari, căci trecerea de la calculatoarele pe tuburi la cele pe tranzistoare nu a fost lentă. Dispariția industriei de calculatoare de după 1990 a fost un lucru rău, cu efecte negative, necompensate nici în ziua de azi. În ceea ce privește limbajele de programare, noi am preluat cu seninătatea ciobanului din Miorița toate șocurile de la trecerea de la cod mașină, prin limbaje de asamblare, până la limbajele de azi, iar capacitatea românilor de a se adapta este deja proverbială.


(16 noiembrie 2017)

Friday, November 10, 2017

Less GO TO programming

Nu a părut deloc ciudat când Clark R LAWRENCE a publicat în Datamation, vol.19, nr. 12, 1973, pg. 22-23, articolul A linguistic Contribution of GOTO-less Programming care venea cu detalii fundamentale bine argumentate despre complexitatea indusă de instrucțiunea GOTO și necesitatea de a scăpa de ea.
Pe la mijlocul anilor '70 programatorii noștri au simțit diferențele între programe văzând că pentru o aceeași problemă există posibilitatea de a scrie programe ceva mai simple sau de a scrie programe cu mult mai complicate. Ei au văzut că diferențe o face în primul rând frecvența cu care se utilizează instrucțiunea GO TO. Limbajul FORTRAN este un limbaj în care instrucțiunea GO TO este la ea acasă pentru că:
- eticheta instrucțiunii este regină;
- există instrucțiuni cu etichete încorporate;
- secvențele omogene se delimitează prin etichete;
- chestia cu scărpinatul în ureche ducând mâna pe la ceafă de la FORTRAN se trage.
În limbajul FORTRAN o etchetă este un număr de la 1 la 99999 care se scria pe primele 5 coloane ale foii de programare. Era rezonabil ca etichetele să nu fie definite în progresie aritmetică cu rație 1 pentru a efectua la o adică inserări de instrucțiuni etichetate menținând regula ca șirul de etichete să fie strict monoton crescător în vederea urmăririi cu ușurință a instrucțiunilor la depanare.
În programele FORTRAN apăreau nenumărate instrucțiuni GO TO etichetă.
Exista instrucțiunea GO TO calculat de forma:
GO TO (e1, e2, e3,....., en), I
unde e1, e2, e3,....., en sunt etichete, iar I este o variabilă de control cu valori de la 1 la n și care indică poziția etichetei spre care se efectuează saltul. În cazul în care I are o altă valoare în afara mulțimii specificate se trece la execuția instrucțiunii de după GO TO calculat. E un fel de switch mai primitiv din limbajul C++ , dar tot implementarea structurii alternative multiple făcea acest GO TO calculat.
Instrucțiunea IF() din FORTRAN are forma IF(expresie) e1,e2,e3
unde:
e1 este eticheta instrucțiunii care se execută deacă expresia este mai mică decât zero;
e2 este eticheta instrucțiunii care se execută deacă expresia este egală cuzero;
e3 este eticheta instrucțiunii care se execută deacă expresia este mai mare ca zero.
Această instrucțiune venea în plus cu niște instrucțiuni GO TO pentru că fluxul de prelucrare trebuia controlat cu ce se execută după ce se execută secvențele arătate de cele 3 etichete, ceea ce ducea la creșterea complexității programelor.
Și instrucțiunea DO impunea folosirea unei etichete căci chiar în construcție o avea definită, instrucțiunea având forma 
DO  eticheta var_control=val_init, val_finală, rație
unde:
eticheta - marchează ultima instrucțiune a secvenței de repetat;
var_control - variabila de control cu care se gestionează numărul de repetări;
val_init - valoarea de start a variabilei de control;
val_finală - valoarea cea mai mare pe care o are variabila de control;
rație - valoarea cu care crește variabila de control de la o repetare la alta.
Less GO TO programming adicătelea programarea fără salturi condiționate dorită de programatorii noștri cu ardoare în deceniu al VIII-lea al secotului trecut a fost un vis, dar numai de suprafață, căci în intimitatea ei această programare era bântuită de și mai multe salturi necondiționate, salturi care nu se vedeau, ci erau mascate.
Programarea fără GO TO nu este imposibilă doar aparent, căci atât apelurile de subprograme cât și referirea de paragrafe tot la salturi necondiționate duc, iar programatorii care știu ASSEMBLER la nivel de cod mașină știu cum se execută instrucțiunile CALL și RETURN și mai ales ce se ascunde în spatele lor, care salturi condiționale înseamnă în final, lucru văzut chiar din definițiile lor.
Mai pe românește spus, LESS GO TO este o utopie dacă se coboară la nivel de cod mașină.




(11 noiembrie 2017)

Monday, October 30, 2017

Tehnici de programare

Tehnicile de programare trebuie să fie niște modalități diferite între ele de a scrie programe astfel încât:
- durata să fie cât mai redusă;
- efortul programatorilor să fie cât mai mic;
- complexitatea aplicațiilor să fie cât mai mare;
- calitatea obținută pentru programe să fie cât mai mare.
Programarea modulară constă în a scrie programe complexe ca parți asamblate, numite module.
Programarea structurată revine a scrie programe folosind numai și numai anumite construcții numite structuri elementare.
Programarea orientată obiect presupunde a scrie programe pornind din start cu ideia de a realiza de la început componente noi destinate reutilizării, dar și de a reutiliza masiv componente deja existente.
Programarea mixtă constă în a scrie un program principal într-un anumit limbaj cu apeluri de subprograme scrise în cu totul alte limbaje de programare. În vremurile de demult, finețea unei prelucrări era foarte diferită de la un limbaj de programare la altul.
Vectorizarea masivelor multidimensionale reprezintă o tehnică destul de des întâlnită printre programatorii din înalta societate a acestora, care știu să folosească tipurile de adresare care permit maximizarea gradului de folosire a zonelor de memorie și deci, maximizarea problemelor de rezolvat, alături de reducerea timpilor de regăsire a elementelor. Trebuie însă efectuate transformări de regăsire a elementelor din masivul multidimensional în corespondentul lor din vector.
Pentru fiecare tehnică de programare, se ia un limbaj de programare și se ilustrează modalitățile prin care secvențe de program se scriu respectând rigorile acestor tehnici.
Pentru înțelegerea avantajelor, se vor prezenta variante ale secvențelor pentru a rezolva aceeași problemă fără a folosi o tehnică de programare, după care se va trece la scrierea secvenței pentru aceeași problemă folosind tehnica. De fiecare dată se vor face comentarii care să evidențieze superioritatea din punct de vedere calitativ a secvenței scrise folosind tehnica de programare.
Experiența arată că pentru implementarea oricărei tehnici de programare sunt importanți programatorii cu capacitatea lor de a ânțelege elementele de finețe și ca la poezie, trebuie multă experiență, cultură și dorința de autodepășire, căci de la prooblemă la problemă o tehnică de programare are anumite elemente specifice. Numai programatori care stăpânesc elementele de detaliu vor scrie secvențe de program eficiente, repede și de mare complexitate.
S-a crezut că tehnicile de programare revoluționează programarea, dar nu este chiar așa, căci programele sunt scrise de programatori. Numai programatori foarte performanți, cu experiență și care știu elementele de finețe ale unei tehnici de programare vor ști să facă din acea tehnică de programare exact ceea ce trebuie pentru a da soluțiile cele mai bune la nivelul textelor sursă.

(01 noiembrie 2017)

Monday, October 23, 2017

Tehnici de programare

Tehnicile de programare au fost create pentru a crește productivitatea programatorilor, măsurată ca număr de linii sursă scrise de un programator pe unitatea de timp. În timp au apărut nenumărate cărți despre tehnici de programare, unde autorii lor au inclus acele capitole pe care ei le considerau a fi tehnici de programare. Dacă prin tehnici de programare eu înțeleg niște modalități speciale de a scrie programe mai bune, mai repede și mai complexe, multe din capitolele incluse în acele cărți nu-și găsesc locul ca tehnici de programare.
În unele cărți la tehnici de programare sunt trecute metodele:
Divide et Impera
Backtracking
Greedy
Programării dinamice.
Consider că acestea sunt metode de a construi algoritmi. Că acei algoritmi permit scrierea de programe este o cu totul altă ciorbă de pește. Unele cărți se intitulează ceva cu algoritmi și tehnici de programre dar acolo nu apar:
- programarea structurată;
- programarea vizuală;
- programarea orientată obiect.
Sau apar, dar expediate rapid. Nouă ne plac denumirile de discipline misterioase, fără a le pune în corespondență corectă un un conținut adecvat, ci în ele pune fiecare ce crede sau ce vrea sau ce i se năzare pur și simplu, să se creadă că chiar acolo se fac lucruri speciale, căci sortarea nu este o tehnică de programare și nici ingineria programării.



(22 octombrie 2017)

Saturday, October 21, 2017

Cercetările solitare

Cercetările solitare erau diferite de cercetările individuale pentru că erau desfășurate de personalități marcante, recunoscute într-o zonă a informaticii și acceptate ca ca atare, cărora li se căuta și li se găsea finanțare pentru munca lor pentru că:
- generau contacte în străinătate;
- erau deschizătoare de drumuri;
- conduceau la publicarea în mari edituri;
- creau școală în jurul fiecărei personalități.
Ideia de a construi software de prognoză era veche, numai că trebuia pusă în operă și încă la un anumit nivel, care să dea valențe concrete, ușurință în utilizare și să fie de maximă generalitate. Așa s-a întâmplat cu produsul software EMI al lui Gheorghe RUXANDA, cercetător solitar în Centrul de Calcul al ASE, care lucra într-un laborator unde toți colegii săi îl apreciau și știau că dacă lucrează la ceva, acel ceva este un lucru special. Când a ieșit pe piață cu produsul EMI, Gheorghe RUXANDA era un tânăr cercetător care realizase un produs de prelucrări de date:
- în volume foarte mari;
- independent de dezvoltator;
- estimând coeficienți la  funcții oarecare;
- construind eșantioane;
- aplicând cunoștințe avansate de econometrie.
Cercetătorul solitar Gheorghe RUXANDA a reușit să dezvolte un produs software de maximă generalitate, cu mesaje proprii, ceea ce înseamnă că a fost gândit ca un produs de clasă A fiind foarte bine testat. 
Din discuțiile cu marele inginer de sistem Iulian SATRAN am ajuns la concluzia că a dezvoltat un model de regăsire a informațiilor cu mult înaintea descoperirii arborilor B și pe care l-a implementat cu mult înaintea acestui tim de structură de date folosită în regăsirea rapidă a informațiilor.
Fiecare dintre cei care au lucrat și mai lucrează în informatică, au secretele lor ca persoane care fac cercetări solitare, fiind convinși că vor descoperi și ei piatra filosofală, la care s-au gândit mii de ani alchimiștii și încă nu au abandonat acest vis prea frumos. Când în sesiunile științifice apar cercetări în acest sens, un oarecare nivel de delicatețe nu strică niciunui moderator pentru a nu înăbuși în fașă o ideie pe care el însuși sau cei din sală nu au înțeles-o la adevărata ei valoare, mai ales dacă vine din partea unui solitar cercetător care pe deasupra mai este și un necunoscut.
Cercetările solitare în informatică sunt uneori pepiniera ideilor geniale și nimeni nu are voie să bruscheze în vreun fel un cercetător solitar, chiar dacă el are și ceva ciudățenii sau manifestări ermetice de om neânțeles



(21 octombrie 2017)

Wednesday, October 18, 2017

Informatizarea în industrie

Cele mai multe centre de calcul erau în întreprinderile și combinatele din țara noastră. S-a simțit nevoia să se facă informatizare acolo pentru a crește randamentele și pentru a îmbunătății calitatea fluxurilor de prelucrare. Știu foarte multe centre de calcul de pe platformele industriale căci în stagiile de practică în producție a studenților de la secția de Informatică economică am fost în multe din ele și în destul de multe am zăbovit câteva săptămâni bune. 
Știu ce se făcea la Centrul de Calcul de la Carbochim.
Știu ce se făcea la Centrul de Calcul de la CIPA Rm. Vâlcea.
Știu ce se făcea la Centrul de Calcul de la IMGB.
Știu ce se făcea la Centrul de Calcul de la Electromagnetica.
Știu ce se făcea la Centrul de Calcul de la Fabrica de Motoare Electrice.
Știu ce se făcea la Centrul de Calcul de la Rafinăria Brazi.
Știu ce se făcea la Centrul de Calcul de la Tractorul.
Știu ce se făcea la Centrul de Calcul de la Combinatul Chimic Pitești.
Știu ce se făcea la Centrul de Calcul de la fabrica de Autorurisme Dacia.
Acolo se muncea foarte mult la realizarea de componente ale sistemului informatic, cu luarea în calcul a particularităților pe care respectivele entități le aveau, căci în acele vremuri customizarea era mai grea decât a face un sistem de la încept pentru că trebuia:
- înțeles produsul supus customizării;
- definite valorile parametrilor;
- efectuate adaptările specifice entității;
- punerii de acord a formulelor de calcul;
- testată noua configurație a produsului;
- implementată varianta personalizată.
Când se lucra cu cartele perforate totul căpăta o altă dimensiune, mai ales dacă acestea nu erau de calitate și cititorul agăța și distrugea unele dintre ele sau nu le citea corect că la perforare fuseseră decalate perforațiile din cauza alimentării defectuase. Chiar când se lucra cu benzi magnetice erau situații în care acestea nu erau citite. Iar la HDD apăreau oarece erori. Totuși, prelucrările se făceau și de la calculator se obțineau:
- statele de salarii;
- rulajul stocurilor;
- bonuri de materiale;
- rapoarte contabile;
- situații necesare managerilor;
- optimizare de sortimente;
- optimizarea producției;
- ordonanțarea producției;
- gestionarea calității produselor;
- croire optimă;
- transport optim;
- indicatori agregați ai întreprinderii.
Toate nevoile în plan informațional erau soluționate în centrele de calcul ținând seama de abordări realiste legate de culegerea de date și de întreg fluxul necesar obținerii de rezultate. S-a înregistrat o adevărată revoluție în Centrele de Calcul ale întreprinderilor atunci când au fost implementate aplicații în care bazele de date erau ceva obișnuit, pentru că se rezolva marea problemă a întreprinderilor, aceea de a cuprinde mulțimi omogene de elemente care se aflau acolo și a prelucra informații despre stadiile parcurse de acestea în timp.Conducerea proceselor în timp real era o cu totul altă problemă, iar conducerea utilajelor cu programe numerice și ea era un capitol de început în anii '80.

(18 ocotmbrie 2017)

Sunday, October 15, 2017

Programarea industrială

Și la noi, ca peste tot, a existat obsesia scoaterii programării calculatoarelor de sub zodia artei, aducând-o dincolo de meșteșugărie, spre industrie. Mulți necunoscători și-au imaginat crearea de programe de calculator ca pe un proces industrial, unde programatorul asemeni strungarului se așează în fața calculatorului și dacă strungarul face șuruburi, programatorul face programe. Numai că aceștia au uitat că șuruburile strungarului sunt identice toate între ele, pe când programele scrise de programator, au ele ceva elemente comune, dar sunt otuși unicate, ceea ce este o mare diferență între strungar și programator.
Acum în condițiile robotizării se realizează unicate în cadrul fluxurilor de producție de masă, în ideia de a face personalizări radicale la încălțăminte, la cămăși, la ochelari de soare, dar repet, este vorba de robotizare unde se mențin randamente foarte ridicate și cu calculatorul se fac tot felul de combinații de materii prime și de reglaje de echipamente, încât randamentele și fluxurile nu au de suferit câtuși de puțin. În acele vremuri de început ale informaticii nu se punea problema în acest fel, căci nici tehnici de programare nu prea existau, iar tehnica programatorului șef a enervat foarte mult, fiind la noi factor de regres, știut fiind faptul că mulți dintre programatori erau solitari, fiind alergici la a lucra în echipă și cu atât mai mult să se uite altcineva în programele lor, din orgoliu, desigur.
Peste tot unde se făcea programare s-a încercat să se pună un pic de ordine prin:
- alinierea programatorilor în raport cu un stil de programare omogen;
- impunerea utilizării componentelor de bibliotecă;
- construirea părților unui program de către mai mulți programatori și apoi asamblarea părților;
- specializarea programatorilor în a scrie programe cu funcționalități relativ identice;
- obligativitatea de a respecta reguli în folosirea de variabile și de instrucțiuni.
Când am auzit de tentativa din anii '80 de a se face o fabrică de software la Timișoara m-am închinat cu amândouă mâinile, căci studiasem problema și tentativa devenea realistă numai și numai dacă:
- programatorii aveau calculatoare legate în rețea, asemeni utilajelor legate în flux;
- existau instrumente puternice care să pună bazele definirii de specificații complete și corecte;
- bibliotecile de programe conțineau suficient de multe componente care asigură reutulizare;
- colaborativitatea programatorilor este componentă a educației acestora.
Inexistența acestor condiții am crezut că nu vor încununa cu succes inițiativa timișoreană, căci studiasem destul de mult productivitatea programatorilor și fără a depăși un anumit nivel nu ai cum să vorbești de procese industriale, iar programarea se găsea în acel moment în stadiul de artă pură, în care programatorul asemeni pictorului are tuburile de culor sub forma de instrucțiuni. Un pictor bun cu aceleași tuburi face capodopere, cum și un programator din aceleași instrucțiuni scoate programe excepționale, tot așa cum un pictor slab cu tuburile de culor nu face mai nimic tot așa cum un programator slab eșuează lamentabil cu toată diversitatea instrucțiunilor din limbaj pe care le are la dispoziție și pe care le-ar folosi oricum ar vrea fără a avea costuri suplimentare de niciun fel.
Nici în ziua de azi problema industrializării producției de software nu se tratează ca pe o problemă serioasă din cauză că diversitatea de programe este așa de mare încât unicatele nu se realizaează în regim industrial căci roboții nu s-au apropiat așa de mult de programatori încât să le preia din muncă, chiar dacă generatoarele de programe sunt o realitate, dar una crudă din moment ce programele generate nu au diversitatea pe care ne-am dori-o.
Programarea industrială  este și azi un vis, căci nu au apărut instrumentele care să înmagazineze atâta informație încât să se dicteze problema și să se scrie automat programul, ca element nou, care nu are multe lucruri în comun cu alte programe scrise anterior. Concepte ca programarea automată, ingineria programării, sunt numai niște elemente de a-i mângâia pe creștet pe unii pentru a le arăta că și în programare s-au făcut progrese, dar nu atât pe cât s-ar crede că este suficient ca între terminologie și realitate să fie o suprapunere perfectă.



(16 octombrie 2017)

Monday, October 2, 2017

Programarea structurată


Deși s-a făcut multă vâlvă cu programarea structurată, ea nu a prins mult timp la noi pentru că limbajul FORTRAN nu era făcut pentru așa ceva. A scrie un program structurat în FORTRAN era ca și cum programatorul s-ar scărpina în nas ducând mâna pe la ceafă.
Cartea de programare a lui Stelian NICULESCU referită prin:
Stelian NICULESCU - FORTRAN, inițiere în programare structurată, Editura Tehnică, București, 1979, 278 pg,
excelent scrisă dealtfel, a dat o metodologie, un mod de gândire, dar nu ceva care să fie transpus imediat în texte sursă, căci limbajul FORTRAN avea un mod de-a dreptul bizar de a implementa structura alternativă, el neavînd acel magnific else în structura prea simplificată if (expresie)eticheta1,eticheta2,eticheta3.

Structura alternativă, frumoasă în schema logică, are o rezolvare de tot râsul în textul sursă FORTRAN prin introducerea de comentarii și de GO TO spe un CONTINUE.

Structura repetitivă de tip DO-UNTIL este superbă în schema logică.


Arată rău ca secvență de FORTRAN prin artificiile de dragul a nimic drăguț și simplu. Aceste exemple sunt din cartea:


În facultăți s-a predat programarea structurată, în cursurile de pregătire făcute peste tot pentru programatorii aflați în funcție s-au predat cursuri și s-a făcut practică de analiză și de dezvoltare de structuri software după principiile programării structurate. Ideia fundamentală era să se elimine din programe instrucțiunea GO TO despre care teoreticienii din programare aveau o părere foarte proastă căci ea distrugea liniaritatea programelor. Eu cred că dacă ne gândim ceva mai bine vom vedea că la nivel de text assembler instrucțiunea BRU este de neocolit, dar aceasta este o altă poveste.
dacă programele FORTRAN erau mai puțin structurate, știu că multe dintre programele scrise în limbajul COBOL au fost scrise structurat, ceea ce este mare lucru, dacă se are în vedere că peste 60% dintre programele aflate în uz curent în centrele de calcul erau scrise în COBOL.
În centrele teritoriale de calcul sau în oricare altă entitate unde se elabora software, faza de elaborare a diagramelor - schemelor logice, evidenția utilizarea cerințelor programării structurate, lucru deosebit de important pentru lizibilitatea lor și pentru asigurarea corespondenței aproape 1:1 a blocurilor de acolo cu instrucțiunile din textele sursă.
(02 octombrie 2017)

Programarea standard


În anul 1980 am publicat la Editura Litera din București cartea Programmarea standard în a cărei bilbiografie nu se află niciun document de partid sau cuvântare a lui Nicolae CEAUȘESCU așa cum se obișnuia, care se referă prin:
Ion IVAN - Programare standard, Editra litera, București, 1980, 123 pg..
Am ales un design al copertilor care să sugereze ceea ce se utiliza atunci în informatica aplicată - cartela perforată Față de cum arata acum textele de la imprimantele laser, ceea ce se tipărea prin anii '70 - '80, după cum se vede pe ultima copertă, este o diferență de la cer la pământ. Nu are referiri in nota introductivă la politica partidului așa cum aveau toate carțile.
Bibliografia nu contine lucrari politice, cuvântări ale lui Nicolae Ceaușescu și nici documente de partid. O astfel de abordare, în anul 1980 așa cum rezulta din coperta interioară, nu este un lucru oarecare, din moment ce toată lumea făcea altfel, pentru a ușura publicarea de lucrări care nu erau nici de economie politică, nici de socialism științific, nici de filosofie, care justificau într-o oarecare masură abateri de la rigorile științifice.
Am zis ca analiștii sunt mai întâi excelenți programatori, iritând colegi care făceau analiză de sistem informatic fără să fi scris vreodată o linie sursă de program.
Pe cele 123 pagini sunt:
- cuprinsul în limba română, rusă, engleză și germană
- nota introductiva
- două anexe
Lucrarea are nouă capitole, după cum urmează:
- consacrarea unei terminologii
- complexitatea sistemelor de programe
- calitatea sistemelor de programe
- productivitatea muncii programatorilor
- gestiunea resurselor în unitațile de informatică
- premisele programării standard
- proceduri, secvenîe și programe standard
- programarea standard este....
- două instrumente utile pentru programarea standard.
Cartea era rezultatul unei experiențe intense de soluționare de probleme complexe prin reutilizare de proceduri și secvențe de program orientate pe prelucrări matriceale. Construisem o bibliotecă de proceduri FORTRAN pentru calcule matriceale care permitea:
- citirea de pe cartele a matricelor pe linii, pe coloane, dar și a matricelor rare
- afișarea de matrice pe linii, pe coloane, integrale, pe blocuri
- efectuarea de calcule matriceale
- calcul determinanți
- aflarea inversei
- generarea de matrice după reguli
- calcule cu linii ale matricelor
- calcule cu coloane ale matricelor
- extragerea de submatrice
- inversarea matricelor folosind blocuri
- agregări de matrice
- însumari pe linii
- însumari pe coloane
- aflarea de minime și maxime pe linii/ coloane
- interschimb linii/coloane/elemente
- concatenări de matrice.
Testele au vizat estimările prin metoda celor mai mici pătrate clasic dar și în două și trei trepte, precumși tot felul de calcule statistice, analiza dispersională. Chiar și calculele de bilanț se efectuau folosind aceste proceduri, scrise omogen în raport cu un stil de programare și de compunere a listelor de parametri. Procedurile erau autodocumentate și ocupau cam o cutie de cartele perforate. Ele erau gândite încat multe dintre proceduri apelau proceduri considerare că efectuează operații elementare de prelucrări matriceale.
Programarea standard s-a practicat dar nu sub acest nume, ci pur și simplu au fost scrise programe reutilizând componente de bibliotecă în proporție de peste 80%.


(02 octombrie 2017)

Programarea în cod mașină

Fără să mă dau rotund în anul al III-lea de studenție chiar am făcut programare în cod mașină, lucru care nu era deloc foarte simplu, dar era așa de frumos încât nu regret nicio clipă că am făcut acest exercițiu fabulos. Pentru a scrie programe în cod mașină se specificau:
- structura programului ca fiind o succesiune de instrucțiuni scrise una sub alta;
- structura instrucțiunilor ca fiind formată din cod ioerație și listă de operanzi;
- lista de operații și cpdurile numerice asociate fiecăreia;
- modul de definire a adreselor absolute pentru instrucțiuni și operanzi;
- sistemul de gestionare a adreselor absolute;
- delimitatorii de instrucțiuni și de program;
- modul de perforare și de operare;
- obținerea rezultatelor.
Să zicem că totul într-un limbaj cod mașină ipotetic este cu patru cifre, adică pentru codurile operațiilor se asociază patru cifre, pentru adresele operanzilor adresele au patru cifre. Să zicem că adunarea are codul 0001, scăderea are codul 0002, memorarea are codul 0003. Să zicem că dorim să evaluăm expresia e=a+b+c-d-f+g cu  a = 7, b= 200, c=13, d=27, f=18 și g=33Să zicem că instrucțiunea de start are codul 0000, iar instrucțiunea de stop are codul 9999. Mașina are un singur registru notat 8888. Pentru tipărire se flosește codul 7777. Să zicem că se definesc mai întâi operanzii, iar prima adresă fizică este 4444. Să zicem că ceea ce acum se cheamă cuvânnt de memorie are 4 bytes și că reprezentarea este astfel gândită încât orice instrucțiune și orice operand să fie reprezentate pe un astfel de cuvânt. Programul va fi:
4444   0007
4448   0200
4452   0013
4456   0027
4460   0018
4464   0033
4468   9999
4472   0002, 8888,8888
4476   0001, 8888,4444
4480   0001, 8888,4448
4484   0001, 8888,4452
4488   0002, 8888,4456
4492   0001, 8888,4460
4496   0001, 8888,4464
4500   7777, 8888
4504   9999
Lucrrurile în cod mașină nu au stat așa de simplu pentru că acolo erau câteva zeci de coduri de instrucțiuni elementare și lipsa posibilității de a pune comentarii decât pe foaia de hârtie a programatorului ducea la mai dificultăți în a gestiona programe de câteva zeci sau sute de instrucțiuni. Și totuși așa au fost rezolvate probleme comolicate precum inversarea de matrice sau soluționarea de sisteme lineare de ecuații prin metoda Gaus-Seidel.
Programarea în cod mașină a avut misterul ei și nu trebuie sărit peste ea, căci în vremuri de restriște depanarea de programe revine la a lucra chiar pe cod mașină dacă dorim să soluționăm științific o problemă, mergând tot științific de la cauză la efect după un algoritm determinist, deși eroarea are caracter aleator, cred alții, noi nu.
Programarea în cod mașină a avut farmecul ei, dar ca orice mâncare dacă este mâncată în fiecare zi omul se satură și vrea să treacă la felul doi, adică o programare în limbaj de asalnlare, apoi la deser, programarea în FORTRAN sau COBOL.


(02 octombrie 2017)

Sunday, October 1, 2017

Tehnici de programare

Tehnicile de programare trebuie văzute ca seturi de reguli generate de noile resurse pe care le introduc limbajele de programare, astfel încât construcțiile software să fie realizate:
- eficient;
- optimal;
- în timp cât mai scurt;
- de înaltă calitate;
- cu costuri minime;
- în regim industrial.
La început fiecare a scris programe cum a crezut, adică după felul cum s-a priceput. Unii au căutat să învețe să scrie programe așa cum erau cele din cărțile de unde ei înșiși citiseră primele noțiuni de limbaje de programare. Alții mai inventivi căutau să îmbunătățească programele lor construind propriile reguli. Problemele cele mai complicate au apărut atunci când calculatoarele au avut resurse mai mari și s-au impus rezolvări ale unor probleme de mare complexitate cărora le corespundeau bucăți de programe scrise de mai mulți programatori, care puse cap la cap trebuiau să dea un întreg numit produs program sau software al unui sistem informatic. Obținerea acelui grad de omogenitate a părților de program care să dea întregul de la două sau cel mult cinci încercări a devenit posibilă numai prin definirea de tehnici de programare și scrierea de programe folosind aceste tehnici de programare.
De-a lungul timpului au apărut tehnici de programare foarte diferite, unele mai speciale decât altele, dar de fiecare dată s-a văzut progresul pe care acestea îl aduceau mai ales în zona creșterii productivității programatorilor și cea a creșterii calității produselor software.
Programarea în limbaj mașină a reprezentat exact ceea ce reprezintă culorile din tuburi pentru un pictor care și-a propus să facă o frescă imensă, fără să aibă altceva decât imaginea din mintea sa, peretele tuburile, pensule, penelul și bineînțeles talentul său genial dacă-l posedă. programatorul are doar câteva materii prime, câteva principii și restul trebuie el să facă și încă foarte bine.
Programarea ca artă este folosită și azi, mai ales de programatorii care lucrează programe pentru ei, fără a se gândi la ceea ce se întâmplă cu produsele lor finite, mai ales dacă ei înșiși recunosc că nu sunt interesați nici de reutilizabilitate și nici de integrabilitate.
Programarea structurată s-a dorit ceva absolut special, dar nu a prins pentru că a fost dusă acolo unde nu se potrivea, adică spre limbajul FORTRAN, limbaj prin excelență care folosea instrucțiunea GO TO, ceea ce programarea structurată interzicea categoric. Cred că limbajul COBOL ar fi fos mai nimerit pentru a implementa cerințele programării structurate, asigurând linearitatea prin instrucțiunea PERFORM folosită la maximum și inteligent.
Programarea orientată obiect a venit o dată cu limbajele Pascal și C++, dar chiar și acum sunt mulți programatori care sunt în stare să vorbească ore în șir despre obiecte și funcții virtuale, dar care se vede de la o poștă că mimează programarea orientată obiect pentru că nu o simt în sânge.
Programarea vizuală se adresează celor care doresc să realizeze construcții software cât mai complexe și care au la dispoziție resurse pe care le construiesc singuri și pe care sunt ajutați să le reutilizeze, cu o gestionare foarte bună a redundanței. Cine stă pe lângă un programator care folosește acestă tehnică are impresia că stă în fața unui vraci care face știință.
Programarea industrială este asemeni comunismului, visul de aur al programatorilor care doresc să dezvolte programe în regim indistrial, așa încât programele să nu mai pară chestii individuale, ci rezultatul unei munci de rutină. Acum limbajele de programare îi ajută foarte mult și nu va trece timp îndelungat când vor fi introduși in 100 de săli 100 de programatori și vor fi puși să scrie independenți unii de ceilalți, soluția unei probleme fără să li se dea alte detalii decât textul problemei - specificațiile deci, iar ei vor scrie cele 100 de texte sursă care nu vor diferi între ele decât cu cel mult 5%, ceea ce dacă s-ar face azi, diferențele ar fi cred eu de cel puțin 40%, programatorii lucrând azi tot independent unii de ceilalți.
În opinia mea, programatorii sunt un fel de poeți ai calculatoarelor și sunt foarte greu de strunit, iar a-i forța să scrie programe toți în același fel este un eșec, exact așa cum Școala de literatură din anii proletcultismului a eșuat, căci nu există nici linii tehnlogice de a scrie poezi și nici linii tehnologice de a scrie programe așa cum sunt linii tehnologice în industrie pentru a face șuruburi.
Tehnicile  de programare reprezintă în istoria informaticii exact ceea ce reprezintă periodizarea după modurile de producție în istorie. Comunei primitive  îi corespunde programarea în cod mașină. Sclavagismului îi corespunde programarea empirică. Pentru capitalism este programarea structurată. Imperialismului îi corespunde POO. Sorry, comunismului nu-i corespunde nimic.



(02 octombrie 2017)

Cercetarea în informatică

Cercetarea științifică în informatică este ceva mai diferită de celelalte domenii pentru că:
- totul se învârte în jurul calculatorului;
- se pornește de la un nivel destul de ridicat;
- empirismul nu are ce căuta;
- totul se cuantifică foarte riguros;
- este muncă de echipă interdisciplinară;
- nimic nu merge pe afirmație;
- totul trebuie demonstrat cu rezultate concrete;
- evaluările sunt făcute foarte rapid;
- uzura morală a contextului este dramatică;
- costurile sunt extrem de ridicate.
Cercetarea fundamentală în informatică înseamnă a descoperi noi teorii, noi domenii în informatică în strânsă corelație cu necesități de dezvoltare ale domeniului, care să permită avansarea acestuia folosind noi abordări necunoscute până atunci. Se obțin deschideri spre noi orizonturi care vin să determine un salt spectaculos cu efecte remarcabile asupra eliminării restricțiilor care erau dominante la un moment dat. Teoria bazelor de date a fost urmată de teoria bazelor de date relaționale, care a fost și ea urmată de teoria bazelor de date orientate obiect. În viitor se va privi cu nostalgie spre acestea pentru că vor exista alte teorii cu mult mai sofisticate care să pună de acord miliardele de articole rezultate din achiziții neomogene de date cu dezideratele privind regăsirea de informații folosind limbajul natural pur sau alte elemente de achiziții de date, chiar vagi. Acesta este doar un exemplu, dar cercetarea findamentală are menirea de a oferi exact ceea ce la ora actuală ceva ce nimănui nu-i trece prin minte, probabil de o simplitate extremă, asemeni cuiului, acului sau nasturelui și care să arunce în derizoriu tot ce se știa în informatica de azi sau de ieri. Rareori cercetarea fundamentală este muncă individuală, iar comunicarea în cadrul echipei este de importanță excepțională. Ea este creativitate și poezie  99%.
Cercetarea de dezvoltare  în informatică înseamnă a descoperi pornind de la teoriile descoperite recent, noi principii, noi proprietăți, noi domenii, care să facă pasul spre a concretiza ideile abstracte care au rezultat din teoriile ce se dezvoltă în cercetarea fundamentală. Cercetarea de dezvoltare face acel pas necesar în informatică spre  a fi identificate clase de probleme, clase de soluții de maximă generalitate, care pentru a fi puse în practică mai necesită încă un pas uriaș, acela al cercetării aplicative. De la teoria limbajelor formale se desprind o serie de clase de limbaje ale căror proprietăși se studiază în cadrul cercetării de dezvoltare. Se fac legături cu gramatici și din aproape în aproape, cercetarea de dezvoltare ajunge la suficiente elemente care să ducă la proiectarea de limbaje de programare pentru care se definesc gramatici și dacă se insistă se identifică chiar clasele de generare de procese de compilare, iar pasul spre implementarea acestor rezultate prin cercetarea aplicativă duc spre limbajul X și compilatorul Y. Cercetarea de dezvoltare se face în echipe complexe. Este creativitate 60% și experiență 40%.
Cercetarea aplicativă în informatică înseamnă a descoperi soluții la probleme concrete din producție, astfel încât prin aplicarea lor directă să se obțină rezultate palpabile, care să permită comparații cu ceea ce există deja și care să ducă la concluzia că noua soluție implementată este superioară în raport cu tot ceea ce exista înainte. Mai apare situația în care din lipsa de fonduri se caută o soluție cu caracter local la o problemă deja soluționată, dar tot prin activitate de cercetare se obține, criteriile de evaluare rămânând aceleași. Cercetarea aplicativă se face în echipe complexe. Este creativitate 30%, experiență  și realism restul de 70%.
La noi în țară s-a dezvoltat o intensă activitate de cercetare, iar clasificările pe cele trei tipuri ar fi încărcate de subiectivism, mai ales că munca aceasta este de mare complexitate indiferent la ce nivel se realizează. În opinia mea, o istoie trebuie să facă mai întâi inventarul problemelor, a soluțiilor fie teoretice, fie practice și cititorul să fie cel care stabilește apartenențe și să fie cel care face ierarhizări. Știu numai că s-a făcut cercetare științifică în informatică la ICI, la ITC, la Facultățile de Matematică Informatică, la Facultățile de Calculatoare, la Departamentelede Informatică Economică, dar au fost și alte locuri unde s-a venit cu soluții remarcabile pentru dezvoltarea informaticii românești.


(01 octombrie 2017)

Saturday, September 30, 2017

Învățământul universitar de informatică

Dacă ar fi fost stabilit un șablon de descriere a elementelor din portalurile universităților mi-ar fi fost și mie cu mult mai ușor de a reconstitui trecutul învățământului de informatică pe bază de documente. În mod normal ar trebui să existe la toate facultățile sau secțiile de informatică sau de calculatoare o frază de forma:
În anul.... a fost dată hotărârea numărul ..... din data ..... de către .... prin care se înființa ....., având în acest fel dovada materială a vechimii respectivei entități, altfel se vorbește exact ca atunci când se aniversa 2050 de ani de existență a statului dac unitar, deși eu nu-mi amintesc să se spună ce istoric din antichitate a zis cu precizie ce și cum.
Înformatica în Academia de Studii Economice are un trecut glorios, dacă se ține seama că în anul 2015 s-au împlinit 50 de ani de la înființarea secției care se ocupa de formarea studenților în ceea ce azo se numește informatică economică.
În iarna anului 1965 la inițiativa lui Manea MĂNESCU a luat ființă Secția de Mecanizarea și Automatizarea Calculului Economic, având prima promoție de ansolvenți în ceea ce acum se numește informatică economică în anul 1969, eu fiind absolvent al celei de a II-a promoții al acestei secții, lucru de care sunt foarte mândru pentru că am avut profesori preponderent din Politehnică, de la Universitatea București și de la Academie precum: Edmond NICOLAU, Nicolae RACOVEANU, Alexadru POPOVICI, Mircea GRUMĂZESCU, Dragoș VAIDA.
Înformatica în Universitatea București are un trecut foarte  îndelungat datorită marelui profesor și academician Grigore MOISIL. În 1960 a apărut Secția de Mașini de Calcul în cadrul Facultății de matematică și mecanică, iar în anul 1974 s-a dat concurs de admitere la Secția de Informatică, ceea ce mă face să cred că deja exista Facultatea de Matematică Informatică, unele păreri fiind precum că și în 1970 s-ar di dat admitere pentru o secție de Informatică, lucru foarte ușor de verificat pentru cei care doresc să construiască o istorie extrem de riguroasă, bazată pe documente, a informaticii de la Universitatea București, așa cum stă bine matematicienilor. Trebuie spus că încă din 1954 academicianul Grigore MOISIL, a ținut un curs care avea să se concretizeze în celebra sa lucrare de 704 pagini, Teoria algebrică a mecanismelor automate publicată la  Editura Tehnică din București în anul 1959, pe care am văzut-o la o colegă dată acesteia cu autograf de autor.
Au predat la Secția de Informatică de la Facultatea de Matematică Informatică de demult profesori precum: Leon LIVOVSCHI , Constantin POPOVICI, Ion CUCULESCU, Ion VĂDUVA, Ioan TOMESCU, Horia GEORGESCU, Octavian BÂSCĂ, VirgilCĂZĂNESCU,  Adrian ATANASIU, Ileana POPESCU, Dragoş VAIDA, Liliana LILIANA, Marcus SOLOMON,  George DINCĂ,Virgil CRAIU, Ioan ROȘCA, Gavril SÂMBOAN, Dorel FLOREA, Monica DUMITRESCU,  Anton ȘTEFĂNESCU și Constantin TUDOR.
Înformatica în Politehnica din București începe cu înființarea facultății de Automatică și Calculatoare în anul  1963 ia ființă facultatea de Automatică, în anul  În anul 1967, Catedra de Automatică se restructurează în catedra de Automatică I și catedra Automatică II, iar în anul 1969 se înființează Catedra de calculatoare, iar în anul 1970 iese de pe băncile Politehnicii prima promoție de absolvenți ai Secției de Calculatoare. Îm 1977 a avut loc divizarea pe specializări a Secției de calculatoare în partea de software și partea de hardware, cele două având primii absolveți super-specializați în anul 1979. Lucrurile se rafinează după Revoluție, când se adâncește diviziunea la patru specializări aprofundate, ca după anul 2005 adaptarea la Programul Bologna să vină abordarea recunoscută și  azi de domeniul calculatoarelor și tehnologiei informațiilor. Aceste date le-am luat din prezentarea Facultății de automatică și Calculatoare a UPB, facultate pe care au absolvit-o și copiii mei și pe care o consider ca fiind cea mai bună din domeniu la noi în țară prin curricula și prin marii profesori care-și desfășoară activitatea la cursuri și la seminarii acolo.
Înformatica în Universitatea Tehnică Gheorghe ASACHI din Iași începe cu anul 1990 când a fost înființată Facultatea de Automatică și Calculatoare. Acolo funcționează acum în anul 2017 Departamentul de Automatică și Informatică Aplicată și Departamentul de Calculatoare.
Înformatica în Universitatea de Vesti Timișoara- UVT are două laturi, una fiind Secția de Informatică Economică înființată în anul 1992 la FEEA - Facultatea de Economie şi de Administrare a Afacerilor, noi cei din Catedra de Informatică Economică având strânse legături de colaborare prin directorul de la Departamentul de Sisteme Informaționale pentru Afaceri,  profesoara Mihaela MUNTEAN care conduce doctorate în Șacoala  Doctorală de Informatică Economică din ASE. Tot în UVT funcționează Facultatea de Matematică şi Informatică cu Departamentul de Informatică unde au funcționat în vremurile de pionierat profesorii Ștefan BALINT și Ștefan MĂRUŞTER. 
Înformatica în Universitatea  din Craiova este marcată de faptul că în 1975 ies de pe băncile Facultății de Automatică și Calculatoare  din Craiova prima promoție. Trecutul informaticii la Craiova incepe în 1965, Hotărârea Consiliului de Miniştri nr. 894 din 27 august 1965, publicată în Buletinul Oficial din 10 septembrie 1965marcând înființarea Facultății de Electrotehnică unde se dezvoltă componentele de automatică și calculatoare, iar după anul 1990, ca în tot învățământul superior de la noi se reașează lucrurile în matca lor normală și firească, înființându-se facultatea de Automatic șu Calculatoare prin Ordinul Ministrului Învăţământului al Republicii România numărul 7751 din anul 1990. Îmi amintesc că pentru a consolida din punct de vedere științific demersul înființării Universității din Craiova mulți dintre profesorii și cercetătorii din domeniu care activau în București au început să facă naveta spre Craiova, iar unii s-au și stabilit acolo. profesorii Mircea PETRESCU, Constantin BELEA, Oleg CERNIAN au colaborat rodnic și au avut rezultate acolo. Mă așteptam ca la pagina de prezentare fie a facultății, fie a departamentului să găsesc o prezentare a trecutului, dar nu.
Tot la această universitate în cadrul Facultății de Economia și Administrarea Afacerilor funcționează Departamentul Statistică și Informatică Economică din anul 2011 după reforma impusă de legea învățământului, recunoscută și sub numele de legea lui BOC,  nr. 1 din ianuarie 2011, departament care este o continuare a Catedrei de Informatică Economică și Statistică înființată în 1990 și unde au lucrat mulți dintre absolvenții de la Facultatea de Cibernetică din ASE, precum Vasile GEORGESCU și Florin BICA sau absolvenți de ASE precum profesorul Constantin ROȘCA.
 Înformatica în Universitatea Transilvania din Brașov  ființează prin Facultatea de Inginerie Electrică și Știința Calculatorelor și a Facultății de Economia și Administrarea Afacerilor unde funcționează Departamentul de Management și Informatică Economică. De asemenea, în cadrul Universității Transilvania ființează Facultatea de Matematică Informatică, având o bogată tradiție. Amintesc faptul că în anii de dinainte de Revoluție acolo se organiza ConferinţeiNaţionale de Teoria Sistemelor din 2-3 decembrie 1977,  International Symposium on Applications of Mathematics in System Theory  27-30 December 1978, despre care știu că am participat acolo cu lucrări. Sufletul acestor manifestări științifice prestigioase era marea profesoară Claudia SIMIONESCU. 
Înformatica în Universitatea Alexandru Ioan Cuza din Iași este reprezentată de Facultatea de informatică, de Departamentul de Contabilitate, Informatică Economică şi Statistică, avându-l acum director pe prof. univ. dr. Florin Dumitriu,  din Facultatea de Economie şi Administrarea Afacerilor. Am participat la multe manifestări științifice de prestigiu de acolo și la susțineri de teze de doctorat, pe care le apreciez ca fiind de înalt nivel științific. Să nu uităm că la Iași s-a organizat în 1980 o sesiune națională a cercurilor științifice studențești de mare anvergură și că profesorii de acolo deja erau cu tradiții solide în zona informaticii teoretice și practice, foarte bine ancorați în dezvoltarea unor cercetări ale căror rezultate au fost concretizate în lucrări științifice fundamentale precum cele coordonate de marele profesor Ion CREANGĂ.

După anul 1990 o dată cu înființarea altor universități în țara noastră, fiecare dintre acestea fie au inclus în structura lor Facultăți de informatică asociate matematicii, fie secții de informatică economică sau informatică de gestiune în cadrul  Facultăților de Economie şi de Administrare a Afacerilor, dar fiind parte a unei istorii mult prea recente mă limitez a nu face detalieri.

Învățământul universitar de informatică este atât de bogat încât chiar numai despre el trebuie scrisă o istorie care musai trebuie să înceapă cu capitole pe paginile web de prezentare a facultăților și a departamentelor care au în titulatură fie cuvântul informatică, fie cuvântul calculator, dar să se folosească afirmații bazate pe documente, nu pe vorbe și pe amintiri.
Concluzie: în ziua de azi există prin Ordinul de ministru Nr. 4843 din 1 august 2006  în învățământul superior românesc specializările Calculatoare și teoria informației, Informatică, Informatică Economică și atât.






(30 septembrie 2017)

Friday, September 29, 2017

Cărți de PASCAL

Limbajul PASCAL, deși este un limbaj frumos și interesant, cu foarte multe facilități, n-a prins în viața de zi cu zi a programatorilor din mai multe cauze și eu aș enumera câteva:
- cei ce veneau in FIRTRAN l-au considerat greoi;
- operatorul de atribuire este în PASCAL :=, adică două caractere, cam mult;
- incrementarea se face în PASCAL a:=a+1; iar în C a++; adică mult mai simplu;
- delimitarea de blocuri se face în PASCAL cu begin și end, iar în C prin {};
- pentru tipul întreg se folosește în PASCAL integer, iar în C doar prescurtarea int;
- constructorii de compilatoare și de biblioteci s-au orientat spre C, C++ și C#.
În școlile noastre limbajul PASCAL s-a predat destul de mulți ani, probabil cam prea mulți datorită unei inerții de neînțeles.
Iată și câteva cărți de PASCAL:
  • Ion Gh. Roşca (coordonator), C. Apostol, B. Ghilic-Micu, V. Roşca - Prelucrarea fişierelor în PASCAL, Editura Tehnică, Bucureşti, 1994, 
  • Ion Gh. Roşca (coordonator), C. Apostol, B. Ghilic-Micu, V. Roşca – Programare sistematică în Pascal, Editura Didactică şi Pedagogică, 1998, 294 pag. 
  • Ion Gh. Roşca (coordonator), C. Apostol, B. Ghilic-Micu, V. Roşca - Introducere în programare. Teorie şi practică Pascal, Casa de Editură şi Presă Viaţa Românească, Bucureşti, 1993, 324 pag., reeditată în 1996.
  • Ion Gh. Roşca (coordonator), B. Ghilic-Micu, C-tin Apostol, Valer Roşca, Cătălina-Lucia Cocianu – Programarea calculatoarelor. Tehnica programării în limbajul Pascal, Editura ASE, 2000, reeditată în 2001, 2002, 2004 (233 pag. şi CD);
  • Ion Gh. Roşca, C. Apostol, B. Ghilic-Micu, V. Roşca, M. Stoica – Ghid de operare Turbo-Pascal, Editura ASE, Bucureşti, 1999, 56 pg;  
  • Sabin GORON, Cornelia PAVLIC - Programare în Borland Pascal, Editura Risoprint, Cluj-Napoca, 2000 
  • Sabin GORON - Turbo Pascal : Teorie, exemple, Editura Risoprint, 1998, Cluj-Napoca, 223 pg. 
  • Sabin GORON, dan RACOVIȚAN, Cornelia PAVLIC - Programare şi exemple în limbajul Turbo Pascal, Editura Risoprint, Cluj-Napoca, 1997. 
  • Valeriu IORGA - Programare in TURBO Pascal, Culegere de probleme, capitolele 1-5,Editura IVT-TOTAL-SERV, Bucuresti, 1992. 
  • Ion IVAN, Romică ADAM - Structuri de date si Programe Pascal, Bucuresti,1992. 
  • Victor-Valeriu PATRICIU - Criptografia şi securitatea reţelelor de calculatoare cu aplicaţii în C şi PASCAL, Editura Tehnică, București, 1994, 320 pg.

Este ușor nedrept că acest limbaj a căzut prea repede în desuetitudine pentru că față de limbajul C sau derivatele acestuia, nivelul de indirectare are niște flexibilități care numai peste ani se vor dovedi a fi fantastice, dar sper să nu fie prea târziu.



(29 septembrie 2017)

Thursday, September 28, 2017

Publicațiile de informatică

Fără a greși deloc, spun că suntem o nație de persoane care scriu, scriu și iar scriu, uneori chiar mai mult decât ar face-o dacă cineva le-ar dicta-o, căci până la un punct cărțile, articolele și extrasele din proceedings-uri aduc puncte foarte necesare promovărilor. Pentru unii care mai dau și lovitura cu best sellers-uri mai le aduc și bănet cu sacul.
Cunoscând pe unii autori le-am purtat respectul, cum pentru unii nu am avut nicio considerație pentru că știam cum scriu cărțile, mai ales că a pune monopolul pe un domeniu este și indecent dar și imoral, lucru pe care editurile de dinainte de 1989 îl practicau doar pentru că exista un parandărăt de 30% din drepturile de autor statuat între părți și mai ales respectat tacit de ambele tabere ca tîrg murdar.
După 1989 au apărut și edituri și autori foarte mulți, existând o concurență acerbă în a fi primii care ies cu ceva pe piață pebtru a rupe gura târgului, pentru a avea o cifră de afaceri cât mai mare, căci este vorba de economie de piață, inclusiv prin condiționări de o vulgaritate crasă privind dezvoltarea ritmului de achiziții de carte în preajma examenelor la oarece discipline, cu profesori-autori de volume supraevaluate, grupul țintă fiind definit 100% prin concordanța între cuprinsul cărții și structura programei analitice a disciplinei de examen.
Un business drăgălaș s-a făcut și cu manialele de liceu și se mai face, căci se știe cu rigurozitate numărul de elevi, potențiali cumpărători și dorința editurilor de a face profit, corelația fiind legată de riscul pierderii licitațiilor, căci informatica a ajuns și la ciclul de învățământ unde manualele se distribuie gratuit, iar chestia este identică cu mersul gratuit al pensionarilor pe mijloacele de transport în comun supraterane, formă de a scoate din rahat pe prestatorii de servicii.
Am scris și eu un manual, dar eroarea perpetuată de editură între byte și bit m-a umplut de scârbă și oroare, iar privirea cu detașare mă determină să fieu rezervat față de mocirla editării de manuale, căci cu cei 7% din prețul manualului dați autorului, niciun autor nu și-a cumpărat vreodată un Ferarri și nu-și va cumpăra în veacul veacurilor, vorba marelui Ștefan din piesa lui Barbu ȘTEFĂNESCU DELAVRANCEA, actul I, scena a VIII-a.
Publicațiile de informatică sunt nenumărate, cărți, reviste care n-au rezistat, volume de la conferințe, materiale multimedia și multe, foarte multe chestii puse în mediile virtuale. Cărțile și volumele de la conferințe ar fi un business dar cu riscuri enorme, căci lumea nu prea mai citește cărți tipărite.
În continuare voi scrie despre cărți, ceva mai mult, despre reviste, ceva mai puțin căci revistele de informatică nu au rezistat și am să scriu și despre volumele lucrărilor prezentate în conferințe, deși au un circuit ceva mai restrâns, că așa dă bine oricărei istorii a informaticii manifestată la mioritici.


(28 septembrie 2017)