Sunteți pe pagina 1din 6

Generaliti privind limbajele de programare Introducere

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. 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" ) n figura de mai jos sunt prezentate primele trei generaii de limbaje de programare i modul cum interacioneaz acestea cu computerul. Figura

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 fir 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. operation code 00010101 00010111 00010110 address 10100001 10100010 10100011 meaning load c(129) into accumulator add c(130) to accumulator store c(accumulator) in location 131

Astfel programatorii care utilizeaz limbajul main vor trebuie 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: 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 n 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 mai prietenoase ale limbajului main. Astfel comenzile limbajului main au fot nlocuite de comenzi mnemonice (gestioneaz memoria!!! nu e foarte ortodox). 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. Astfel scurtul program de mai sus se poate scrie n limbaj de asamblare astfel:

operation

address

code LOAD A ADD B STORE C Evident 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. 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: programele se scriu n mod text pentra ca apoi sa fie traduse intr-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; 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 sa 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 au 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. Primul limbaj evoluat a fost FORTRAN II aprut n 1958. Programul prezentat mai sus se poate scrie n acest limbaj astfel:

C=A+B Se observ c spre deosebire de limbajul main i limbajul de asamblare expresia de mai sus este mul mai uor de neles, mai rapid de scris i evit multe erori de scriere. 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 trebuie 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 mul 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). Figura

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. 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 (vezi exemplul de mai sus). Timpul de compilare al programului este de ordinul secundelor !!! De la apariia limbajului FORTRAN II, au aprut i disprut multe limbaje evoluate. Cele mai utilizate la ora actual sunt: COBOL Afacerilor (baze de date, etc)

FORTRAN PASCAL C, C++ PROLOG JAVA

Inginerie + Matematic + Fizic + etc Uz general Uz general cel mai popular Inteligena artificial Uz general crete n popularitate

COBOL (COmmon Business-Oriented Language) - un limbaj de programare dezvoltat ntre anii 19591961. Este utilizat n special pentru aplicatii cu caracter economic si administrativ. A fost initial sustinut de Departamentul de Aprare American si ulterior dezvoltat pentru aplicatii comerciale. Programele scrise n COBOL, limbaj compilat, contin patru diviziuni: identifi-carea, mediul, date si proceduri. FORTRAN (FORmula TRANlation) - primul limbaj de nivel nalt (1954-1958 Jim Bachus) si cel care a introdus si definit concepte ca variabile, expresii, enunturi, iterative, subrutine compilate separat si input/output format. FORTRAN este un limbaj compilat, structurat. Chiar numele arat originile stiintifice si ingineresti; FORTRAN este nc foarte folosit n aceste domenii. PASCAL - limbaj procedural concis, proiectat de Niklaus Wirth n perioada 1967-1971. Pascal, limbaj structurat, compilat, construit pe baza limbajului ALGOL, simplific sintaxa adugnd tipuri de date si structuri ca subzone, tipuri enumerate de date, fisiere, nregistrri si seturi. Acceptarea si utilizarea lui Pascal s-a mrit considerabil o dat cu introducerea n 1984, de ctre Borland International, 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. Chiar asa, Pascal pare s piard teren n favoarea lui C ca limbaj standard de dezvoltare la microcomputere. C - 1. Limbaj de programare dezvoltat de Dennis Ritchie la Bell Laboratories, New Jersey, n anul 1972, numit asa pentru c limbajul imediat premergtor a fost limbajul B. Desi C este considerat de multi a fi mai mult un limbaj de asamblare dect un limbaj de nivel nalt, asocierea strns cu sistemul de operare UNIX, popularitatea sa enorm ct si standardizarea de ctre ANSI au fcut ca acesta s fie aproape un limbaj de programare standard. C este un limbaj compilat ce contine un mic set de functii built-in care sunt machine-dependent. Celelalte functii sunt independente si sunt continute n niste fisiere numite library care pot fi accesate dintr-un program C. Programele C sunt compuse dintruna sau mai multe functii definite de programator; astfel c C se consider a fi un limbaj structurat. Compilatorul nu dispune, n general, de functii de intrare/iesire, din pretentia, de altfel ndrepttit, de a se asigura portabilitatea lui; aceste functii 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 si profesional si Microsoft C, produs de firma Microsoft. C++ - 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 contine de asemenea mbunttiri care nu sunt direct legate de clase, cum ar fi: constante simbolice, substitutia in-line a functiilor, argumente cu valori implicite pentru functii, nume de functii suprancrcate, operatori pentru gestionarea memoriei libere si un tip de referint

PROLOG (PROgramming LOGic) - limbaj de programare creat n 1973 de Alain Colmeraner la Universitatea din Aix-Marseille. Este un limbaj descriptiv destinat inteligentei artificiale, fiind utilizat n special la realizarea sistemelor expert. Programa-torul formeaz o baz de cunostinte, adic un set de reguli si fapte legate de mediul tratat, dup care descrie problema de rezolvat. PROLOG-ul este un limbaj care sparge regulile traditionale de programare. 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.

!NOTA : Donald Ervin Knuth (nscut pe 10 ianuarie 1938) este profesor emerit la Universitatea Stanford.
Este autorul crii The Art of Computer Programming ("Arta progrmarii calculatoarelor"), una dintre cele mai apreciate n acest domeniu i creator al TeX i Metafont. A primit numeroase premii, printre care: premiul Turing, Medalia naional n tiine, medalia John von Neumann i premiul Kyoto. The Art of Computer Programming (Arta programrii calculatoarelor) este una dintre cele mai faimoase cri din domeniul informatic, scris de Donald E. Knuth, carte ce acopera toate genurile de algoritmi cu demonstraii matematice riguroase. Din aceast carte monumental prin dimensiuni i coninut, au aprut trei volume, dar Knuth a anunat c vor mai urma alte patru.

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