Princípy tvorby softvéru Programovacie paradigmy

Podobné dokumenty
DediĊnosť

Princípy tvorby softvéru Modelovanie domény

Funkcionálne programovanie Cvičenie 9 Funkcionálne programovanie v Jave Sergej Chodarev 22. november 2017 Technická Univerzita v Košiciach

Princípy tvorby softvéru GIT a iné užitocné veci

Princípy tvorby softvéru Perzistencia, databázy

PowerPoint Presentation

SMALL INTERACTIVE COMPUTER ACTIVITIES MADE BY PRIMARY TEACHERS (My PhD thesis one year after) Peter Tomcsányi Katedra základov a vyučovania informatik

Akreditácia vzdelávacích programov – projekt MVP

Slovenská technická univerzita v Bratislave FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Ilkovičova 3, Bratislava Tímový projekt Ponuka Grafi

PowerPoint Presentation

Slovenská technická univerzita v Bratislave

Princípy tvorby softvéru Agile, Lean, Lean Startup

Slovenská technická univerzita v Bratislave FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Študijný program: Softvérové inžinierstvo RoboCup tretí roz

Prezentácia programu PowerPoint

enum

PowerPoint Presentation

R4308LPCPR_SK

Microsoft Word - Fabik - esej2011_18-is-xfabik.doc

Identity Lifecycle Management

Objektovo orientované programovanie

PowerPoint Presentation

4-david-msipapersource10.doc

untitled

Zadání čtvrté série

Databázy (1) - Prednáška 03

Operačné systémy Prednáška č. 2 Windows 95 Windows 95 má povesť ľahko ovládateľného systému pre užívateľov a ťažkého systému pre programátorov. Začiat

Algoritmizácia a programovanie - Príkazy

Sablona prispevky MSI

