Showing posts with label limbaje evoluate. Show all posts
Showing posts with label limbaje evoluate. Show all posts

Thursday, November 9, 2017

Limbaje de descriere

Limbajele de descriere sunt construcții făcute de diferite persoane care și-au propus niște formalizări ce permit înțelegerea neambiguă a unor reguli și texte, ca toată lumea să procedeze în același fel ori de câte ori este nevoie. Există limbaje pentru descrierea:
- semnificației instrucțiunilor din limbajele de asamblare;
- sintaxei limbajelor evoluate;
- proprietăților pentru structuri de date;
- tipurile de constante;
- specificațiilor de programare;
- ecuațiilor și expresiilor analitice de orice fel;
- algoritmilor pentru a se scrie rapid programe.
Dacă se dorește descrierea unei instrucțiuni ASSEMBLER se vor folosi parantezele () pentru a marca un conținut de registru notat cu Ri sau de zonă de memorie notată cu Mi. v înseamnă vechi, n înseamnă nou, ct înseamnă constant, adică rămâne nemodificat.
pentru instrucțiunea de adunare
AR Ri,Rj
se va utiliza descrierea:
(Ri)n := (Ri)v + (R j)v și (Rj)ct
se citește astfel: noul conținut al registrului Ri se obține din vechiul conținut al registrului Ri la care se adaugă vechiul conținut al regostrului Rj, iar conținutul registrului Rj nu se modifică. Limbajul de descriere are multe reguli, inclusiv pentru a fi precise celelalte moduri de adresare, lucrul cu măștile, indicatorii de condiție, adică tot tacâmul.
Pentru descrierea de algoritmi există schemele logice care tot un fel de limbaj de descriere sunt.
Pentru descrierile de sintaxă ale limbajelor de programare sunt descrieril BNF  este acronim de la Backus-Naur Form. Când se prezintă limbajele de programare folosind BNF cu siguranță nu va exista nicio eroare de interpretare a sintaxei de către programator. Acolo apar elemente de recursivitate foarte clar specificate.
Pentru a defini un număr întreg fără semn se procedează astfel:
<întreg> := <cifră> | <întreg><cifră> | <cifră><întreg>
Numărul 973  este întreg fără semn pentru că este format din cifra 9 care este ea însăși un număr. Întregul fără semn 9 este urmat de cifra 7 și împreună formează un intreg fără semn. Acest din urmă întreg fără semn este urmat de cifra 3 și împreună formează un întreg fără semn.
Istoria informaticii românești consemnează nenumărate tentative de creare a unor limbaje de descriere, dar care nu s-au impus în practică pentru că erau foarte greoaie.
Istoria informaticii românești cunoaște limbajul LDA - Limbaj de Descriere a Algoritmilor dintr-o carte elaborată de prolificul FORTRAN-ist Stelian NICULESCU și o modalitate de formalizare a descrierii instrucțiunilor unui limbaj de asamblare și aici mă refer la ASSIRIS din cartea lui  CATONA, POPESCU și TEODORESCU dedicată calculatorului FELIX C 256, unde se propunere un limbaj de descriere a limbajului de asamblare ASSIRIS.  Cartea lui NICULESCU este referită prin:

  • Stelian NICULESCU - Algoritmi : Limbaj pentru Descrierea Algoritmilor, Editura Tehnică Bucureşti, 1981.

Cartea despre ASSIRIS este referită prin:
  • CATONA, Cristian POPESCU și Alexandru TEODORESCU - Sistemul Felix C-256. Limbajul Assiris, Editura Academiei RSR, București, 1974, 447 pg.
Aș fi foarte încântat să mai știu și alte cărți sau articole care conțin astfel de limbaje de descriere realizate pe pământ românesc, pentru că ar fi chestii teoretice, care nu necesită o industrie în spate și nici echipe de programatori de top care să dezvolte nu știu ce compilator sau nu știu ce sistem de operare sao oricare altă sofisticăreie software.


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

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) 

Sunday, October 1, 2017

Cărțile de Java


Limbajul Java a fist lansat în piață în 1995, deci undeva după limbajele C sau C++, ceea ce a făcut să fie mai puțin iubit de programatori, deși el vine cu niște facilități specifice aplicațiilor cu grad de complexitate peste medie, cu mult mai puternice decât cele două limbaje deosebit de răspândite. Mie mi-a plăcut acest limbaj numai în măsura în care mi-am rezolvat niște probleme, dar după aceea am comutat urgent pe C++ ca din reflexul stângaciului care desenează ceva cu stânga dar după aceea scrie cu dreapta ca să nu pară ceva deosebit în rândul celor conservatori.
Horia GEORGESCU - Introducere in universul Java, Editura Tehnică, București, 2002, 302 pg.
Felix FURTUNA - Grafica interactiva cu aplicatii in Java si Java 3D, Editura ASE, seria Informatica, București, 2007, 171 pg.
Ștefan TĂNASA, Sabin BURAGA, Cristian OLARU - Dezvoltarea aplicatiilor Web folosind Java, Editura Polirom, Iași, 2005, 250 pg.
Ștef ANGHEL - an TĂNASA, Cristian OLARU, Ștefan ANDREI - Java de la 0 la expert, Editura Polirom, Iași, 2011, 864 pg.
Octavia ANGHEL, Leonard ANGHEL - Tehnologii xml-xml in Java - Xml pentru avansati, Editura Albastră, Cluj-Napoca, 2007, 533 pg.
Florian BOIAN, Rareș BOIAN - Tehnologii fundamentale Java pentru aplicatii web, Editura Albastră, Cluj-Napoca, 2008, 469 pg.
Liviu DUMITRAȘCU - JavaScript, Editura Universității, Ploiești, 2004, 460 pg.  
Eugen PETAC, Tudor UDRESCU - Programarea calculatoarelor. Aplicatii Java, Editura Matrixrom, București, 2003, 360 pg.
Alina CÎLȚAN - JavaScript, Editura: Else, Craiova, 2016, 142 pg.
Mi-ar fi plăcut ca autorii să pornească în scrierea cărților de la clase de probleme speciale, apte acestui limbaj, să ofere resursele specifice și din aproape în aproape să deprindă scrierea de programe pentru soluții, altele decât cele pentru care lumea știe alte limbaje și se întreabă de ce și Java? N-a fost să fie și mulți programatori și-au dat seama de virtuțile lui pe parcurs, văzând și făcând cu mult mai lejer în Java decât în alte limbaje cunoscute.



(01 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)