Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Tuesday, November 7, 2017

Istoria românească a limbajelor cod mașină

Istoria românească a limbajelor cod mașină este extrem de bogată pentru că:
- au fosty construite multe calculatoare electronice înainte de 1965;
- primele calculatoare erau originale și difereau unele de altele;
- calculatoarele cu tuburi și relee lucrau numai în cod mașină;
- ceea ce a pătruns de la alți constructori erau tot la nivelul de cod mașină;
- simțul practic a simplificat multe la designul limbajelor cod mașină.
Trebuie pornit de la ideia că în vremurile de demult se știau multe despre bazele de numerație, dar una era să se știe și cu totul altceva era să se și lucreze efectiv în acele baze de numerație cu ușurința de azi. De aceea superba bază B16 de azi era ocolită în anii '50 căci implementarea era problema din cauza vitezei de prelucrare și a capacității de memorie, ambele extrem de limitate. Calculatorul CIFA 1 avea 50 operații pe secundă și capacitate de memorie de 512 cuvinte a 4 biți fiecare cuvânt, adică 256 bytes de azi, adică 0,25 Kb, ceea ce este dramatic de puțin. Și totuși...
Când se programa în cod mașină trebuia lucrat numai cu numere pentru că:
- se lucra cu operanzi din memorie M și din registre/regiștri R;
- textul programului scris în limbaj natural este T;
- textul programului scris în cod mașină este T';
- operanzii erau stocați în zone de memorie ale căror adrese erau numere;
- operatorii erau puși în corespondență cu numere;
- totul era la nivel de operații elementare;
- operațiile elementare erau de tipul R-M, M-R și R-R;
- scrierea unui program se făcea mai întâi folosind cuvinte din limbajul natura, rezulta texul T;
- scrierea în cod mașină, doar cu cifre se făcea  ca proces de codificare a textului T în T';
- urma perforarea programului pe bandă de hârtie, rularea și obținere rezultate.
Entuziasmul a fost atât de mare încât dificultățile nu păreau dificil de trecut tocmai pentru că trecusem de la a lucra pe mașini mecanice sau electromecanice ce efectuau dor o singură operație, la lucru pe un automat numict calculator electronic care executa operații precum:
- adunări;
- scăderi;
- înmulțiri;
- împărțiri;
- comparații;
- salturi condiționale;
- salturi necondiționale;
- alocare cu inițializare;
- inițializări;
- atribuiri;
- încă altele multe dar nu câte are limbajul de asamblare de la microprocesoarele din ziua de azi care sunt de sub 256 dar nu cu mult sub acest număr.

       *
*           *

Istoria românească a limbajelor cod mașină este o pagină frumoasă, spumoasă, care stârnește nenumărate nostalgii. Mulți se întreabă:
- Cum a fost posibil așa ceva?
Răspunsul este banal, ca orice răspuns la o întrebare grea și anume:
- Iac-așa!
Muți de admirație mergem mai departe...
Voi veni cu detalii pe măsură ce voi găsi materiale despre listele de coduri de la diferitele calculatoare românești care lucrau în cod mașină precizând listele de coduri pentru operații, modurile de alocare de zone de memorie pentru operanzi, codificările pentru registre și restricțiile care nu erau deloc puține referitoare la tipurile de expresii de adresare, țtiut fiind faptul că nici în ziua de azi nu plouă cu operații de tip M-m și comutativitatea tipurilor de operanzi în expresiile de referire a operanzilor nu are gradul de generalitate pe care chiar ni l-am dori noi poeții care am creat Miorița și Balada Meșterului Manole, în ambele fiind vorba de crime și implicit de criminali. Ca și în acele creații folclorice, în programele scrise în cod mașină exista un secret și cheia descifrării rămânea cheie.


(07 noiembrie 2017)

Istoria românească a limbajeor de programare

