Sunteți pe pagina 1din 10

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

1. Generaliti privind limbajele de programare


Utilizarea calculatoarelor electronice presupune elaborarea de programe pe baza crora se obin anumite soluii, prin aplicarea unui algoritm asupra datelor de prelucrat. Programul reprezint o mulime ordonat de instruciuni, asociat unui algoritm de rezolvare a problemei, prin care se comand operaiile de prelucrare a datelor pentru obinerea rezultatelor. Instruciunea definete o aciune, conform regulilor de sintax ale unui limbaj de programare, prin care se comand sistemului electronic de calcul s se execute o anumit operaie. Exemplu: VALOARE = CANTITATE *PRE Noiunea de limbaj este definit ca un sistem pentru comunicare. Limbajele scrise folosesc simboluri (care sunt caractere) pentru a construi cuvinte. ntreg setul de cuvinte formeaz vocabularul limbajului. Modul n care cuvintele pot fi combinate pentru a fi nelese este definit de sintaxa i gramatica limbajului. Sensul dat de cuvinte sau combinaii de cuvinte este definit de semantica limbajului. n domeniul computerelor, limbajele umane sunt denumite limbaje naturale. Din nefericire computerele nu sunt de ajuns de sofisticate pentru a nelege limbajele naturale. Prin urmare comunicarea cu computerele se face prin intermediul unor limbaje specifice computerelor denumite limbaje de programre. Noiunea de limbaj de programare: este definit ca fiind ansamblul format de un vocabular i un set de reguli gramaticale, necesar instruirii unui computer pentru a realiza anumite activiti. Limbajul de programare este mijlocul prin care programatorul (utilizatorul) comunic cu calculatorul. Altfel spus, un limbaj de programare este un sistem de convenii adoptate pentru realizarea unei comunicri ntre programator i calculator. Limbajele folosite pentru programarea unui calculator sunt extrem de asemntoare limbajelor naturale. Aa cum pentru nsuirea unei limbi strine trebuie nvate cuvintele acesteia i regulile cu care pot fi manevrate tot aa pentru nsuirea unui limbaj de programare trebuie studiate cuvintele i semnele care l compun mpreun mpreun cu regulile de manevrare a lor. Specificarea unui limbaj de programare presupune definirea urmtoarelor elemente : - Alfabetul : cuprinde mulimea caracterelor alfabetice, numerice i speciale utilizate de limbajul de programare. - Vocabularul : este dat de totalitatea cuvintelor folosite de limbajul de programare i anume : o cuvinte rezervate, care au o semnificaie prestabilit pentru un limbaj de programare. Ele pt fi instruciuni, funcii, proceduri etc.cuvintele rezervate sunt cuvinte cheie, fiind obligatorii n cadrul programelor. Anumite limbaje mai utilizeaz i cuvinte rezervate opionale (acestea nefiind obligatorii n programme). Exemple : IF, WHILE, CASE. o Cuvinte utilizator, adic identificatori prin care se atribuie nume pentru constante, variabile, fiiere, proceduri etc. cuvintele utilizator trebuie s respecte anumite reguli generale de construire cum ar fi : S nceap cu o liter ; S nu conin spaii (pot s conin liniua de unire). Exemple: NUMARFACTURA, NRFACT, NR_FACTURA - Gramatica cuprinde : o Sintaxa : definete ansamblul regulilor de formare a instruciunilor i frazelor. Un program cu erori de sintax nu este acceptat de ctre calculatorul electronic. In alctuirea instruciunilor sintaxa folosete regulile de punctuaie acceptate de limbaj. De exemplu, n limbajul de programare VISUAL BASIC, instruciunea : PRINT Valoarea este , VALOARE, 1

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

