Sunteți pe pagina 1din 34

Limbaje de programare

inginereti
Tema 2
Limbaje de programare

DEFINIIE
Un limbaj de programare este un set bine definit de
expresii i reguli (sau tehnici) valide de formulare a
instruciunilor pentru un sistem de calcul.
Un limbaj de programare are definite un set de reguli
sintactice i semantice. El d posibilitatea programatorului
s specifice n mod exact i amnunit aciunile pe care
trebuie s le execute calculatorul, n ce ordine i cu ce
date.
Specificarea const practic n ntocmirea/scrierea
programelor necesare ("programare").

Aspecte caracteristice:
Sintaxa
- Ansamblul regulilor prin care pornind de la simboluri de baz
se construiesc structuri compuse
-Gramatica: mulimea regulilor sintactice
Semantica
- Sensul construciilor sintactice
-Set de reguli ce determin semnificaia propoziiilor limbajului
Pragmatica
- Capacitatea de a utiliza construciile sintactice i semantice

Scurt istorie
1942, ENIAC programarea se fcea cu ajutorul
comutatoarelor

Scurt istorie

1951, Grace Hopper a scris primul compilator


1957, FORTRAN (FORmula TRANslating system )
1959, Cobol pentru activiti economice
1958, LISP pentru lucrul cu liste
1958, Algol, Algol 68 calcul recursiv, funcii. Dificil de
folosit.
1968, Pascal, 1972 C

Scurt istorie
Anii 50

coduri de ordonare (limbaje de asamblare


priimitive)

1957

FORTRAN

Primul limbaj de programare de nivel nalt

1958

ALGOL

Primul limbaj imperativ modern

1960

LISP, COBOL

Programare interactiv; programare n afaceri

1962

APL, SIMULA

Naterea OOP (SIMULA)

1964

BASIC, PL/I

1970

Prolog

Primul limbaj de programare logic

1972

Limbaj de programare a sistemelor

1975

Pascal, Scheme

Limbaje didactice

1983

Smalltalk-80, Ada

OOP reinventat

1986

C++, Eiffel

OOP reinventat (din nou)

1988

CLOS, Oberon, Mathematica

1990

Haskell

1990s

Perl, Python, Ruby, JavaScript

1995

Java

2000

C#

OOP reinventat pentru internet

Clasificarea general a limbajelor


Limbaje naturale: lb. Romn, lb. Englez
Limbaje artificiale:
- Jargoane profesionale
- Limbaje de comunicare ntre dispozitive: protocoale (TCP/IP,
XML)
- Limbaje de programare: comunicare ntre om i calculator

Tipuri i clasificri
Dup modul de specificare a instruciunilor:
- limbaje procedurale; ex. C, Java, Perl
- limbaje neprocedurale: ex. LISP, Haskell, Clips, Prolog

Tipuri i clasificri
Cea mai folosit clasificare este cea care grupeaz limbajele n
cinci generaii, urmrind periodizarea evoluiei arhitecturii
calculatoarelor:
Prima generaie cuprinde limbajele main, care definesc
instruciunile sub forma recunoscut de calculator. Programele
cuprind instruciuni formate din cod i adresa operanzilor.
Programele rezultate sunt mari i greu de corectat.
Generaia a doua cuprinde limbajele orientate spre main. n
aceast generaie intr limbajele autocod i limbajele de
asamblare. Limbajele autocod conin instruciuni echivalente
instruciunilor din limbajul mainii. Limbajele de asamblare
mai ofer i macro-instruciuni, echivalente cu secvene de
instruciuni ale mainii. Avantajul lor este rapiditatea, motiv
pentru care sunt preferate n elaborarea software-ului de sistem.