Aici nu mi-am ropus să sciu despre limbaje de programare în ideia de a-i învăța pe cei dornici să lucreze cu calculatorul luând limbajele de ultmă generațue și să mă dau eu rotund cât de șmecher sunt în a programa folosind resursele acelor limbaje. Fiind ceba de istorie, voi scrie despre cum au penetrat limbajele de programare pe meleagurile noastre mioritice și cum au și dispărut, atunci când uzura lor morală le-au făcut să devină inutile și demodate.
Când la începutul anilor '70 am avut în mână cartea lui J.E. Sammet intitulată Programming Languages: History and Fundamentals, apărută în anul 1969,  mi s-a părut de-a dreptul bizar să facă cineva istorie știind că limbajul FORTRAN apăruse în 1950, limbajul COBOL apăruse și el în 1959 și eu știam că istorie înseamnă ceva cu mult mai vechi, mai hărtănit dacă nu chiar dispărut pe vecie. Iată acă acum la 67 de ani de la primul program FORTRAN scriu și eu ceva de istorie, dar nu în ideia cum au fost create și ce s-a întâmplat cu acele limbaje de programare ci despre:
- perioadele când au apărut programele la noi scrise folosindu-le;
- ieșirea limbajelor din decorul informaticii;
- eventuale implementări locale;
- limbaje specializate create la noi și implementate.
Dacă despre evenimentele de acum 2.000 e ani se vine cu mărturii scrise, cu fragmente de lespezi cu inscripționări, cu monumente legate de acele evenimente sau cu statui, în zona informaticii românești care nu depășește 70 de ani lucrurile sunt de un dramatism îngrozitor pentru că:
- nu s-au conservat calculatoare utilizate în vremurile de demult;
- nu s-au conservat imprimate cu programe scrise și datate  în vremurile de demult;
- nu există nici benzi magnetice, nici benzi perforate cu programe scrise în vremurile de demult;
- nu există brevete din care să rezulte software realizat  în vremurile de demult;
- nu există un catalog cu programe din care să rezulte drepturi de autori  în vremurile de demult;
- nu există un muzeu cu cărțile de limbaje de programare scrise în vremurile de demult;
- nu există planuri de învățământ în care să apară limbajele predate  în vremurile de demult.
Toate acum se reconstituie din frânturi, exact cum este cu limba dacă rezunată la cuvintele mânz, viezure varză, brânză,  lift.
Acum voi scrie ceea ce am identificat eu.
Cartea de FORTRAN a lui Petre DIMO a fost tipărită în 1971.
Cartea de programare în FORTRAN a lui Stelian NICULESCU a fost tipărită în 1972.
Celebra carte de FORTRAN a lui Horia GEORGESCU și Octavian BÂSCĂ a apărut în 1975.
În Centrul de calcul al ASE s-u rulat primele programe FORTRAN în 1969.
Eu am scris primele programe în FORTRAN în anul 1969 către sfârșit.
Cartea de COBOL a Margaretei DRĂGHICI a fost tipărită în 1972.
Vasile PETEANU, Sabin GORON, Geza VENCZEL, Ioan MOLDOVAN a apărut în 1976.
Cartea lui Ilie VĂDUVA, Gheorghe POPA, Vasile FLORESCU de COBOL a apărut în 1979.
În timp au apărut multe materiale în edituri cu chestii despre limbajele cele mai folosite.
Am a mă lăuda că sunt în posesia unei imprimante pe care este scris numele meu destul de veche cu un program scris în COBOL și ar constitui o piesă alături de altele dacă ar apare, pentru a sta mărturie peste timp că și la noi s-a făcut programare și în limbajul FORTRAN și în limbajul COBOL nu doar exemplificativ, ci concret pentru a rezolva probleme. La fosta Danubiana, dacă ar mai exista o arhivă, s-ar găsi acolo imprimante cu programe COBOL, știu sigur, că am scris și eu câteva și era în anul 1971, iar aplicațiile de BOMP foloseau și componente COBOL la greu căci în acele vremuri nu era niciun secret la câmpurile de adrese cu care se accesau articole din fișiere pentru a face descompunere de produse cu cumulare de repere. Eu am folosit documentație IBM de BOMP și cred că dacă mi s-ar da așa ceva, aș reconstitui cu acuratețe de unde am luat structurile de articole și ce-am făcut cu câmpurile, căci mi-au plăcut nespus de multe acele detalii și acele tehnici de regăsire a descrierii  articolelor din structurile arborescente folosind adrese din fișierele de legături.
Ca și la cechipamentele de calcul și în cazul limbajelor de programare se vorbește de generații de limbaje de programare, unde se identifică:

  • prima generație de limbaje de programare, formată din limbajele cod mașină;
  • a doua generație de limbaje de programare, formată din limbajele de asamblare;
  • a treia generație de limbaje de programare, formată din limbajele FORTRAN, COBOL, Algol, BASIC, C, PASCAL,  C++, C#, Java, Ruby, Perl;
  • a patra generație de limbaje de programare, formată din limbaje într-o listă foarte diversificată;
  • a cincea generație de limbaje de programare, formată din limbajele inteligenței artificiale Lisp, XML, Planner, Prolog,Python.

