Paradigme de Programare

Documente similare
Cursul 1: Introducere Paradigme de Programare Conf. dr. ing. Andrei Olaru Departamentul de Calculatoare 2019

Paradigme de Programare

Paradigme de Programare

Microsoft PowerPoint - Prezentarea_programelor_de_studii_de_licenta_2019

Paradigme de programare

PROGRAMARE ORIENTATA PE OBIECTE

PLAN DE ÎNVĂŢĂMÂNT

ROMÂNIA MINISTERUL EDUCAŢIEI NAŢIONALE UNIVERSITATEA OVIDIUS DIN CONSTANŢA FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ PLAN DE ÎNVĂŢĂMÂNT (conţine 11 pagi

Proiectarea Sistemelor Software Complexe

Microsoft Word - Ghid_intocmire_lucrare_disertatie iulie 2019_f _1_

PLAN DE ÎNVĂŢĂMÂNT

PLAN DE ÎNVĂŢĂMÂNT

U.T.Cluj-Napoca, C.U.N. Baia Mare Facultatea: Inginerie PLAN de INVĂŢĂMÂNT Domeniul: Calculatoare şi Tehnologia Informaţiei anul univ Progr

Slide 1

ROMÂNIA MINISTERUL EDUCAŢIEI NAȚIONALE Domeniul fundamental: Matematică și știinţe ale naturii Domeniul de licenţă: Informatică Ciclu de studii: 1 Pro

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Matematică şi Info

FIŞA DISCIPLINEI 1. Date despre program 1.1.Instituţia de învăţământ superior 1.2.Facultatea 1.3.Departamentul 1.4.Domeniul de studii 1.5.Ciclul de st

09. Informatica 2 - MM 1

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Microsoft Word - Planuri_Mate_

Dorel LUCHIAN Gabriel POPA Adrian ZANOSCHI Gheorghe IUREA algebră geometrie clasa a VIII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA

Ruby on Rails Pop Alexandru Pavel Razvan Calculatoare 4

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Ghid studii

Nr

LOGICA MATEMATICA SI COMPUTATIONALA Sem. I,

DOMENIUL: Matematica

Ingineria Sistemelor de Programare

FD Contab gestiune CIG

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai superior 1.2 Facultatea Psihologie şi Ştiinţe ale Educ

6.25 MMST_ _VSE FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Sapientia din Cluj-Napoca 1.2 Facu

Raport tehnic şi ştiinţific final privind implementarea proiectului PN-III-P2-2.1-PED Acronim: ForVer Răzvan Diaconescu Decembrie Rez

Nr

Microsoft Word - TST docx

Slide 1

PowerPoint Presentation

FIŞA DISCIPLINEI

Laborator 3

MergedFile

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

rptFisa

Microsoft PowerPoint - 11_USO_curs_08.ppt [Compatibility Mode]

programă şcolară pentru clasa a 11a, liceu

Microsoft Word - 5_ _Eval_ ETC_master_ESI_AnI-II_completat.doc

STORY NAME: Being 20: Japanese culture and Game Development in Moldova COPYRIGHT HOLDER: COPYRIGHT NOTICE: Gabriel Encev / OPEN Media Hub Ownership of

PowerPoint Presentation

PowerPoint Presentation

Managementul Resurselor Umane

ANEXA nr

Universitatea de Stat Alecu Russo din Bălți Facultatea de Ştiinţe ale Educaţiei, Psihologie şi Arte Catedra de psihologie CURRICULUM la unitatea de cu

Programarea şi utilizarea calculatoarelor

Top

FIŞA DISCIPLINEI 1. Date despre program 1.1. Instituţia de învăţământ superior Universitatea Spiru Haret 1.2. Facultatea Ştiinţe Economice Bucureşti 1

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Facultatea de Mate

PowerPoint Presentation

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA COORDONAT: 2017 Nr. de înregistrare a planului de învăţământ UNIVERSITATEA DE STAT

FIŞA DISCIPLINEI

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ŞTIINŢE REALE, ECONOMICE

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iasi 1.2 Facultatea Facultatea de

15. Logică matematică cu aplicații în informatică - MI 3

Microsoft Word - Curs_08.doc

Slide 1

Curs 5

tehnologii web

UNIVERSITATEA DIN BUCUREȘTI FACULTATEA DE SOCIOLOGIE ȘI ASISTENȚĂ SOCIALĂ MASTER Studii de securitate FIŞA DISCIPLINEI Denumirea disciplinei Doctrine

GHID PENTRU REALIZAREA PROIECTULUI

Anexa 2

Programe derulate în ediția a treia Junior IT Fun Factory *În cadrul Junior IT Fun Factory fiecare înscriere se face pentru un program individual în f

Domeniul de licenţă: DREPT Programul de studii universitare de licenţă DREPT Durata studiilor: 4 ani/8 semestre Număr de credite: 240 Forma de învăţăm

Declararea variabilelor

Microsoft Word - cap1p4.doc

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

PowerPoint-Präsentation

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

SUBPROGRAME

E_d_Informatica_sp_SN_2014_bar_10_LRO

Cursul 10 - Shell scripting

Cursul 10 - Shell scripting

11_FD_Evaluarea intreprinderii si Diagnostic financiar-contabil_2018_2019

CURS

Microsoft Word _14.00-Materiale de instalatii

Microsoft Word - fisa-Prelucrarea-Digitala_Imaginilor-RO-Anca-Ignat-2018

Utilizare Internet

Discipline aferente competenţelor Facultate: Facultatea de Electronică şi Telecomunicaţii Universitate: UNIVERSITATEA POLITEHNICA DIN TIMIȘOARA Domeni

Sisteme de calcul în timp real

Şcoala ………

Progresivitatea dezvoltării limbajului la preșcolari prin aplicarea probelor de evaluare

PHP (II)

2. Date despre disciplină FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Dunărea de Jos din Galaţi 1.2 Fa

Microsoft Word - Evaluare_11_IH_poz4_IA_Anii_I-II.doc

E_d_Informatica_sp_MI_2015_bar_02_LRO

Transcriere:

Paradigme de Programare Conf. dr. ing. Andrei Olaru andrei.olaru@cs.pub.ro cs@andreiolaru.ro Departamentul de Calculatoare 2019 1 : 1 / 38

Cursul 1 Introducere 1 : 2 / 38

Cursul 1: Introducere 1 Exemplu 2 Ce studiem la PP? 3 De ce studiem această materie? 4 Paradigma de programare 5 Istoric: Paradigme și limbaje de programare 6 Introducere în Racket 7 Organizare 1 : 3 / 38

BlooP and FlooP and GlooP [http://abstrusegoose.com/503] [(CC) BY-NC abstrusegoose.com] 1 : 4 / 38

Exemplu 1 : 5 / 38

Exemplu Ex Exemplu Să se determine dacă un element e se regăsește într-o listă L (e L). Să se sorteze o listă L. 1 : 6 / 38

Modelare funcțională (1) Racket: 1 ( define memlist ( lambda ( e L ) 2 ( if ( null? L ) 3 # f 4 ( if ( equal? ( first L ) e ) 5 # t 6 ( memlist e ( rest L ) ) 7 ) ) 8 ) ) 9 10 ( define ins ( lambda ( x L ) 11 ( cond (( null? L ) ( list x ) ) 12 ((< x ( first L ) ) ( cons x L ) ) 13 ( else ( cons ( first L ) ( ins x ( rest L ) ) ) ) ) ) ) 1 : 7 / 38

Modelare funcțională (2) Haskell 1 memlist x [] = False 2 memlist x ( e : t ) = x == e memlist x t 3 4 ins x [] = [ x ] 5 ins x l@ ( h : t ) = if x < h then x : l else h : ins x t 1 : 8 / 38

Modelare logică Prolog: 1 membera (E, [ E _ ]) : -!. 2 membera (E, [ _ L ]) : - membera (E, L ). 3 4 % elementul, lista, rezultatul 5 ins (E, [], [ E ]). 6 ins (E, [ H T ], [E, H T ]) : - E < H,!. 7 ins (E, [ H T ], [ H TE ]) : - ins (E, T, TE ). 1 : 9 / 38

Ce studiem la PP? 1 : 10 / 38

Elemente pe care le vom studia Paradigma funcțională și paradigma logică, în contrast cu paradigma imperativă. Racket: introducere în programare funcțională Calculul λ ca bază teoretică a paradigmei funcționale Racket: întârzierea evaluării și fluxuri Haskell: programare funcțională cu o sintaxă avansată Haskell: evaluare leneșă și fluxuri Haskell: tipuri, sinteză de tip, și clase Prolog: programare logică LPOI ca bază pentru programarea logică Prolog: strategii pentru controlul execuției Algorimi Markov: calcul bazat pe reguli de transformare 1 : 11 / 38

Elemente pe care le vom studia Paradigma funcțională și paradigma logică, în contrast cu paradigma imperativă. Racket: introducere în programare funcțională Calculul λ ca bază teoretică a paradigmei funcționale Racket: întârzierea evaluării și fluxuri Haskell: programare funcțională cu o sintaxă avansată Haskell: evaluare leneșă și fluxuri Haskell: tipuri, sinteză de tip, și clase Prolog: programare logică LPOI ca bază pentru programarea logică Prolog: strategii pentru controlul execuției Algorimi Markov: calcul bazat pe reguli de transformare 1 : 11 / 38

Elemente pe care le vom studia Paradigma funcțională și paradigma logică, în contrast cu paradigma imperativă. Racket: introducere în programare funcțională Calculul λ ca bază teoretică a paradigmei funcționale Racket: întârzierea evaluării și fluxuri Haskell: programare funcțională cu o sintaxă avansată Haskell: evaluare leneșă și fluxuri Haskell: tipuri, sinteză de tip, și clase Prolog: programare logică LPOI ca bază pentru programarea logică Prolog: strategii pentru controlul execuției Algorimi Markov: calcul bazat pe reguli de transformare 1 : 11 / 38

Elemente pe care le vom studia Paradigma funcțională și paradigma logică, în contrast cu paradigma imperativă. Racket: introducere în programare funcțională Calculul λ ca bază teoretică a paradigmei funcționale Racket: întârzierea evaluării și fluxuri Haskell: programare funcțională cu o sintaxă avansată Haskell: evaluare leneșă și fluxuri Haskell: tipuri, sinteză de tip, și clase Prolog: programare logică LPOI ca bază pentru programarea logică Prolog: strategii pentru controlul execuției Algorimi Markov: calcul bazat pe reguli de transformare 1 : 11 / 38

Elemente pe care le vom studia Paradigma funcțională și paradigma logică, în contrast cu paradigma imperativă. Racket: introducere în programare funcțională Calculul λ ca bază teoretică a paradigmei funcționale Racket: întârzierea evaluării și fluxuri Haskell: programare funcțională cu o sintaxă avansată Haskell: evaluare leneșă și fluxuri Haskell: tipuri, sinteză de tip, și clase Prolog: programare logică LPOI ca bază pentru programarea logică Prolog: strategii pentru controlul execuției Algorimi Markov: calcul bazat pe reguli de transformare 1 : 11 / 38

De ce studiem această materie? 1 : 12 / 38

De ce? Ne vor folosi aceste lucruri în viața reală? The first math class. [(C) Zach Weinersmith, Saturday Morning Breakfast Cereal] [https: //www.smbc-comics.com/ comic/a-new-method] 1 : 13 / 38

De ce? 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 1 : 14 / 38

De ce? Mai concret până acum ați studiat paradigma imperativă (legată și cu paradigma orientată-obiect) un anumit mod de a privi procesul de rezolvare al unei probleme și de a căuta soluții la probleme de programare. paradigmele declarative studiate oferă o gamă diferită (complementară!) de unelte alte moduri de a rezolva anumite probleme. o pregătire ce permite accesul la poziții de calificare mai înaltă (arhitect, designer, etc.) 1 : 15 / 38

De ce? Sunt aceste paradigme relevante? evaluarea leneșă prezentă în Python (de la v3),.net (de la v4) funcții anonime prezente în C++ (de la v11), C#/.NET (de la v3.0/v3.5), Dart, Go, Java (de la JDK8), JS/ES, Perl (de la v5), PHP (de la v5.0.1), Python, Ruby, Swift. Prolog și programarea logică sunt folosite în software-ul modern de A.I., e.g. Watson. În industrie sunt utilizate limbaje puternic funcționale precum Erlang, Scala, F#, Clojure. Limbaje multi-paradigmă adaptarea paradigmei utilizate la necesități. 1 : 16 / 38

De ce? O bună cunoaștere a paradigmelor alternative $$$ Developer Survey 2018 [https://insights.stackoverflow.com/survey/2018/ #technology-what-languages-are-associated-with-the-highest-salaries-world Developer Survey 2017 [https: //insights.stackoverflow.com/survey/2017/#top-paying-technologies] 1 : 17 / 38

Paradigma de programare 1 : 18 / 38

Ce înseamnă paradigma de programare Ce diferă între paradigme? diferă sintaxa diferă modul de construcție al expresiilor diferă structura programului 1 : 19 / 38

Ce înseamnă paradigma de programare Ce diferă între paradigme? diferă sintaxa aceasta este o diferență între limbaje, dar este influențată și de natura paradigmei. diferă modul de construcție al expresiilor diferă structura programului 1 : 19 / 38

Ce înseamnă paradigma de programare Ce diferă între paradigme? diferă sintaxa aceasta este o diferență între limbaje, dar este influențată și de natura paradigmei. diferă modul de construcție al expresiilor diferă structura programului 1 : 19 / 38

Ce înseamnă paradigma de programare Ce diferă între paradigme? diferă sintaxa aceasta este o diferență între limbaje, dar este influențată și de natura paradigmei. diferă modul de construcție al expresiilor diferă structura programului ce poate reprezenta o expresie, ce operatori putem aplica între expresii. 1 : 19 / 38

Ce înseamnă paradigma de programare Ce diferă între paradigme? diferă sintaxa aceasta este o diferență între limbaje, dar este influențată și de natura paradigmei. diferă modul de construcție al expresiilor ce poate reprezenta o expresie, ce operatori putem aplica între expresii. diferă structura programului ce anume reprezintă programul. 1 : 19 / 38

Ce înseamnă paradigma de programare Ce caracterizează o paradigmă? valorile de prim rang modul de construcție a programului modul de tipare al valorilor ordinea de evaluare (generare a valorilor) modul de legare al variabilelor (managementul valorilor) controlul execuției Paradigma de programare este dată de stilul fundamental de construcție al structurii și elementelor unui program. 1 : 20 / 38

Ce vom studia? Conținutul cursului 1 Diverse perspective conceptuale asupra noțiunii de calculabilitate efectivă modele de calculabilitate. 2 Influența perspectivei alese asupra procesului de modelare și rezolvare a problemelor paradigme de programare. 3 Limbaje de programare aferente paradigmelor, cu accent pe aspectul comparativ. 1 : 21 / 38

Modele paradigme limbaje Modele de calculabilitate C, Pascal procedural paradigma J, C++, Py orientat-obiect imperativă Mașina Turing Racket, Haskell Prolog paradigma funcțională paradigma logică Mașina λ FOL + Resolution echivalente! CLIPS paradigma asociativă Mașina Markov T Teza Church-Turing: efectiv calculabil = Turing calculabil 1 : 22 / 38

Istoric: Paradigme și limbaje de programare 1 : 23 / 38

Istorie 1950-1975 1 : 24 / 38

Istorie 1975-1995 1 : 25 / 38

Istorie 1995-2002 1 : 26 / 38

Istorie 2002-2006 1 : 27 / 38

Istorie 2006-2013 1 : 28 / 38

Istorie 56-04 pe scurt 1 : 29 / 38

Istorie Resurse imagine navigabilă (slides precedente): [http://www.levenez.com/lang/] poster (până în 2004): [http://oreilly.com/pub/a/oreilly/news/languageposter_0504.html] arbore din slide precedent și arbore extins: [http://rigaux.org/language-study/diagram.html] Wikipedia: [http://en.wikipedia.org/wiki/generational_list_of_programming_languages] [https://en.wikipedia.org/wiki/timeline_of_programming_languages] 1 : 30 / 38

Introducere în Racket 1 : 31 / 38

Lisp cycles [http://xkcd.com/297/] [(CC) BY-NC Randall Munroe, xkcd.com] 1 : 32 / 38

Racket din 1975 funcțional dialect de Lisp totul este văzut ca o funcție constante expresii neevaluate perechi / liste pentru structurarea datelor apeluri de funcții liste de apelare, evaluate evaluare aplicativă, funcții stricte, cu anumite excepții 1 : 33 / 38

Organizare 1 : 34 / 38

Unde găsesc informații? Resurse de bază http://elf.cs.pub.ro/pp/ Regulament: http://elf.cs.pub.ro/pp/19/regulament Forumuri: acs.curs L-A2-S2-PP-CA-CC-CD https://acs.curs.pub.ro/2018/course/view.php?id=584 Elementele cursului sunt comune la seriile CA, CC și CD. 1 : 35 / 38

Notare mai multe la http://elf.cs.pub.ro/pp/18/regulament Laborator: 1p Teme: 4p (3 1.33p) Teste la curs: 0.5p cu bonusuri, dar maxim 1p total (cu extensie până la 1.5 pentru performanță susținută) cu bonusuri, dar în limita a maxim 6p pe parcurs punctare pe parcurs, la curs Test din materia de laborator: 0.5p Examen: 4p limbaje + teorie L T tc tg Ex min parcurs min ex test grilă, de cunoaștere a limbajelor 1 : 36 / 38

( [http://xkcd.com/859/] [(CC) BY-NC xkcd.com] 1 : 37 / 38