Tipuri i clasificri
Generaia a treia cuprinde limbaje orientate pe problem,
caracterizate printr-o descriere mai uoar i prin portabilitate
crescut.
n aceast generaie sa afl o mare varietate de limbaje:
- limbaje de orientare tiinific: FORTRAN, ALGOL, APL;
- limbaje de gestiune: COBOL, GAP, RPG;
- universale: Pascal, PL/I, C, ADA;
- limbaje specializate: APT (pentru programele de comand
numeric), LDP (pentru descrierea paginii imprimantelor laser),
dBASE, FoxPro.

Tipuri i clasificri
Generaia a patra cuprinde limbaje orientate spre utilizatorii
finali. Acetia, neavnd o pregtire special, pot s-i rezolve
singuri problemele, dialognd cu calculatorul. Limbajele din
aceast categorie descriu calculatorului cum s fac pentru a
rezolva o problem, fiind n general neprocedurale.
Aceste limbaje se clasific n:
limbaje de interogare;
generatoare de rapoarte;
generatoare de aplicaii;
generatoare de grafice;
instrumente de sprijinire a deciziilor;
limbajele inteligenei artificiale.

Tipuri i clasificri
Limbajele de interogare por fi:
- limbaje de interogare simpl, care permit consultarea fiierelor
i a bazelor de date pe un singur tip de nregistrare logic
utiliznd un criteriu simplu;
-limbaje de interogare complex, care permit consultarea mai
multor tipuri de nregistrri logice, prin asocierea unor diferite
structuri. Exemple din aceast categorie sunt: SQL, QBE, Hiper
Talk. Cel mai cunoscut este SQL, inclus n prezent n orice
sistem de gestiune al bazelor de date.
Generatoarele de rapoarte ndeplinesc trei funcii eseniale:
selecia informaiilor solicitate, ordonarea datelor dup anumite
criterii i editarea rapoartelor folosind un numr minim de
instruciuni. Toate sistemele de gestiune a bazelor de date includ
generatoare de rapoarte.

Tipuri i clasificri
Generatoarele de aplicaii se adreseaz cunosctorilor tehnicilor
de programare. Ele permit ca pe baza unor descrieri a datelor i a
modului de organizare, prelucrare i afiare a acestora s se
accelereze generarea programelor. Exemple: CSP, FOCUS,
Mantis, NOMAD2.
Generatoarele de grafice sunt instrumente care permit
reprezentarea grafic a rezultatelor prelucrrii datelor. Ele sunt
independente (SAS, Tell-al Graph) sau incorporate n SGBD-uri
(FoxGraph) sau aplicaii tabelare (Quattro, Lotus, Excel).
Instrumentele de sprijinire a deciziilor se adreseaz experilor
din diferite domenii, permind simularea matematic a
fenomenelor. n aceast clas intr programele de calcul tabelar
(Quattro, Lotus, Excel), pachetele statistice (SPSS, SAS).

Tipuri i clasificri

Limbajele inteligenei artificiale sunt folosite n prelucrarea


listelor (LISP), programarea logic (PROLOG) i programarea
orientat pe obiecte (Smalltalk).
Generaia a cincea cuprinde limbajele care vor fi ndreptate
spre exploatarea bazelor de cunotine sau crearea sistemelor
expert. MANDALA combin prelucrarea cunotinelor cu
funciile unui sistem de gestiune a bazei de cunotine.

Tipuri i clasificri
Clasificarea din perspectiva abstractizrii
Limbaje de nivel inferior
- Cod main, asamblare
- Specifice pe calculator, portabilitate sczut
Limbaje de nivel superior
- Generaiile 3, 4, 5 de limbaje de programare
- Productivitate ridicat a muncii de programare

Tipuri i clasificri
Clasificare prin prisma paradigmelor
Paradigm:
- Modelul sau arhetipul unui proces sau sistem
- Colecii de caracteristici de evaluare i criterii de abstractizare

Paradigma programrii procedurale i structurate


Paradigma programrii modulare
Paradigma programrii obiectuale
Paradigma programrii funcionale i logice
Programarea concurent i distribuit
Alte paradigme

Tipuri i clasificri

Programarea procedural i structurat