Această împărțire mi se pare destul de imprecisă dacă se are în vedere faptul că totuși informatica manipulează seturi mari de date și limbajele de programare trebuie musai să se lipească de un SGBD pentru a fi în rândul utilizatorilor ce trebuie să transforme datele în informații și apoi informațiile în cunoștințe, chestie despre care toată lumea discută, dar eu nu am văzut un sistem expert care să se bazeze pe așa ceva și care să lucreze în economia reală și lumea să se bucure imens și veșnic.
Un programator trebuie să știe un limbaj de programare, oricare ar fi el, dar obligatoriu, pentru a fi programator de top mai trebuie să știe limbajul de asamblare al calculatoarelor cu care lucrează, pentru a înțelege bine cum stau lucrurile în programele pe care le scrie și le execute. În cariera sa programatorul învață tot timpul, fiind obligat să știe să lucreze cam la 7 ani cu un alt limbaj. Învățarea unui nou limbaj de programare se face prin diferențieri. Programatorul trebuie să știe la noul limbaj care sunt:
- setul de caractere;
- lista cuvintelor cheie;
- regulile de construire a identificatorilor;
- flexibilitatea de a defini tipuri și structuri de date ;
- lista de operatori și rangurile lor ;
- regula de evaluare a expresiilor ;
- modul în care se scriu comentariile ;
- modul de implementare a recursivității ;
- implementarea structurilor fundamentale de control ;
- alcătuirea bibliotecilor standard;
- sintaxa limbajului;
- structurarea pe blocuri.
Dacă programatorul a intuit cum stau lucrurile, va constata că multe lucruri se repetă de la un limbaj la altul și reținând diferențele ce apar la noul limbaj, dar folosind experiența de dinainte efortul nu este copleșitor de a trece la a scrie programe bune în noul limbaj. Lucrurile devin mai dificil de gestionat dacă limbajul vine cu o altă filosofie de programare. Programatorul nu trebuie să se năpustească el să scrie prorgame cu acel limbaj, ci să studieze programe scrise de alți programatori experimentați pentru a se familiariza cu noul context. este ca în poezie. Nimeni nu se va apuca să scrie poezie decât după ce a citit o sută de cărți de poezie.


(09 noiembrie 2017)

Saturday, November 4, 2017

Generația a VII-a de dispozitive de calcul corespunde calculatoarelor electronice cu circuite integrate pe scară largă și foarte largă . La noi s-a produs o variantă avansată a calculatoare personale din familia Feix dar și calculatorul Junior și calculatorul personal COBRA la Brașov.
Detalii despre toate acestea se află pe Internet dacă se face căutare pe cuvinte cheie precum istoria calculatoarelor românești, COBRA, Felix PC aMIC și altele.

     *
*          *
Voi fi recunoscători turutor celor care  mă vor ajuta fie cu detalii, fie cu elemente care să corecteze cele relatate aici. Toate materialele propuse de mine aici la generații de echipamente de tehnică de calcul sunt provizorii, întrucât documentarea provine din mai multe surse pe care nu am avut posibilitatea să le verific.




(04 noiembrie 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) 

Tuesday, October 3, 2017

Programatorii