Afieaz pe ecran textul Valoarea este dup care urmeaz c oninutul variabilei VALOARE. In instruciunea PRINT distingem : PRINT- cuvnt rezervat (cheie) care exprim o comand de afiare pe ecran; Valoarea este - cuvinte utilizator, care prin ncadrarea lor cu ghilimele dau textului semnificaia de constant i se exprim ca atare pe ecran. , (virgul)- caracter special care se utilizeaz c onform regulilor de sintax i punctuaie impuse de limbaj ; VALOARE- cuvnt utilizator care definete o variabil numeric n care este memorat o valoare i care urmeaz s se afieze pe ecran. o Morfologia cuprinde ansamblul regulilor de modificare a formei cuvintelor n contextual mbuntirii lor. - Punctuaia este dat de un ansamblu de reguli privind utilizarea semnelor convenionale n scopul folosirii elementelor de limbaj. - Semantica definete sensul atribuit cuvintelor i instruciunilor . Programul surs este programul scris ntr-un limbaj evoluat de programare. Fiins scris ntr-un limbaj apropiat de cel uman, programul surs nu este neles de ctre sistemul electronic de calcul ; pentru aceasta, este necesar traducerea lui ntr-un c od intern, accesibil calculatorului. Aceast operaie se realizeaz cu un program translator. Compilatorul este componenta software care realizeaz traducerea programului surs n program cod obiect. Din punct de vedere al traducerii programului surs n codul intern al calculatorului, deosebim : - limbaje de programare interactive (BASIC), ceea ce nseamn c imediat dup tasstarea unei comenzi, calculatorul analizeaz acea comand i anun dac este greit. Faptul c se poate ti imediat dac o comand este greit nseamn foarte mult n activitatea de prograamare (exist posibilitatea s se corecteze eroarea respectiv imediat). In acest caz componenta software care realizeaz traducerea programului surs se numete interpretor. - Limbaje de programare care cer scrierea programului n totalitatea lui, fr a anuna pe parcurs greelile, ci numai la sfrit, fie prin prezentarea unei recapitulaii a erorilor, fie prin parcurgerea pas cu pas a erorilor pn la eliminarea lor complet. (din aceast categorie fac parte : PASCAL, COBOL, FORTRAN). Programul obiect este rezultatul traducerii programului surs n codul intern al calculatorului. Sistem de programare este ansamblul format din limbajul de programare i programul translator asociat. Nivele ale limbajelor de programare Nivelul unui limbaj este apreciat prin poziia pe care o ocup pe scara constituit de limbajul recunoscut de microprocesor ( limbaj main ) i limbajul natural al programatorului ( limba romn , limba englez ). Un limbaj de nivel sczut este foarte apropiat de main, el manipuleaz cu elemente de nivel hardware, fizic, cum ar fi: registru , microprocesor , locaie de memorie, port de intrare/ieire etc . Un limbaj de nivel nalt sau foarte nalt manipuleaz cu concepte apropiate de limbajul natural, concepte de nivel logic , cum ar fi: colecie de date , nume de operaie ( sort , writeln , open ), variabile, constante ( asemntoare ca neles cu cele din matematic). Cu ajutorul unui limbaj de nivel nalt programatorul se face mult mai uor neles de ctre calculator. Uneori o singur linie de program scris cu un astfel de limbaj poate echivala cu sute de linii de program scrise n limbaj main . Deci din punct de vedere al reducerii timpului de realizare a unui program i al siguranei n funcionare (absena erorilor de programare ) este de preferat un limbaj de nivel ct mai ridicat (nalt sau foarte nalt ). n schimb , pe msur ce 2

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