(imperativ)
Utilizatorul descrie pas cu pas algoritmul de rezolvare
Unitatea de baz: procedura sau funcia
Principiul programrii structurate:
Orice procedur poate fi reprezentat prin cele 3 structuri
fundamentale din algoritmic:
Structura liniar,
Structura ramificat i
Structura repetitiv
Algol60, Pascal, C, PL/1, Ada

Tipuri i clasificri

Programarea modular
Programul se descompune n module
Modulele sunt independente, atomice
Principul de baz: ncapsularea
Modulul are 2 componente: interfaa i implementarea
Modula i Ada

Tipuri i clasificri

Programarea obiectual (OOP)


Obiect: entitate care conine informaie i comportament
Orice entitate din lumea real poate fi considerat obiect
Programul: ansamblu de obiecte n interaciune
Principii de baz:
ncapsulare
Obiectele au structur i stare
Comunicare prin mesaje
Reutilizarea codului:
Se permit compoziie i generalizare/specializare
Polimorfism
Un nume poate fi utilizat cu nelesuri diferite
Smalltalk, C++, Java

Tipuri i clasificri

Programarea funcional
Programul este un ansamblu de funcii
Apeluri recursive
Funciile sunt folosite la descrierea datelor i codului
Nu au instruciuni de atribuire
Fundament matematic: expresiile lambda
Lisp, ML

Tipuri i clasificri

Programarea logic
Program: fapte i reguli
Limbaje declarative
Se indic modul cum trebuie s arate soluia problemei
Fundament matematic: sistemele logice formale
Logica predicatelor de ordinul 1
Logici modale, temporale sau monotonice
Constituie baza motoarelor de inferen n sisteme expert
Prolog

Tipuri i clasificri
Dup modul de specificare a instruciunilor:
-limbaje procedurale; descriu pas cu pas algoritmul de
rezolvare a problemei. Limbajele de nivel nalt sunt de obicei
procedurale. Ex. C, Java, Perl, BASIC, COBOL, PL/I,
FORTRAN, Pascal
-limbaje neprocedurale; sunt de nivel foarte nalt i definesc
scopul, fr a da detalii asupra modului n care acesta se
atinge. Ex. LISP, Haskell, Clips, Prolog, Smalltalk
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.

Clasificare Wikipedia
1 Limbaje vectoriale
2 Limbaje orientate pe aspect
3 Limbaje de asamblare
4 Autori de limbaje
5 Limbaje shell
6 Limbaje compilate
7 Limbaje concatenative
8 Limbaje concurente
9 Limbaje cu acolade
10 Limbaje de modelare
11 limbaje orientate spre date
12 limbaje structurate ca date
13 Limbaje declarative
14 Limbaje de extensie
15 Limbaje de generaia a patra
16 Limbaje funcionale
17 Limbaje interpretate
18 Limbaje iterative
19 Limbaje specializate

20 Limbaje logice
21 Limbaje main
22 Limbaje de Macrouri
23 Limbaje multi-paradigm
24 Limbaje de analiz numeric
25 Limbaje bazate pe alte limbi dect limba
englez
26 Limbaje orientate obiect
27 Limbaje orientate pe prototip
28 Off-side rule languages
29 Limbaje procedurale
30 Limbaje reflexive
31 Limbaje bazate pe reguli
32 Limbaje de scripting
33 Limbaje pentru sisteme n timp real
34 Analizoare lexicale
35 Limbaje vizuale
36 Limbaje Wirth
37 Limbaje bazate pe XML

Caracterizarea principalelor limbaje de programare

Fortran (sau FORTRAN) este un limbaj de programare nscut


n anul 1950 i care este nc folosit dup jumtate de secol de
existen.
Numele
su
i
are
originea
din
"Formula Translator". Versiunile mai vechi ale acestui limbaj
erau cunoscute drept FORTRAN, dar dup Fortran 90 numele
nu a mai fost scris n ntregime cu majuscule. Dei la nceput a
fost un limbaj procedural, cele mai recente versiuni au inclus
suport pentru programarea obiectual.