Programatorii din anii'60 diferă de programatorii din anii'80, iar programatorii dein anii'90 deiferă de cei din ziua de azi.
Programatorul anilor'60 pentru a soluționa o problemă pe calculator parcurgea următorii pași:
P01: primea problema de rezolvat.
P02: se documenta pentru a găsi algoritmul de rezolvare.
P03: scria pașii algoritmului pe o foaie de hârtie.
P04: scria formulele și stabilea variabilele de intrare pe o foaie de hârtie..
P05: stabilea pe o foaie de hârtie. variabilele pe care le tipărea.
P06: elabora schema logică pe o foaie de hârtie.
P07: verifica și corecta schema logică.
P08: scria textul programului pe o foaie de hârtie.
P09: introducea textul sursă pe bandă de hârtie prin perforare.
P10: introducea programul în calculator prin citirea benzii.
P11: verifica și depana programul.
P12: testa programul pe mai multe date de intrare.
P13: anunța beneficiarul,  dar tot el se ocupa de rulările ulterioare.
Programatorul anilor'70 - '80 pentru a soluționa o problemă pe calculator parcurgea următorii pași:
P01: primea problema de rezolvat.
P02: se documenta pentru a găsi algoritmul de rezolvare.
P03: scria pașii algoritmului pe o foaie de hârtie.
P04: scria formulele și stabilea variabilele de intrare pe o foaie de hârtie..
P05: stabilea pe o foaie de hârtie. variabilele pe care le tipărea.
P06: elabora schema logică pe o foaie de hârtie.
P07: verifica și corecta schema logică.
P08: scria textul programului pe foi de programare.
P09: depunea foile de programare la dispeceratul de perforare cartele.
P10: operatoarele introduceau textul sursă pe cartele perforate.
P11: depunea setul de cartele la dispeceratul de rulare pe calculator.
P12: operatorul-calculator introducea programul în calculator prin citirea cartelelor.
P13: programatorul venea și ridica setul de cartele și imprimanta de la dispecerat.
P11: verifica imprimanta și depana programul.
P12: depunea setul de cartele la dispeceratul de rulare pe calculator.
P13: operatorul-calculator introducea programul în calculator prin citirea cartelelor.
P14: programatorul venea și ridica setul de cartele și imprimanta de la dispecerat.
P15: testa programul pe mai multe date de intrare.
P16: dacă programul era bun, anunța beneficiarul,  dar tot el se ocupa de rulările ulterioare.
Acum lucrurile stau cu totul altfel. Programatorul primește tot ce trebuie să facă fie personal, fie pe poșta electronică. El lucrează pe laptopul său și livrează ceea ce a realizat cui i-a cerut să facă acel program. Nu se mai interpun prea mulți intre programator și beneficiar. Acum beneficiarul este chiar un integrator de componente, nu neapărat un cetățeam care preia rezultate date de produsul program realizat de programator, produs care face niște prelucrări de date în sensul a ceea ce  se știa cândva.
Înainte printr-un programator bun se înțelegea ceva, iar acum un programator este bun în cu totul alte condiții. Înainte programatorul bun avea numărul de rulări foarte mic până obținea rezultatele dorite. Acum programatorul bun este cel care oferă cea mai bună soluție în raport cu criterii date.



(03 octombrie 2017)

Thursday, September 28, 2017

Cărți de C, C++ și C#

Limbajul C și derivatele lui ulterioare C++ și C# au prins în lumea programatorilor pentru:
- simplitate;
- mbogăție;
- ușurință.
De aceea au apărut și compilatoare extrem de puternice, dar și cărți care să-i facă pe programatori să utilizeze cât mai bine resursele în marea lor diversitate, pentru a obține cele mai eficiente soluții. Cărți trecute aici dar și folosite sunt:
  • Ion SMEUREANU, Ion IVAN, Marian DARDALA - Structuri de date si obiecte in C++, Editura CISON, Bucuresti, 1998
  • Ion SMEUREANU, Ion IVAN, Marian DARDALA - Limbajul C++ prin exemple, Editura CISON, Bucuresti, 1995, pg. 256, ISBN 973-96370-0-0.
  • Ion SMEUREANU, Ion IVAN, Marian DARDALA - Structuri de date si obiecte in C++, Editura CISON, Bucuresti, 1998
  • Ion IVAN, Ion SMEUREANU - PROGRAMAREA IN LIMBAJUL C, Culegere de probleme, Editua ALFAR, Rm. Valcea, 1992 261 pg, ISBN 973-95080-6-5
  • Sorin TUDOR - Bazele programarii in C++, Editura L&S, Bucuresti, 1998,300pg., ISBN 973-96382-7-9
  • Liviu NEGRESCU - Limbajele C si C++ pentru incepatori : vol 1 : partea I : Limbajul C, Editura Albastra, Cluj-Napoca, 2000, 309 pg.
  • Liviu NEGRESCU - Limbajele C si C++ pentru incepatori : vol. 2 : Limbajul C++, Editura Albastra, Cluj-Napoca, 2000, 519 pg.
  • Liviu NEGRESCU - Limbajele C si C++ pentru incepatori : vol. 2 : Limbajul C++, Editura Albastra, Cluj-Napoca, 1996, 1030 pg.
  • Liviu NEGRESCU - Limbajele C şi C++ pentru începători : Programe de optimizare şi grafică. Vol. 4, Editura Albastra, Cluj-Napoca, 2000, 407 pg.
  • Ion SMEUREANU, Marian DÂRDALĂ - Programarea orientata obiect in limbajul C++, Editura CISON, București, 2002, 333 pg.
  • Ion SMEUREANU, Marian DÂRDALĂ, Adriana REVEIU - Visual C#.Net, Editura CISON, București, 2004, 311 pg.
  • Ion SMEUREANU, Marian DÂRDALĂ, Ion IVAN - Structuri si obiecte in C++ : note de curs si teste grila, , Editura CISON, București, 1998, 189 pg.
  • Mirel COȘULSCHI, Octavian MUSTAFA. -Programare în C++ : Concepte moderne şi aplicaţii, Editura Prouniversitaria, Craiova, 2015
  • Dragoș ACOSTĂCHIOAE - Programare C şi C++ pentru Linux, Editura Polirom, Iași, 2002, 216 pg. 
  • Laurenţiu PĂDEANU - Programarea orientată pe obiecte în limbajul C++ : Suport de curs, Editura Eurobit, Timișoara, 1993, 110 pg.
  • Ioan JURCĂ - Programarea orientată pe obiecte în limbajul C++,, Editura Eurobit, Timișoara, 1992, 134 pg.
  • Liviu NEGRESCU, Lavinia NEGRESCU - Limbajul C# pentru începători : depanarea programelor şi tratarea erorilor; proprietăţi, tablouri şi clasa Array. vol.6: Mediul de programare Visual Studio C#, Editura Albastră, Cluj-Napoca, 2005, 200 pg.
  • Dorin IRIMESCU, Cristian MORĂRESCU - Programmieren mit C und C++, Editura Printech, București, 1997.
