Documente Academic
Documente Profesional
Documente Cultură
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
Scurt istorie
Anii 50
1957
FORTRAN
1958
ALGOL
1960
LISP, COBOL
1962
APL, SIMULA
1964
BASIC, PL/I
1970
Prolog
1972
1975
Pascal, Scheme
Limbaje didactice
1983
Smalltalk-80, Ada
OOP reinventat
1986
C++, Eiffel
1988
1990
Haskell
1990s
1995
Java
2000
C#
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
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
Tipuri i clasificri
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
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