limbajul are un nivel mai ridicat execuia programului conceput cu ajutorul su va fi mai lent , dect a unui program ce realizeaz aceleai operaii dar este scris n limbaj de asamblare. O alt diferen esenial ntre cele dou tipuri de limbaje o reprezint portabilitatea, adic posibilitatea transferrii programelor pe un alt tip de main dect cea pe care au fost construite. Din acest punct de vedere limbajul de asamblare este neportabil deoarece el este specific microprocesorului . Programele realizate pe un tip de main trebuiesc rescrise integral pentru noul tip de main , folosind un nou set de instruciuni care deobicei difer foarte. Lucrurile stau altfel cu programele concepute cu ajutorul unui limbaj de nivel nalt, deoarece acestea sunt detaate de main . ntre un astfel de program i calculator se interpune compilatorul (sau interpretorul) care rezolv corect transformarea fiierului-surs n fiier executabil . Limbaje procedurale neprocedurale Cele dou tipuri de limbaje, procedurale i neprocedurale, se difereniaz prin nivelul de organizare (structurare ) a unui program . Limbajele neprocedurale sunt concepute pentru a gndi un program la nivel de instruciune, pe cnd cele procedurale, oblig programatorul s conceap programe la nivel de bloc. ntr-un limbaj procedural (numit i limbaj structurat) programele sunt scrise instruciune cu instruciune, dar ele sunt organizate logic n blocuri (grupuri de instruciuni ) ce realizeaz o aciune bine determinat. n general un bloc are un punct de intrare i un punct de ieire nu mai multe . Un limbaj procedural ofer posibilitatea utilizrii unui nivel ridicat de concepere a unui program i duce la realizarea de programe coerente i protejate la erori . Prin contrast , limbajele neprocedurale nu favorizeaz programatorul n a se desprinde de nivelul instruciune i duc deseori la programe greu de controlat mai ales n cazul programelor de dimensiuni mari . Limbajele neprocedurale sunt nc preferate de unii utilizatori datorit timpului foarte scurt ct decurge nvarea i utlizarea lor . Limbaje orientate Din punctul de vedere al aplicabilitii unui limbaj, limbajele pot fi orientate pe o anumit problem sau concepute pentru soluionarea oricrui tip de problem l imbaje de uz general sau altfel spus, neorientate pe o problem . Limbajele orientate prezint un grad nalt de specificitate pe cnd un limbaj neorientat reprezint un cadru general ce permite introducerea de ctre utilizator a conceptelor i prelucrrilor dorite . Deci, diferena esenial dintre cele dou tipuri de limbaje o constitue nivelul conceptual definit. Cele specializate posed deja integral suportul necesar i permit programatorului s se concentreze la ansamblul problemei , pe cnd cele nespecializate las n sarcina programatorului manevrarea nivelelor inferioare ale problemei . Limbaje concurente Un limbaj concurent permite definirea de procese (prelucrri) paralel, execuia sa fiind ramificat la un anumit moment de timp . Prin contrast limbajele neconcurente (majoritatea limbajelor) au o desfurare liniar, fiind activ un singur proces la un moment dat . Procesele concurente presupun n mod obligatoriu un sistem multi-tasking ce poate gestiona mai multe sarcini la un moment dat . Limbaje de nivel sczut Aceast categorie de limbaje are un reprezentant autoritar i anume: limbajul de asamblare . Diferenierile care se pot face pentru limbajele de nivel sczut sunt urmtoarele : a) dup tipul de main ; Regulile respectate de versiunile limbajului de asamblare sunt : - o nou versiune o include complet pe cea anterioar; - versiunea nou ofer funcii suplimentare i le realizeaz pe cele vechi mai rapid. b) dup mediul de programare oferit. Aspectul unui limbaj poate fi schimbat radical de mediul de programare oferit. Pentru limbajul de asamblare exist mai multe implementri disponibile, ncepnd cu pachete ce 3

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

opereaz n mod linie i culminnd cu medii integrate n care toate operaiile se pot declana de la un acelai pupitru de comand . Nu sunt luate n considerare dect aceste medii integrate (denumite generic medii Turbo), dintre care se detaeaz Turbo Asamblorul firmei Borland TASM. Limbaje de nivel nalt neorientate BASIC Denumirea sa provine de la iniialele cuvintelor Beginners Allpurpose Symbolic Instruction Code ( Cod de instruciuni simbolice , de uz general , destinat nceptorilor ) . Are urmtoarele caracteristici fundamentale : - simplu de nvat ; instruciunile sale sunt cuvinte din limba englez sau prescurtri ale acestora ; - neorientat pe un anumit tip de problem ; permite construirea de aplicaii ; - este un limbaj nestructurat , ceea ce i permite s fie uor nvat . Din cauz c a cunoscut o larg rspndire , au fost implementate noi versiuni de Basic : GW-BASIC , QUICK BASIC , TURBO BASIC , VISUAL BASIC ( Basic for Windows ) . FORTRAN Limbajul Fortran reprezenta iniial un limbaj orientat pe calcule tiinifice avnd definite concepte precum: matrice, funcii trigonometrice, numere reale n dubl precizie . Versiunile ulterioare care au cunoscut o mare popularitate au extins posibilitile limbajului trasformndu-l ntr-un limbaj eficient , de uz general .n prezent exist pentru IBM-PC dou implementri mai importante ale limbajului : Microsoft Fortran , Fortran for Windows . Dei nu poate fi considerat depit din punct de vedere conceptual ( este un limbaj algoritmicstructurat ) este neindicat folosirea lui datorit absenei unor medii de programare performante i pentru c tendina actual i este defavorabil . PASCAL Limbajul PASCAL a introdus n versiunea sa iniial noiunea de programare structurat i ulterior noiunile de date (structuri) dinamice, date (structuri) definite de utilizator . n prezent standardul implementrilor PASCAL cuprinde urmtoarele elemente : - programare structurat de tip algoritmic ; - definirea de noi funcii sau proceduri ; - tipuri de date definibile de ctre utilizator ; - structuri de date dinamice ; - adresri indirecte ale datelor ; - recursivitate ; - rutine complete de intrare / ieire ; - funcii de conversie a datelor din ASCII n format intern i invers ; - set complet de funcii matematice ; - funcii elementare de grafic 2D ; - posibilitatea inserrii direct n surs a instruciunilor n limbaj de asamblare ; - posibilitatea definirii de overlay-uri pentru program . Versiunile standard ale implementrilor PASCAL sunt cele oferite de Microsoft i Borland , cu avantaj pentru cele din urm ( TURBO PASCAL 5.0 , TURBO PASCAL 5.5 ) datorit mediului de lucru performant (de tip TURBO ) . Combinaia PASCAL + TURBO a reprezentat un succes imens n rndul programatorilor avnd ca singur rival cealalt combinaie : C+TURBO. Limbajul C Principalele caracteristici ale limbajului sunt : - limbaj structurat de nivel nalt ; - posed concepte de nivel sczut, ceea ce permite exploatarea portabil a caracteristicilor intime unei maini ; - rutine de conversie a datelor foarte evoluate ; - tipuri de date definibile de ctre utilizator ; 4

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