Cărți de C, C++ și C# au o largă răspândire în rândurile programatorilor pentru că cele trei limbaje ilustrează cel mai bine evoluția de la programarea structurată către programarea orientată obiect, cu creșterea accelerată a reutilizabilității construcțiilor prin tehnici de generare evoluate care pornesc de la stabilirea moștenirii de proprietăți în raport cu componente de bibliotecă transformate ușor în operanzi prin transmitere de proprietăți de la parte către întreg.
Mai sunt și alte cărți valoroase despre acest limbaj pe care le știu, dar de care mă voi ocupa în perioadele viitoare pentru că nu doresc să nu fie consemnate aici, căci din ele am reținut elemente interesante pe care le-am și folosit în activitatea mea de la catedră și încă îmi mai sunt necesare.

(28 septembrie 2017)

Cărți de structuri de date

În opinia mea cărțile de structuri de date reprezintă abecedarul definirii și utilizării re resurse pentru orice dezvoltator de software, fără a trece la scrierea de variante de programe, prin alegerea celor mai potrivite dintre ele, pornind de la cunoașterea în prealabil a proprietăților pe care structurile de date le au. Una este a scrie un program de inversare a unei matrice folosind ca structură de date o matrice definită prin linii și coloane și cu totul altfel stau lucrurile dacă programatorul va construi un fișier în care are atâtea articole câte elemente are matricea sau și mai rău, linii sau câte coloane are matricea, iar referirea unui element ar presupune de fiecare dată deschiderea fișierului, cu localizarea elementului căutat.  dacă însă se lucrează cu o matrice rară de un milion de linii și un milion de coloane, ar fi o catastrofă să se lucreze cu blocuri de  matrice de dimensiuni mai mici definite static în loc să se lucreze cu o structură dinamică să zicel listă dublu înlănțuită.
Cam toate cărțile de structuri de date sunt construite după aceeași regulă, folosindu-se un șablon unitar pentru fiecare structură, descriere, proprietăți, funcții, soluții pentru operații pe ele cu proceduri nerecursive, proceduri recursive, evaluări de complexitate și biblioteci eficiente de texte sursă cu abordări clasice, respectiv, obiectuale. Există nenumărate cărți despre acest subiect și am extras doar o parte din ele, fiindcă nenumărați autori au fost ispitiți să scrie în legătură cu acestea, căci perfecțiunea atrage ca un magnet. Cărțile de  structuri de date își au rădăcinile în vechimea programării de la tătucul D.E. KNUTH, căci ele a scris cu ardoare despre toate acestea folosind calculatorul său ipotetic cu soluțiile perfecte date în limbajul perfect MIX, niciodată, bag samă, implementat 100% și la scară planetară pentru a fi folosit de noi, epigonii săi cei nevrednici.
  • Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date, Vol. 1, Editura ASE, Bucuresti, 2008, 768 pg., ISBN 978-606-505-032-7.
  • Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date, Vol. 2, Editura ASE, Bucuresti, 2008, 532 pg., ISBN 978-606-505-033-4
  • Cristian BOLOGA - Algoritmi si structuri de dateEditura RISOPRINT, Cluj-Napoca, 2005, ISBN 973-651-003-8, 323pg.
  • Ioan TOMESCU - Data Structures, Editura Universitatii Bucuresti, Bucuresti, 2004, ISBN 973-575-866-0, 206 pg.
  • Emanuela CHERCHEZ, Marinel ȘERBAN - Programarea in limbajul C/C++, Editura POLIROM, Iasi, 2006, 291pg, ISBN (10)973-46-0109-1
  • Valentin CRISTEA, Irina ATHANASIU, Eugenia KALISZ, Valeriu IORGA - Tehnici de programare, Editura TEORA, Bucuresti, 1997, 169 pg, ISBN 973-601-072-4
  • Marian GHEORGHE, Octavian PATRASCOIU, Marius MARIAN, Eugen DUMITRASCU - Tehnici de programare Editura Universitaria, Craiova, 2007, 217pg, ISBN 973-742-304-6
  • Ion IVAN, Cristian IONIȚĂ, Cătălin BOJA, Marius POPA, Adrian POCOVNICU, Daniel MILODIN - Practica dezvoltarii software orientata pe structuri de date, Editura ASE, Bucuresti, 2005,223pg, ISBN 973-594-630-0
  • Valeriu IORGA,Cristian OPINCARU, Corina STRATAN, Alexandru CHIRIȚĂ - Structuri de date si algoritmi. Aplicatii C++ folosind STL, Editura POLIROM, Iasi, 2000, 349pg, ISBN: 973-681-872-1
  • Clara IONESCU TEXE - Proiectarea si analiza structurilor de date spatiale. Quad-arbori,Editura Presa Universitara Clujana, Cluj Napoca, 2006,360 pg., ISBN (10)973-610-460
  • Mirela Catrinel VOICU - Aplicatii cu baze de date si structuri de date in JAVA, utilizand mediul de programare JBuilder, Editura Universitatii de Vest EUV, Timisoara, 2007, 191pg, ISBN 978-973-125-128-8
  • Ion ODĂGESCU, Gheorghe MANOLACHE - Structuri arborescente de date aplicate in economie,Editura Universitatea XXI, Iasi, 2008, 212pg, ISBN 978-973-7889-82-9
  • Catalin NĂCHILĂ, Dorel DUȘMĂNESCU - Structuri de date si algoritmi in limbajul C++,Editura SOLNESS, Timisoara, 2009, 313pg, ISBN 978-973-729-187-5
  • Teodor RUS - Data structures and operating systems, John Wiley & Sons, Bucureşti, 1979, 364 pg.
  • Ion IVAN, Paul Pocatilu,  Romică ADAM, Mark ZSOLT- Structuri de date. Culegere de probleme, ASE Bucureşti, 2000
  • Ion IVAN, Romică ADAM - Structuri de date si Programe Pascal, Bucuresti,1992
  • Ion IVAN, Romică ADAM - Culegere de probleme – Structuri de date, Bucuresti, 1992
  • Ion IVAN, Doru UNGUREANU - Structuri de Date. Ghid pentru elaborarea proiectelor, Editura ASE, Bucuresti, 2003, 70 pg., ISBN 973-594-316-6.
Am a mă lăuda și eu cu ceva: câteva zeci de ani am predat la studenții de la secția de informatică disciplina numită Structuri de date, care are corespondent pe colo și pe colo Data structure, iar faptul că am stămânit cât de cât programarea în limbaje de asamblare mi-a permis să văd dincolo de banalitatea de progrmator, ce și cum cu utilizarea eficientă a zonelor de memorie ca raport între ceea ce este ocupat de informația utilă, de ceea ce este folosit pentru implementarea mecanismelor de referire a elementelor din fiecare tip de structură de date. 



(28 septembrie 2017)