Showing posts with label OOP. Show all posts
Showing posts with label OOP. Show all posts

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 14, 2017

POO, adică programarea orientată obiect

Programarea orientată obiect înseamnă un salt extraordinar făcut în programare, exact cum a zis Neil ARMSTRONG când a ajuns pe Lună: un pas mic pentru om, un salt uriaș pentru omenire, deși unii cârcotași,  consideră că n-ar fi zis chiar așa.
La noi POO a început să se dezvolte abia după ce au fost cumpărate calculatoare personale ceva mai puternice, de la micoprocesoarele 386 cu cel puțin 4Gb mamorie cache dar și cu medii de dezvoltare ceva mai tari decât cele de tip Borland. Atât limbajul C++ cât și limbajul PASCAL dispun de facilități pentru implementarea în programe a tuturor proprietăților obiectelor, cu avantaje mai ales. Deși au apărut nenumărate lucrări despre programarea orientată obiect, inclusiv o carte de analiză, adică OOA, nu voi conchide că cititorul a găsit acele elemente care să-l convingă că trebuie să gândească programele altfel decât cum o făcea înainte. De aceea am văzut nenumărate texte care mimau lucru cu obiecte, căci erau introduse forțat clasele, căci de vedea de departe că cei ce le scriseseră nu simțeau lucrul cu obiecte ca pe un fapt natural.
dacă iau în considerare că mai puternic s-a făcut programare orientată obiect după anul 2000, pentru cei 17 ani care s-au acurs este deja vorba de o istorie recentă și lucrurile nu sunt decantate. Cum aplicațiile online de contact cu mine în calitate de client nu sunt entuziasmante, nu am să mă pronunț câr de grozave sunt, căci mai degrabă era rezonabil să se facă niște șabloane și nu să se lucreze ca în anii '60 când nu știa dreapta ce face stânga în programare și fiecare întreprindere, oficiu de calcul, centru de calcul își scria propriul său program de calcul de salarii încât o harababură și o risipă de resurse nici să avea cum să se realizeze altcumva. 
Cine are curiozitatea să intre pe portalurile a două universități se ia cu mâinile de cap și se lasă păgubaș că numai în 1.000 de click-uri ajunge, dacă ajunge la informația dorită. Să mai treacă 10 ani și după 25 -30 de ani de POO lucrurile vor fi decantate cât de cât pentru a încăpea în paginile unei storii a informaticii românești. Abia atunci se va vorbi de aplicații care au funcționat ca lumea și abia atunci se vor găsi și aplicații dar și rezultate originale în zona software sau hardware, altele decât succesul lui Bitdefender, care domină copios piața de anti-viruși. Despre hackerii mioritici nu vreau să discut de prea multă rușine, chit că unii dintre ei stăpânesc tehnologia POO, deși invidioșii îi consideră idioți care nu-și canalizează corect inteligența.
Se vrobește prea lult despre programarea orientată obiect, POO  sau OOP, dar aș vrea să văd clasele definite de dezvoltatorii de software și să le știu încorporate în bibliotecile uzuale astfel încât dacă aș scrie ceva aplicații să le am la dispoziție și să fie atât de bune și de utile încât să simt că într-adevăr POO mi-a ușurat și viața și munca de programator, că mi-a crescut productivitatea mie și a crescut calitatea textelor pe care le fac, spre bucuria unor utilizatori din ce în ce mai exigenți mai nerăbdători să piardă timpul în a ajunge la informațiile dorite în mai mult de trei click-uri, nu două cum cere lumea spălată.
Despre POO pentru programe scrise în limbaj de asamblare merită o dezvoltare separată, pe care probabil o voi face ceva mai târziu. Și zbaterea limbajului COBOL spre OOP a fost o chestie care la noi nu a prins, deși așa cum erau aduse completările erau în linia a ceea ce se știa despre acel limbaj și nu cred că ar fi fost prea greu să se facă software în OO COBOL. N-a fost să fie. Nici cu limbajul FORTRAN n-a fost mare câștig după eșecul cu programarea structurată în acest limbaj. Programatorii FORTRAN erau prea uzați ca să asimileze OOP și să facă software în OO FORTRAN, iar tinerii programatori Look Back in Anger, ca în filmul englezesc din 1959.
POO în afara unei coerențe a reutilizării claselor rămâne doar o poveste interesantă și atât.


(14 octombrie 2017)