Caracterizarea principalelor limbaje de programare


COBOL (Common Business Oriented Language).
Dup FORTRAN, din generaia a 3-a, cel mai rspndit este
limbajul COBOL. Este un limbaj de programare evoluat destinat
problemelor de gestiune. Se utilizeaz pentru exploatarea unui
volum mare de date cu structuri diverse (arbori, tablouri, fiiere
etc.). Limbajul este mai dificil de nsuit dect alte limbaje,
dispunnd de multe instruciuni cu numeroase opiuni fiecare.

Caracterizarea principalelor limbaje de programare


BASIC (acronim al expresiei engleze Beginners All-purpose
Symbolic Instruction Code) este un limbaj de programare de
nivel nalt a calculatoarelor, foarte asemntoare cu limba
englez, ceea ce l face uor de memorat i ideal pentru
nceptori; astfel, generaia de utilizatori predecesoare erei PCurilor a luat primul contact cu programarea prin intermediul
calculatoarelor HC, care aveau la baz acest o versiune de
BASIC.
O variant de BASIC foarte popular este i Visual Basic, creat
de ctre compania Microsoft. Aceasta se adreseaz mai mult
avansailor. Visual Basic permite crearea de aplicaii relativ
complexe prin manipularea componentelor vizuale (grafice) ale
programului.

Caracterizarea principalelor limbaje de programare


Pascal este unul dintre limbajele de programare de referin n tiina calculatoarelor,
fiind cel care a definit programarea calculatoarelor. Unul din marile sale avantaje este
asemnarea cu limbajul natural limba englez, ceea ce l face limbajul ideal pentru cei
care sunt la primul contact cu programarea. Pascal a fost denumit astfel n onoarea
matematicianului Blaise Pascal, creditat pentru construirea primelor maini de calcul
numeric.
Cele mai populare implementri a acestui limbaj au fost Turbo Pascal i Borland
Pascal, ambele ale firmei Borland cu versiuni pentru Macintosh i DOS, care i-au
adugat limbajului obiecte i au fost continuate cu versiuni destinate programrii
vizuale pentru Microsoft Windows (limbajul Delphi) i pentru Linux (Kylix).
n prezent exist i alte implementri mai mult sau mai puin populare, dar gratuite,
printre care se remarc Free Pascal i GNU Pascal.
Spre deosebire de BASIC, care a stat n trecut la baza nvrii programrii, Pascal este
un limbaj structurat. De aceea, el formeaz un anumit tip de gndire, similar limbajelor
moderne, precum C++, dar nu deine complexitatea i abstractizarea acestuia din urm,
fiind mai uor de neles datorit sintaxei simple.

Caracterizarea principalelor limbaje de programare


ADA (Automatic Data Acquisition i totodat numele contesei
Augusta Ada Byron de Lovelace, considerat primul programator
din lume) este un limbaj destinat aplicaiilor concurente,
tiinifice i n timp real. A fost creat pentru a nlocui cele
aproximativ 350 de limbaje folosite la nceputul anilor 80 n
Departamentul aprrii al SUA. Este un limbaj complex i dificil
de nvat, dar asigur claritate, robustee, modularitate, tratarea
excepiilor. Folosit iniial n domeniul militar, la ora actual,
datorit facilitilor oferite, este larg utilizat i n aplicaiile
economice. Pe ansamblu, limbajul ADA poate fi considerat nu
doar un limbaj, ci un mod de a gndi, constituind o piatr de
hotar n evoluia programrii n timp real.

Caracterizarea principalelor limbaje de programare


