Showing posts with label limbaj de asamblare. Show all posts
Showing posts with label limbaj de asamblare. Show all posts

Saturday, January 6, 2018

Programatorul de înaltă clasă

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



(06 ianuarie 2018)

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, 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)

Generația a VI-a de dispozitive de calcul

Generația a V-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 calculatorului MECIPT la ITC Cluj, dar și calculatoare din familia FELIX. Detalii despre toate acestea se află pe Internet dacă se face căutare pe cuvinte cheie precum istoria calculatoarelor românești, Felix C-256, I-100 ș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)

Generația a Generația a V-a de dispozitive de calcul

Generația a V-a de dispozitive de calcul corespunde calculatoarelor electronice cu circuite integrate. La noi s-a produs o variantă avansată a calculatorului MECIPT la ITC Cluj. Detalii despre toate acestea se află pe Internet dacă se face căutare pe cuvinte cheie precum istoria calculatoarelor românești, adăugând și ITC Timioșara sau ITC Cluj sau IPB catedra de calculatoare, căci acolo s-au produs. La UPB s-a produs calculatorul Felix PC.
De asemenea în aceeași cateforie se află mini și microcalculatoarele Felix M18, Felix M18B, Felix M118GS pe 8 biți, cu procesor Intel 8080, Felix M-216 pe 16 biți, cu procesor Intel 8086. Calculatorul aMIC  a fost construit în IPB în 1982-1983 folosind procesor Intel 8080. Microcalculatorul COBRA a fost realizat în 1986 cu procesor Z80 la Brașov


     *
*          *
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)

Generația a IV-a de dispozitive de calcul

Generația a IV-a de dispozitive de calcul corespunde calculatoarelor electronice cu tranzistori. La noi s-a produs o variantă avansată a calculatorului CIFA la Institutul de Fizică Atomică. Detalii despre toate acestea se află pe Internet dacă se face căutare pe cuvinte cheie precum istoria calculatoarelor românești, CIFA sau calculatoare cu tuburi. Calculatorul DACICC-2 a fost realizat la ITC Cluj cu tranzistoare. Calculatorul CETA a fost realizat la IP Timișoara în 1972. Calculatorul CIFA 10X și calculatorul CET 500 au fost construite pe bază de tranzistoare.


     *
*          *
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)