- gestionarea elaborat a datelor de tip dinamic ; - definirea de noi funcii ; - adresri indirecte ale datelor , variabilelor ( pointer-i ) ; - recursivitate ; - set complet de funcii matematice ; - funcii pentru realizarea de grafic elementar 2D; - funcii de apel servicii DOS ; - posibilitatea definirii de overlay-uri pentru un program ; - concizie deosebit a limbajului . Pentru versiunile standard ale implementrilor limbajului C exist medii de programare de tip TURBO ce aparin firmelor: Microsoft produsul QUICK C i firmei Borland produsele TURBO C . Limbajul ADA A fost creat special pentru a gestiona totalitatea aplicaiilor dezvoltate i utilizate de N.A.S.A. Noutatea limbajului (de tip structurat , algoritmic ) o constitue concurena , deci posibilitatea lansrii de procese paralele (sincronizate interactiv n finalul execuiei lor ). Saltul calitativ este evident i deschide un nou domeniu n programare dar nu pentru IBM-PC . Versiunile implementrilor limbajului ADA pe IBM-PC nu posed tocmai acest parte de concuren, reducnd limbajul la un simplu limbaj structurat de uz genera . Deci , ADA este un limbaj ultramodern din punct de vedere teoretic dar ineficient din punct de vedere practic pentru IBMPC-uri . Limbaje orientate pe gestiunea bazelor de date Necesitile actuale n practica utilizrii calculatoarelor se ndreapt cu precdere spre gestionarea bazelor de date de mari dimensiuni. O explicaie a acestei orientri e dat de faptul c o baz de date reprezint un ansamblu de informaii, iar cel ce deine informaii complete i rapide ntr-o anumit problem este indiscutabil cu un pas naintea celorlali. Concurena din domeniul economic poate fi numit pe bun dreptate o btlie informaional . Un sistem de gestionare a bazelor de date ( S.G.B.D.) de tip clasic opereaz cu urmtorii termeni fundamentali : - cmp o locaie n care se poate memora o informaie bine determinat ; - nregistrare mai multe cmpuri alctuiesc mpreun o nregistrare ; - baza de date colecie de nregistrri . Deci , datele sunt gestionate prin intermediul unei structuri, organizat ierarhic, la un nivel de organizare logic . Tendina modern n exploatarea bazelor de date const n deplasarea interesului ctre bazele de date relaionale. Diferena esenial const n definirea unui nivel logic suplimentar ntre datele gestionate . Acestea nu mai sunt privite ca simple fiiere izolate ntre ele ci pot fi analizate pe baza legturilor (relaiilor) ce exist ntre ele . Noiunile cu care opereaz un S.G.B.D. relaional sunt urmtoarele : - tabel structur fundamental de depozitare a datelor ; - linie n tabel echivalentul unei nregistrri clasice ; - coloan n tabel echivalentul unui cmp de tip clasic ; - baz de date o colecie de tabele, conectate prin valorile anumitor coloane . Aceast nou concepie permite definirea de structuri 1: n . O nregistrare poate conine n valori pentru un cmp anumit nu una singur ca n cazul clasic . Structurile de tip 1:n pot fi rezolvate i cu ajutorul unui S.G.B.D. clasic dar ntreaga gestiune a operaiilor revine programatorului pe cnd un mediu relaional furnizeaz din start servicii speciale . Spre deosebire de S.G.B.D.urile clasice, un mediu relaional presupune ca cerin minimal posibilitatea manipulrii datelor prin intermediul conexiunilor logice stabilite. Pentru aceasta exist definit ( i impus ca standard unanim recunoscut ) limbajul de interogare SQL 5

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

