Sunteți pe pagina 1din 2

1.

Programare i limbaje de programare


Limbaje

Procedurale (imperative) limbaje de nivel nalt


o Fortran, Cobol, Algol, Pascal, C,...
o program secven de instruciuni
o instruciunea de atribuire, structuri de control al execuiei secveniale,
ramificrii i ciclrii.
o rolul programatorului ce i cum
1. s descrie CE e de calculat
2. s organizeze calculul
CUM
3. s organizeze gestionarea memoriei
o !!! se susine c instruciunea de atribuire este periculoas n limbajele
de nivel nalt, aa cum instruciunea GO TO a fost considerat
periculoas pentru programarea structurat n anii 68.

Declarative (descriptive, aplicative) limbaje de nivel foarte nalt


o se bazeaz pe expresii
o expresive, uor de neles (au o baz simpl), extensibile
o programele pot fi vzute ca descrieri care declar informaii despre
valori, mai degrab dect instruciuni pentru determinarea valorilor sau
efectelor.
o renun la instruciuni
1. protejeaz utilizatorii de la a face prea multe erori
2. sunt generate din principii matematice - analiza, proiectarea,
specificarea, implementarea, abstractizarea i raionarea
(deducii ale consecinelor i proprietilor) devin activiti din
ce n ce mai formale.
o rolul programatorului - ce (nu cum)
o dou clase de limbaje declarative
1. limbajele funcionale (de exemplu Lisp, ML, Scheme,
Haskell, Erlang)
se focalizeaz pe valori ale datelor descrise prin expresii
(construite prin aplicri ale funciilor i definiii de
funcii), cu evaluare automat a expresiilor
2. limbaje logice (de exemplu Prolog, Datalog), care se
focalizeaz pe aseriuni logice care descriu relaiile dintre
valorile datelor i derivri automate de rspunsuri la ntrebri,
plecnd de la aceste aseriuni.
o aplicaii n Inteligena Artificial demonstrarea automat, procesarea
limbajului natural i nelegerea vorbirii, sisteme expert, nvare
automat, ageni, etc.

Limbaje multiparadigm: F#, Python, Scala (imperativ, funcional, orientat obiect)


Interaciuni ntre limbajele declarative i cele imperative limbaje declarative care ofer
interfee cu limbaje imperative (ex C, Java): SWI-Prolog, GNUProlog, etc.
1

2. Recursivitate
mecanism general de elaborare a programelor.
recursivitatea a aprut din necesiti practice (transcrierea direct a formulelor matematice
recursive; vezi funcia lui Ackermann)
recursivitatea este acel mecanism prin care un subprogram (funcie, procedur) se
autoapeleaz.
dou tipuri de recursivitate: direct sau indirect.
dou lucruri de considerat n descrierea unui algoritm recursiv: regula recursiv i condiia
de ieire din recursivitate.
avantaj al recursivitii: text surs extrem de scurt i foarte clar.
dezavantaj al recursivitii: umplerea segmentului de stiv n cazul n care numrul
apelurilor recursive, respectiv ai parametrilor formali i locali ai subprogramelor recursive
este mare.
o n limbajele declarative exist mecanisme specifice de optimizare a recursivitii
(vezi mecanismul recursivitii de coad n Prolog).

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