Académique Documents
Professionnel Documents
Culture Documents
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:1
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Cursul 1 Introducere
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:2
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Cuprins
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:3
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Organizare
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:4
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Resurse de baza
unde gasesc informat , ii?
http://elf.cs.pub.ro/pp/
Regulament: http://elf.cs.pub.ro/pp/regulament Teme s , i forumuri: http://cs.curs.pub.ro (n curnd)
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:5
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Notare
Laborator: 1p (cu bonusuri, max 1p total) Teme: 4p (4 1p) (cu bonusuri, max 6p pe parcurs) Teste la curs: 0,5p Test din materia de laborator: 0,5p Examen: 4p
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:6
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Laborator
Accent pe lucrul efectiv
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:7
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Obiective
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:8
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Inuen ta perspectivei alese asupra procesului de modelare s i rezolvare a problemelor paradigme de programare
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1:9
Paradigme de Programare Andrei Olaru si Mihnea Muraru
De ce?
Just a thought
I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. The law of instrument Abraham Maslow
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 10
Paradigme de Programare Andrei Olaru si Mihnea Muraru
De ce?
Mai concret
Largirea spectrului de abordare a problemelor Identicarea perspectivei naturale de modelare a unei probleme s i alegerea limbajului adecvat tii de nva tare a noi limbaje Sporirea capacita tile s s i de adaptare la particularita i diferen tele dintre acestea Exploatarea mecanismelor oferite de limbajele de programare
Organizare Obiective Exemplu Paradigme Limbaje 1 : 11
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 12
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 13
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Modele de calculabilitate
Modele paradigme limbaje
Calcul Lambda Paradigma funct Scheme, , ionala Haskell Mas Paradigma asociativa CLIPS , ina Markov Mas Paradigma logica Prolog , ina FOL
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 14
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplu
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 15
Paradigme de Programare Andrei Olaru si Mihnea Muraru
problema O prima
Exemplul 3.1.
se determine elementul minim dintr-un vector. Sa
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 16
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Modelare imperativa
Varianta procedurala
minList(L, n) 1: min L[1] 2: i 2 3: while i n do 4: if L[i ] < min then 5: min L[i ] 6: end if 7: i i +1 8: end while 9: return min
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 17
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Haskell:
1 2
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 18
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Modelare asociativa
Ideea: minList(L) = m L | x L x < m CLIPS:
1 2 3 4 5 6 7 8 9 10 11
facts 3) 2) 0) 1) )
( defrule minList ( elem ? m ) ( not ( elem ? x & :( < ? x ? m ) ) ) => ( assert ( min ? m ) ) )
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 19
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Modelare logica
Axiome:
1 2 3 4
Prolog:
1 2 3 4 5
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 20
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Paradigme
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 21
Paradigme de Programare Andrei Olaru si Mihnea Muraru
a cu sintaxa limbajului! Atent , ie! Paradigma nu are legatur diferent Exista , e importante ntre paradigmele de programare. Vom discuta despre efecte laterale, referent s transparent ,a , iala , i gestionarea funct , iilor n limbaj.
Organizare Obiective Exemplu Paradigme Limbaje 1 : 22
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.1.
n expresia 2 + (i = 3), subexpresia (i = 3): produce valoarea 3, conducnd la rezultatul 5 al ntregii expresii are efectul lateral de ini tializare a lui i cu 3
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.3.
n expresia x-- + ++x, cu x = 0: evaluarea stnga dreapta produce 0 + 0 = 0 evaluarea dreapta stnga produce 1 + 1 = 2 nlocuim cele doua subexpresii daca ob cu valorile pe care le reprezinta, tinem
x + (x + 1) = 0 + 1 = 1
Adunare necomutativa?! Importan ta ordinii de evaluare! Dependen te implicite, put i posibile , in lizibile s generatoare de bug-uri.
Organizare Obiective Exemplu Paradigme Limbaje 1 : 24
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.4.
1
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 25
Paradigme de Programare Andrei Olaru si Mihnea Muraru
referen o unica Expresie transparenta tial: poseda pastrnd valoare, cu care poate substituita, semnica tia programului.
Exemplul 4.6.
x-- + ++x nu, valoarea depinde de ordinea de evaluare
evaluari consecutive vor produce x = x + 1 nu, doua rezultate diferite statica etc.) x ar putea , n func tie de statutul lui x (globala,
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 26
Paradigme de Programare Andrei Olaru si Mihnea Muraru
referen Func tie transparenta tial: rezultatul ntors depinde exclusiv de parametri
Exemplul 4.7.
int g = 0; int transparent ( int x ) { return x + 1; } int opaque ( int x ) { return x + ++ g ; }
opaque(3) - opaque(3) != 0! Func tii transparente: log, sin etc. Func tii opace: time, read etc.
Organizare Obiective Exemplu Paradigme Limbaje 1 : 27
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Lizibilitatea codului a corectitudinii programului Demonstrarea formala Optimizare prin reordonarea instruc tiunilor de catre compilator s i prin caching prin eliminarea modicarilor Paralelizare masiva, concurente
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 28
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.9.
se scrie func Sa tia compose, ce prime ste ca parametri alte 2 func tii, f s i g, s i ntoarce func tia ob tinuta prin compunerea lor, f g.
Organizare Obiective Exemplu Paradigme Limbaje 1 : 29
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 30
Paradigme de Programare Andrei Olaru si Mihnea Muraru
abstract class Func <U , V > { public abstract V apply ( U u ) ; public <T > Func <T , V > compose ( final Func <T , U > f ) { final Func <U , V > outer = this ; return new Func <T , V >() { public V apply ( T t ) { return outer . apply ( f . apply ( t ) ) ; } }; } }
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Scheme:
1 2 3 4
Haskell:
1
compose = (.)
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 32
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.10.
( define sum-uncurry ( lambda ( x y ) (+ x y ) ) )
1 2 3 4 5
( sum-uncurry 1 2)
6 7 8 9
10
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 33
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Exemplul 4.12.
1 2 3 4 5 6
( define l ' (1 2 3) ) (( compose car cdr ) l ) ( map list l ) ( filter odd ? l ) ( foldl + 0 l ) ; ; ; ; 2 ((1) (2) (3) ) (1 3) 6
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 34
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Paradigma imperativa
Caracteristici
Orientare spre ac tiuni s i efectele acestora Cum se ob tine solu tia Atribuirea ca opera tie fundamentala Efecte laterale permise, compromi tnd transparen ta referen tiala Secven tierea instruc tiunilor a ca mul Programe cu stare, vazut timea valorilor variabilelor la un anumit moment, ce pot inuen ta aceleia rezultatul evaluarii si expresii
Organizare Obiective Exemplu Paradigme Limbaje 1 : 35
Paradigme de Programare Andrei Olaru si Mihnea Muraru
a n sens matematic, exclusiv prin Func tia vazut valoarea pe care o calculeaza Func tii ca valori de prim rang Interzicerea efectelor laterale, pentru eliminarea la nivel dependen telor implicite modularitate sporita, de func tie! Promovarea transparen tei referen tiale, alaturi de avantajele acesteia Diminuarea importan tei ordinii de evaluare a stare Programe far
Organizare Obiective Exemplu Paradigme Limbaje 1 : 36
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Its really clear that the imperative style of programming has run its course. Were sort of done with that. However, in the declarative realm we can speculate a 10x improvement in productivity in certain domains. Anders Hejlsberg C# Architect
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 37
Paradigme de Programare Andrei Olaru si Mihnea Muraru
tilor solu Accent pe formularea proprieta tiei Ce trebuie ob tinut (vs. cum la imperativa) tuire nainte/napoi Fapte, reguli, nlan Orientare spre date
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 38
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Calcul paralel a corectitudinii programelor Demonstrarea automata modelului mai simplu de execu s i testare, datorita tie Adoptare a paradigmei func tionale n limbajele noi: C#, F#, Python, JavaScript, Clojure (JVM), Scala Erlang (Ericsson) limbaj func tional utilizat n telecomunica tii, economie, comer t electronic
Organizare Obiective Exemplu Paradigme Limbaje 1 : 39
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Limbaje
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 40
Paradigme de Programare Andrei Olaru si Mihnea Muraru
Tipare
Statica/dinamic a Tare/slaba
Legarea variabilelor
Statica Dinamica
Organizare Obiective Exemplu Paradigme Limbaje 1 : 41
Paradigme de Programare Andrei Olaru si Mihnea Muraru
calculabilitate, The law of instrument, efect lateral, referent valori de prim rang, Scheme, transparent ,a , iala, Haskell, Prolog, CLIPS.
Organizare
Obiective
Exemplu
Paradigme
Limbaje 1 : 42
Paradigme de Programare Andrei Olaru si Mihnea Muraru