( Structured Query Language limbaj de cereri structurate ). Prin intermediul su sunt permise urmtoarele operaii : - regsire date ( conexate logic ) ce ndeplinesc o anumit condiie ; - definire ordine de returnare a datelor ; - redefinire conectri logice ale datelor ; - exploatare ; - programare . Avantajele unui S.G.B.D. clasic sunt : - simplitate n manevrare, deci efort de studiu redus ; - pot funciona pe un sistem de calcul ce nu implic resurse speciale, ci doar spaiu de stocare extern suficient pentru problema dat ; - pre de cost redus fa de cele relaionale . Avantajele unui S.G.B.D. relaional sunt : - nivel logic superior ( corelaii , structuri 1 : n ), - prelucrri (regsiri) de date cu un nalt nivel de complexitate ; nivel superior de portabilitate a aplicaiilor a datelor.

2. Evoluia limbajelor de programare


De-a lungul timpului, oamenii au inventat maini pentru a calcula ct mai eficient. Inaintea calculatoarelor performante din zilele noastre, au existat alte maini de calcul. Momentul iniial al istoriei calculatoarelor este, de obicei legat de numele matematicianului englez Charles Babbage. El a propus n anul 1830 o Main Analitic care a anticipat n mod fascinant structura calculatoarelor actuale. Ideile sale au devansat cu peste 100 de ani posibilitiile tehnologice ale vremii sale. Urmtorul moment de referin este anul 1937, cnd Howard Aiken, de la Universitatea Harvard a propus Calculatorul cu secven de Comand Automat, bazat pe o combinaie ntre ideile lui Babbage i calculatoarele electromecanice, produse de firma IBM. Construcia acestuia a nceput n anul 1939 i s-a terminat n anul 1944. El a fost n principal primul calculator electromecanic, fiind alctuit din comutatoare i relee. Pentru a rspunde noilor cerine moderne ale utilizatorilor, limbajele de programare de mare circulaie s-au dezvoltat, aprnd noi versiuni care s rspund prelucrrii interactive, multiprogramrii i utilizrii n medii de programme. Primele calculatoare aprute dup 1944 erau programaate n codul calculatorului. Dup 1950 apare noinea de programare automat. Se elaboreaz primul limbaj de prograamare numit asamblor care era dedicat unui anumit calculator electronic. Acest moment marcheaz aparaiia programelor de translatare asociate i a sistemelor de operare. n jurul anului 1960 apar primele versiuni ale limbajelor evoluate (FORTRAN, ALGOL, COBOL, LIPS). Aceste limbaje ofer pentru prima dat omului posibilitatea de a se exprima cu ajutorul unui sistem de simboluri mai apropiat de modul de comunicare uman. In anii *60 au existat preocupri pentru a se realiza un limbaj de programare universal, elaborndu-se limbajul PL/1 (Programming Language number 1), cu elemente din limbajele FORTRAN, COBOL i ALGOL. Acest limbaj s-a dovedit a fi destul de dificil, problema limbajelor universale nefiind clarificat (controversat) nici n zilele noastre. Dup modul cum au evoluat n timp limbajele de programare pot fi: limbaje de prima generaie: limbajul main (machine language); limbaje de generaia a doua: limbajul de asamblare (assembly language); limbaje de generaia a treia: limbajele de nalt nivel (high-level programming languages); limbaje de generaia a patra: limbaje mai apropiate de limbajul uman dect limbajele de nalt nivel (ex. de comand: FIND ALL RECORDS WHERE NAME IS "SMITH" )

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

