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

No comments:

Post a Comment