EC design examination certificate in accordance with Annex II, Section 4 of Directive 93/42/EEC As a notified body of the European Union (Reg. No. 012

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

Manažment v Tvorbe Softvéru 2018/2019

9. ročník

Microsoft Word - GALLOVA2

Úvod do mobilného operačného systému ANDROID

MOTIVAČNÝ DOKUMENT TÍMOVÝ PROJEKT TÍM Č. 21 GROMA Matej HORVÁTH Matej JURKÁČEK Peter KAMENSKÝ Jozef KŇAZE Adam MACKOVÁ Kristína PEJCHALOVÁ Lenka SEDLÁ

Microsoft Word - Kocian - esej2011_13-is-xkocianr.doc

Numerické riešenie všeobecnej (klasickej) DMPK rovnice.

Microsoft Word - msipaper57-petrakova.doc

Databázy (1) - Prednáška 10

Lorentzova sila a jej (zov²eobecnená") potenciálna energia Marián Fecko KTF&DF, FMFI UK, Bratislava Na predná²ke sme sa dozvedeli, ºe Lorentzova sila

Negrafické výpočty na GPU v prostredí OpenGL Autor: RNDr. Michal Červeňanský Školiteľ: Prof. Ing. Miloš Šrámek, PhD. Fakulta matematiky, fyziky a info

Čiastka 064/2004

Microsoft PowerPoint - Konferencia2008_RastislavJanac.ppt

Vývoj geografických aplikácií v GIS

Deň zasadnutia MsZ / Testületi ülés napja:

Web 2.0 Žilina Mgr. Juraj Michálek SinusGear Twitter: Blog:

Microsoft Word - HANDZAK.DOC

UBYTOVANIE KOLDING SCANDINAVIAN study

Prezentácia programu PowerPoint

BRKOS

Snímka 1

iot business hub whitepaper isdd_em_New.pdf

Nariadenie Komisie (EHS) č 2454_93 zoznam príloh.pdf

NSK Karta PDF

Blood Glucose Monitoring System Copyright Ascensia Diabetes Care Holdings AG. All rights reserved. diabetes.ascensia.com

Brno - Fórum automatizace 2019 Nástroje pre vývoj systémov prediktivnej údržby Michal Blaho

(Microsoft Word - Registr\341cia \372\350tu Hik-Connect.docx)

Slovak Banking API Standard Pohľad bánk na PSD2 a API

J&T SELECT zmiešaný o. p. f. PRVÁ PENZIJNÁ SPRÁVCOVSKÁ SPOLOČNOSŤ POŠTOVEJ BANKY, správ. spol., a.s. Polročná správa o hospodárení správcovskej spoloč

web2_infos

ECDL Syllabus V50 SK-V01

Rada Európskej únie V Bruseli 9. januára 2018 (OR. en) 15921/17 ADD 1 NÁVRH ZÁPISNICE Predmet: PV/CONS 79 TRANS 574 TELECOM 375 ENER zasadn

VSDC Free Video Editor stručný návod na používanie Link na sťahovanie softvéru: K prog

Prístup a Nastavenie pre KOMPAKT HOSTING

Microsoft PowerPoint - OOP_prednaska_10.pptx

Kategória školenia Tvorba www stránok obsahuje kurzy: Tvorba www stránok základy Cieľom kurzu je naučiť Vás vytvárať moderné webové stránky od úplných

Platný od: OPIS ŠTUDIJNÉHO ODBORU INFORMATIKA

STRUČNÝ NÁVOD KU IP-COACHU

Sablona_GIS Ova 2007

Štátne zastupiteľstvo v Bratislave (1950)

Zmluva o dodávke zmeného plynu.pdf

Databázy (1) - Prednáška 04

Microsoft Word - VI xfilcakt.docx

Sablona prispevky MSI

Sablona prispevky MSI

Poloautomatická anotácia stránok internetových obchodov Dávid Varga 4Ib, Abstrakt. Bakalárska práca sa zaoberá vytvorením metód na indukciu

PowerPoint Presentation

1 Rekurencie este raz riesenia niektorych rekurencii z cvik. mame danu rekurenciu napr T (n) = at ( n b ) + k. idea postupu je postupne rozpisovat cle

Virtualizacia Meranie výkonnosti vo virtualizovanom prostredí Spracoval: Patrik Tomajko 2 nd December 2009

NÁVRH UČEBNÝCH OSNOV PRE 1

Blood Glucose Monitoring System Copyright Ascensia Diabetes Care Holdings AG. All rights reserved. diabetes.ascensia.com

Príručka pre používateľa OTP tokenu Strana 1 z 8

st18649.sk11.doc

geografia.pdf

JB pre DCTA, (záverečná verzia 1.2) EU- TPD 1 P O D R O B N O S T I O K ÓDOVANÍ I n f o r m á c i e p r e o b c h o d Povinnosti kódovania

Katedra Informatiky Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava Podobnos slov (Diplomová práca) Martin Vl ák Vedúci: RN

VylozniksKosom.doc

Predstavenie tímu Náš tím pozostáva zo siedmich členov: Andrej Hucko, Jakub Domian, Ľubomíra Trnavská, Ján Karaffa, Ľudovít Popelka, Dušan Janeček a Z

Neineárne programovanie zimný semester 2018/19 M. Trnovská, KAMŠ, FMFI UK 1

Biharmonická rovnica - ciže co spôsobí pridanie jedného laplasiánu

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

midterm2014_1

TD2220-1_UG_SLO.pdf

MergedFile

Prepis:

Princípy tvorby softvéru lukotka@dcs.fmph.uniba.sk www.dcs.fmph.uniba.sk/~lukotka M-255 PTS -

ƒo to je programovacia paradigma A programming paradigm is a style, or way, of programming. Paradigm can also be termed as method to solve some problem or do some task. Programming paradigm is an approach to solve problem using some programming language or also we can say it is a method to solve a problem using tools and techniques that are available to us following some approach. PTS -

Je toho ve a, klasikácia je nie celkom jasná. Napríklad Funkcionálne programovanie je vä ²inou zaradené medzi deklaratívne paradigmy. Napriek tomu, mnoho kódu ktorý sa ozna uje ako "funkcionálny" je skôr imperatívneho charakteru ( o je priamy protipól deklaratívnosti). PTS -

Deklaratívne programovanie - popisujeme logiku výpo tu Imperatívne programovanie - popisujeme tok výpo tu Pri klasickom programovaní výrazne precaºuje imperatívne programovanie. PTS -

Deklaratívne programovanie select name from users where id=50 HTML Make ( iasto ne) Regulárne výrazy Constraint programming PTS -

Deklaratívne programovanie Vyºaduje nie o, o k logike doplní tok výpo tu. aºké vo v²eobecnosti, asto to môºe by výhodné pri aplikácii na úº²í problém (Doménovo ²pecické jazyky) PTS -

Najroz²írenej²ie paradigmy Procedural programming Object-oriented programming Functional programming Plus al²ie vybrané: Event-driven programming Aspect-oriented programming Generic programming PTS -

Procedurálne programovanie Procedúry vykonávajú operácie nad dátami (ktoré sú na rôznych úrovniach - globálne, lokálne) Príklad - Server pri 3 rámci 3-Tier architecture: server postupne vykonává DB tranzakciu. PTS -

Objektovo orientované programovanie Základné princípy: Abstraction Encapsularion Polymorphysm inheritance Príklad - Server pri 3 rámci 3-Tier architecture: Potrebné ORM - roz²írenie pobjektov za transaction boundary vykonáva tranzakciu (okamºite, alebo "bueruje"). PTS -

Objektovo orientované programovanie - viac hardcore prístup Pod a mnohých pôvodcov my²lienky OOP napr. Java a C++ nie sú OOP Ruby avoured pravidlá Sandi Metz' Rules For Developers PTS -

Funkcionálne programovanie Základné princípy: First class funkcie Funkcie vy²²ieho rádu (vrátane map, lter, accumulate,... ) Pure fukcie Referential transparency - Immutable data ƒasto silné typovacie systémy... Príklad - Server pri 3 rámci 3-Tier architecture: Pure funkcie vrátia db procedúru. PTS -

Príklad - po ítadlo Procedrálne: a=0 d e f p o c i t a j ( ) : a+=1 r e t u r n a PTS -

Príklad - po ítadlo OOP: c l a s s P o c i t a d l o : d e f init ( s e l f ) : s e l f. a=0 d e f p o c i t a j ( s e l f ) : s e l f. a+=1 r e t u r n s e l f PTS -

Príklad - po ítadlo Funkcionálne bez stavu: c l a s s P o c i t a d l o : d e f init ( s e l f, p o c e t =0): s e l f. a=p o c e t d e f p o c e t ( s e l f ) : r e t u r n s e l f. a d e f p o c i t a j ( poc ) : %t o t o moze byt a j metoda r e t u r n P o c i t a d l o ( poc. p o c e t ()+1) PTS -

Príklad - po ítadlo Funkcionálne so stavom (uzáverom): d e f d a j _ p o c i t a d l o ( ) : j =0 d e f f u n c t i o n _ t o _ r e t u r n ( ) : n o n l o c a l j j+=1 r e t u r n j r e t u r n f u n c t i o n _ t o _ r e t u r n p o c i d a t l o=d a j _ p o c i t a d l o ( ) a=p o c i t a d l o ( ) %1 b=p o c i t a d l o ( ) %2 c=p o c i t a d l o ( ) %3 PTS -

ƒo nájdeme vo funkcionálônych jazykoch Funkcionálne so stavom (uzáverom): d e f d a j _ p o c i t a d l o ( ) : j =0 d e f f u n c t i o n _ t o _ r e t u r n ( ) : n o n l o c a l j j+=1 r e t u r n j r e t u r n f u n c t i o n _ t o _ r e t u r n p o c i d a t l o=d a j _ p o c i t a d l o ( ) a=p o c i t a d l o ( ) %1 b=p o c i t a d l o ( ) %2 c=p o c i t a d l o ( ) %3 PTS -

ƒo nájdeme vo funkcionálônych jazykoch al²í random functional stu f i b = > n { ( n == 0 n == 1)? n : f i b [ n 1 ] + f i b [ n 2 ] } s ( x ) = (1 to x ) > f i l t e r ( x => x % 2 == 0) > map ( x => x 2) my_map_and_filter = f i l t e r ( x => x % 2 == 0). map ( x => x 2) PTS -

Event-driven programming GUI, Javascript (príklad promise chaining) new Promise ( f u n c t i o n ( r e s o l v e, r e j e c t ) { settimeout ( ( ) => r e s o l v e ( 1 ), 1 0 0 0 ) ; } ). then ( f u n c t i o n ( r e s u l t ) { r e t u r n r e s u l t 2 ; } ). then ( f u n c t i o n ( r e s u l t ) { r e t u r n r e s u l t 2 ; } ). then ( f u n c t i o n ( r e s u l t ) { r e t u r n r e s u l t 2 ; } ) ; PTS -

Generic programming C++, GP funguje s FP aj OOP: template <c l a s s S t r a t e g y > c l a s s MyCounter { i n t c =0; S t r a t e g y s ; p u b l i c : MyClass ( S t r a t e g y s_ ) : s ( s_ ) {} i n t g e t _ v a l u e ( ) { r e t u r n c ; } i n t i n c r e m e n t ( ) { c=s ( c ) ; } } increment_by_one = [ ] ( i n t x ) { r e t u r n x +1;} auto c o u n t e r=mycounter ( increment_by_one ) ; PTS -

Zdroje GeeksForGeeks: Introduction of Programming Paradigms Ray Toal: Programming Paradigms Wikipédia: Procedural programming javascript.info: Promise-chaining PTS -