Limbajul main Cnd un computer urmeaz instruciunile unui program se spune c programul este n execuie (running). nainte de a fi executat programul trebuie s fie rezident n memorie. Adic programul trebuie s ocupe un set de bytes consecutivi n memorie. Totodat programul trebuie scris ntr-un limbaj main intern. Fiecare tip de procesor are propriul limbaj main. Acesta este conceptul de baz cu privire la modul de execuie a unui program. Faptul c programul ce se execut este stocat (chiar i parial) n memoria principal (RAM) duce la concluzia c numai prin schimbarea programului din memoria RAM computerul poate trece la execuia altui proces (task)/program. Aa cum s-a prezentat mai sus toate computerele au un limbaj main intern (specific tipului de procesor). Acest limbaj este codat ntr-o reprezentare binar i este foarte greoi (plictisitor) de utilizat pentru scrierea unui program. Majoritatea instruciunilor programului vor conine astfel dou pri: o parte care se refer la operaia de codare se vor indica ordinea operaiilor; o parte care se refer la adresa din meorie - indic locaia de memorie ce se va utiliza ca operand al instruciunii. Astfel programatorii care utilizeaz limbajul main vor trebui s fie ateni n ce zone de memorie se vor stoca date i n ce zone de memorie se vor executa programele (instruciunile). Astfel pot aprea erori de programare datorate suprapunerii scrierii instruciunilor peste date. Prin urmare programarea n limbaj main presupune o bun capacitate de a interpreta datele i instruciunile la nivel de bit. Totodat aceasta reprezint si posibilitatea de a se genera alte programe i de a le executa. Concluzii: limbajul main este limbajul pe care computerul l nelege n mod direct; n limbajul main programele se scriu n cod binar: succesiuni de 0 i 1; fiecare instruciune din limbajul main este o combinaie de 4 bits (LOAD-0000;ADD0001); programatorul trebuie s cunoasc detaliat structura hardware a computerului; programatorul trebuie s gestioneze fr greeal alocarea adreselor de memorie pentru un program; pot aprea multe erori datorit: concepiei programului, sintaxei, suprapunerii adreselor de memorie, etc. Limbajul de asamblare Atenia necesar evitrii ocuprii acelorai adrese de memorie este foarte solicitant (greoaie) n programarea limbaj main. Astfel dac programatorul modific un program i decide s mai introduc ceva atunci toate celelalte adrese de memorie utilizate pn atunci se vor schimba i trebuie s examineze ntregul program din nou i s decid iari cu privire la modul cum va aloca memoria datelor i instruciunilor. Astfel au aprut ncepnd cu 1950 limbajele de asamblare care sunt forme mult mai prietenoase dect cele ale limbajului main. Astfel comenzile limbajului main au fost nlocuite de comenzi mnemonice (gestioneaz memoria). Astfel limbajul de asamblare are grij s converteasc comenzile mnemonice n comenzile corespunztoare limbajului main. Programatorul poate folosi adrese simbolice pentru reprezentarea datelor. Acest limbaj va atribui adresele n limbaj main i va verifica dac datele distincte nu se suprapun la stocare. Este evident c, acest limbaj evit o multitudine de erori de alocare a memoriei. Limbajul de asamblare presupune existena unui program numit assembler care s traduc programele n limbaj main. Asamblorul nlocuiete codarea mnemonica (cum ar fi ADD) cu coduri binare corespunztoare limbajului main i aloc adrese de memorie pentru toate variabilele simbolice utilizate (A, B, C ) i se asigur c aceste adrese sunt distincte. 7

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