C (numit aa deoarece dezvolt limbajul B elaborat de Bell
Laboratories) este un limbaj orientat spre asigurarea controlului
fluxurilor de instruciuni (teste, bucle, subprograme), conducnd
la elaborarea de programe compacte, bine structurate, fiind
aplicat de constructorii de soft-uri de baz (C-ul a fost folosit
iniial la scrierea sistemului de operare UNIX; foarte multe din
procesoarele de texte, SGBD-urile i spreadheet-urile
comercializate la ora actual sunt realizate/scrise n versiuni ale
acestui limbaj). C-ul preia de la limbajele de tip PASCAL gradul
ridicat de portabilitate, iar de la limbajele de asamblare
rapiditatea n execuie i gestionarea eficient a memoriei. Astzi,
cele mai utilizate versiuni sunt: C++, Quick C, Visual C.

Caracterizarea principalelor limbaje de programare


C++ este un limbaj de programare general. Este un limbaj
multi-paradigm cu verificarea static a tipului variabilelor ce
suport programare procedural, abstractizare a datelor,
programare orientat pe obiect.
n anii 90, C++ a devenit unul din cele mai populare limbaje de
programare comerciale. Nimeni nu deine C++ ns, acesta fiind
gratuit.
Bell Labs a dezvoltat C++ (iniial denumit C cu Clase) n anii
1980 ca o serie de mbuntiri ale limbajului C. Acestea au
nceput cu adugarea de clase apoi de funcii virtuale,
suprancrcarea operatorilor, motenire multipl, template-uri i
excepii. Limbajul de programare C++ a fost standardizat n
1998 ca i ISO 14882:1998, versiunea curenta fiind din 2003,
ISO 14882:2003.

Caracterizarea principalelor limbaje de programare


Java este un limbaj de programare orientat-obiect, puternic
tipat, conceput de Sun Microsystems la nceputul anilor 90.
Un program Java compilat, corect scris, poate fi rulat fr
modificri pe orice computer (PC, PDA etc) pe care e instalat
o main virtual Java (JVM=Java Virtual Machine). Acest
nivel de portabilitate (inexistent pentru limbaje mai vechi cum
ar fi C) este posibil deoarece sursele Java sunt compilate ntr-un
format standard numit cod de octei (byte-code) care este
intermediar ntre codul main (dependent de tipul
computerului) i codul surs.
Maina virtual Java este mediul n care se execut programele
Java. n prezent, exist mai muli furnizori de JVM, printre care
Sun, IBM, Bea, Oracle, FSF.

Caracterizarea principalelor limbaje de programare

MATLAB ("matrix laboratory")este un limbaj de


programare i un mediu de calcul numeric. MATLAB permite
manevrarea uoar a matricilor, realizarea graficelor de
funcii i date, implementarea algoritmilor, crearea de
interfee utilizator i interfaarea cu programe din alte
limbaje.
n 2004 MathWorks a anunat c MATLAB este utilizat de
peste un milion de oameni din industrie i din lumea
academic.

Caracterizarea principalelor limbaje de programare

LabVIEW (prescurtare de la Laboratory Virtual


Instrumentation Engineering Workbench) este o platform i
un mediu de dezvoltare pentru un limbaj de programare
vizual. Lansat iniial de Apple Macintosh n 1986, LabVIEW
este folosit n mod obinuit pentru achiziia de date, controlul
instrumentelor i automatizare industrial, pe o mare varietate
de sisteme de operare. Limbajul de porgramare folosit de
LabVIEW, numit G, este un limbaj bazat pe fluxul de date.

Caracterizarea principalelor limbaje de programare


LISP este un limbaj de programare funcional cu un lung
istoric. Conceput iniial ca un model de calcul (asemntor
celui construit de Turing), a devenit limbajul cel mai folosit la
crearea aplicaiilor de inteligen artificial n anii de glorie ai
acestui domeniu (1970-1980).
Denumirea provine de la "LISt Processing".
Specificat iniial n 1958, Lisp este cel de-al doilea ca vechime
limbaj de programare de nivel nalt; doar Fortran este mai
vechi. Precum Fortran, Lisp s-a schimbat mult fa de forma
iniial,existnd de-a lungul vremii o serie de dialecte. Astzi,
cele mai rspndite dialecte Lisp sunt Common Lisp i Scheme.

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