Astfel prin uurarea procesului de programare s-a introdus un nou nivel de procesare pentru computer. Astzi limbajele de asamblare sunt nc utilizate pentru unele programe critice deoarece aceste limbaje confer programatorului un control foarte precis a ceea ce se ntmpl n computer. Limbajele de programare nc necesit ca programatorul s aib foarte bune cunotine cu privire la structura intern a computerului. Limbajele de asamblare sunt i ele specifice computerului pe care ruleaz astfel c programatorul trebuie sa-i rescrie programul pentru un alt tip de computer. Concluzii: utiliznd limbajele de asamblare, programele se scriu n mod text pentru ca apoi s fie traduse ntr-o form binar corespunztoare limbajului main; limbajul de asamblare este tradus n limbaj main de ctre assembler; limbajele de asamblare nc solicit programatorului cunoaterea de multe detalii hardware; limbajele de asamblare sunt specifice anumitor tipuri de computere; limbajul de asamblare mpreun cu limbajul main formeaz categoria limbajelor de nivel sczut (low-level languages). Limbajele evoluate (High level Languages) Evident c de la apariia computerului tot s-a pus problema de a se obine un proces de programare ct mai uor. Aceasta ar presupune ca activitatea de programare s se poat face cu un bagaj de cunotine cu privire la funcionarea intern a computerului ct mai mic. Dup cum s-a vzut anterior, limbajul main i limbajul de asamblare presupune o bun cunoaterea funcionrii interne a computerului. O alt direcie pentru uurarea programrii ar fi aceea ca programele s fie prezentate ntr-o limb ct mai familiar persoanei care dorete s programeze (s rezolve o anumit problem). Astfel a aprut programarea de nalt nivel care permite formularea soluiilor problemei de rezolvat n termeni mai apropiai de cei folosii de oameni. Aceste limbaje au fost concepute pentru a permite programrii s fie mult mai uoar i cu mai puine erori iar programatorul nu trebuie s cunoasc detalii cu privire la structura intern a unui anumit tip de computer. Aceste limbaje sunt mult mai apropiate de limbajul uman. Pentru a putea fi executate, ca i n cazul limbajului de asamblare, computerul nu nelege n mod direct aceste limbaje evolute i de aceea ele trebuiesc procesate printr-un program specializat care traduce limbajele evolute n limbajul main intern al computerului respectiv. Dup modul cum se face aceast transpunere a programelor evoluate exist dou tipuri de astfel de programe specializate: interpretor: traduce succesiv instruciunile de nalt nivel ntr-o form intermediar care este apoi executat. compiler: traduce instruciunile de nalt nivel direct n limbaj main. Avantajul interpretorului este c poate execut un program imediat. Compilatorul necesit mai mult timp. Programele produse de compilator ruleaz mult mai rapid dect cele produse de interpretor. Majoritatea programelor evolute au la dispoziie att compiler ct i interpretor. De obicei interpretorul se folosete n timpul realizrii unui program pentru testarea unor mici seciuni ale programului. Unele limbaje evoluate sunt concepute s lucreze numai cu interpretor (BASIC, LISP). Un alt mare avantaj al limbajelor evoluate este acela c dac limbajele sunt standardizate atunci fiecare productor de computere (procesoare) va putea s realizeze compilerul care s respecte standardele i s traduc programele n limbajul main specific productorului. Astfel devine posibil ca un program, respectndu-se aceste standarde, s poat fi compilat pe diverse computere i apoi executat. 8

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

Prin scrierea unui program ntr-un limbaj evoluat se face o economie imens de timp. Astfel programatorul pierde mai puin timp pentru scrierea ntr-un limbaj mult mai apropiat de cel uman dect dac acelai program ar fi scris n limbaj main. Timpul de compilare al programului poate fi de ordinul secundelor. De la apariia limbajului FORTRAN II, au aprut i disprut multe limbaje evoluate. Cele mai utilizate la ora actual sunt: COBOL FORTRAN PASCAL C, C++ PROLOG JAVA Afacerilor (baze de date, etc) Inginerie + Matematic + Fizic + etc Uz general Uz general cel mai popular Inteligena artificial Uz general crete n popularitate

FORTRAN (FORmula TRANlation) este primul limbaj de nivel nalt (1954-1958 Jim Bachus) i cel care a introdus i definit concepte ca variabile, expresii, enunuri, iterative, subrutine compilate separat i input/output format. FORTRAN este un limbaj compilat, structurat. Chiar numele arat originile tiinifice i inginereti; FORTRAN este nc foarte folosit n aceste domenii. COBOL (COmmon Business-Oriented Language) este un limbaj de programare dezvoltat ntre anii 1959-1961. Este utilizat n special pentru aplicaii cu caracter economic i administrativ. A fost iniial susinut de Departamentul de Aprare American i ulterior dezvoltat pentru aplicaii comerciale. Programele scrise n COBOL, limbaj compilat, conin patru diviziuni: identifi-carea, mediul, date i proceduri. PASCAL este un limbaj procedural concis, proiectat de Niklaus Wirth n perioada 1967-1971. Pascal, fiind un limbaj structurat, compilat, construit pe baza limbajului ALGOL, simplific sintaxa, adugnd tipuri de date i structuri ca subzone, tipuri enumerate de date, fiiere, nregistrri i seturi. Acceptarea i utilizarea limbajului Pascal s-a mrit considerabil o dat cu introducerea n 1984, de ctre Borland Internaional, a mediului Turbo Pascal, un compilator ieftin, de mare vitez, utilizat n MS-DOS, care s-a vndut n peste un milion de copii n diverse versiuni. n timp, Pascal pierde din ce n ce mai mult teren n favoarea lui C ca limbaj standard de dezvoltare la microcomputere. C - 1. Acest Limbaj de programare dezvoltat de Dennis Ritchie la Bell Laboratories, New Jersey, n anul 1972, numit aa pentru c limbajul anterior a fost limbajul B. Desi C este considerat de muli a fi mai mult un limbaj de asamblare dect un limbaj de nivel nalt, asocierea strns cu sistemul de operare UNIX, popularitatea i standardizarea sa de ctre ANSI au fcut ca acesta s fie aproape un limbaj de programare standard. C este un limbaj compilat ce conine un mic set de funcii built-in care sunt machine-dependent. Celelalte funcii sunt independente i sunt coninute n nite fiiere numite library care pot fi accesate dintr-un program C. Programele C sunt compuse dintr-una sau mai multe funcii definite de programator; astfel c C se consider a fi un limbaj structurat. Compilatorul nu dispune, n general, de funcii de intrare/ieire, din pretenia, de altfel ndrepttit, de a se asigura portabilitatea lui; aceste funcii fiind ntr-o bibliotec foarte vast. Exist dou implementri de compilatoare foarte rspndite pe calculatoarele personale: Turbo C, produs de firma Borland n dou versiuni, normal i profesional i Microsoft C, produs de firma Microsoft. C++ este o versiune a limbajului C, orientat spre obiect, dezvoltat de Bjarne Stroustrup la nceputul anilor 80 la Bell Laboratories. C++ are trsturi specifice limbajelor de programare orientate obiect. Conceptul fundamental n C++ este clasa. El conine de asemenea mbuntiri care nu sunt direct legate de clase, cum ar fi: constante simbolice, substituia in-line a 9

Curs 1,

leciile 1 i 2

Anul II, Sem. I

Inf.de gest. LIMBAJE

funciilor, argumente cu valori implicite pentru funcii, nume de funcii suprancrcate, operatori pentru gestionarea memoriei libere i un tip de referin PROLOG (PROgramming LOGic) este un limbaj de programare creat n 1973 de Alain Colmeraner la Universitatea din Aix-Marseille. Este un limbaj descriptiv destinat inteligenei artificiale, fiind utilizat n special la realizarea sistemelor expert. Programatorul formeaz o baz de cunotine, adic un set de reguli i fapte legate de mediul tratat, dup care descrie problema de rezolvat. PROLOG-ul este un limbaj care sparge regulile tradiionale de programare. ADA este un limbaj universal, definitivat n 1979 la care a participat un numr impresionant de specialiti din ntreaga lume. Acest limbaj are o considerabil putere de exprimare i acoper un larg domeniu de aplicaii. El include faciliti oferite de limbajele clasice (PASCAL), dar i facilitile ntlnite numai n limbajele de specialitate. Este un limbaj adecvat modularizrii i conine structurile de control obinuite. Concomitent au fost preocupri pentru a crea limbaje de programare accesibile unei mase ct mai largi de utilizatori. n acest sens se pot meniona limbajele BASIC (Beginner*s All-Purpose Symbolic Instruction Code) i PASCAL. Pentru limbajul BASIC se pot meniona urmtoarele momente: BASIC : nc de la prima versiune a fost construit ca un limbaj interactiv (posibilitatea anunrii eventualelor erori de sintax n momentul tastrii unei comenzi); BASICA este o o alt versiune care a aprut odat cu apariia microcalculatoarele IBM PC, urmat de versiunea GW-BASIC; QBASIC, o alt versiune cuprins n sistemul de operare MS-DOS 5.0, Limbajul BASIC a devenit un limbaj puternic atunci cnd MICROSOFT a lansat Microsoft Windows, crend posibilitatea elaborrii de programe de meniuri derulante, ferestre, casete de dialog etc.; n 1991 Microsoft a lansat limbajul VISUAL BASIC, care a evoluat pn la versiunea 5.0, caracterizat att prin aspectul programelor ct i prin funcionalitatea i utilitatea lui

Java este un limbaj de programare de nivel nalt, orientat obiect, proiectat iniial pentru realizarea de aplicaii pentru Internet i mai cu seam pentru Web. Acesta este utilizat n prezent cu succes i pentru programarea aplicaiilor destinate intranet-urilor. n acest sens, multe firme recurg la limbajul Java n procesul de informatizare ntruct ofer un foarte bun suport pentru tehnologiile de vrf i, nu n ultimul rnd, pentru faptul c este gratuit i n mod continuu mbogit i mbuntit.

10

S-ar putea să vă placă și