Dizajnprogramskihjezika - · PDF filePascaliC,objektno-orijentisanojparadigmipripadajuSimula,...
Transcript of Dizajnprogramskihjezika - · PDF filePascaliC,objektno-orijentisanojparadigmipripadajuSimula,...
Dizajn programskih jezika— Odnos programskih jezika i programskih paradigmi —
Milena Vujosevic Janicic
www.matf.bg.ac.rs/~milena
Matematicki fakultet, Univerzitet u Beogradu
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Pregled
1 Uvod
2 Razvoj jezika i paradigmi
3 Osnovne paradigme
4 Dodatne paradigme
5 Literatura
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Pregled
1 UvodProgramski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
2 Razvoj jezika i paradigmi
3 Osnovne paradigme
4 Dodatne paradigme
5 Literatura Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Jezici i programski jezici
Jezik je skup pravila za komunikaciju izmedu subjekata.Pomocu jezika se predstavljaju i prenose informacije.Prirodni jezik se koristi za komunikaciju izmedu ljudi ugovornoj ili pisanoj formi.Programski jezik se koristi ...?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Jezici i programski jezici
Programski jezik sluzi, prvenstveno, za komunikaciju izmeducoveka i racunara, ali moze da se koristi i za komunikacijuizmedu masina, kao i za komunikaciju izmedu ljudiProgramski jezici se mogu deliti na razne nacineJedna podela je na masinski zavisne i masinski nezavisne, i nadalje ce uglavnom biti reci o masinski nezavisnim (visim)programskim jezicimaPostoje razne definicije programskih jezika.Kako biste Vi definisali programski jezik?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Programski jezici — definicije
Programski jezik je jezik konstruisan formalno da bi seomogucilo zadavanje instrukcija masinama, posebnoracunarima. (wikipedia)Programski jezik je jezik za pisanje programa koje racunar znai moze izvrsiti.Programski jezik je vestacki jezik koji sluzi za opis racunarskihprograma.Programski jezik je vestacki jezik za opis konstrukcija (pisanjeinstrukcija) koje mogu biti prevedene u masinaki jezik iizvrsene od strane racunara. (American Heritage Dictionary )
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Programski jezici — definicije
Programski jezik je skup sintaktickih i semantickih pravila kojise koriste za opis (definiciju) racunarskih programa.Programski jezik je notacioni sistem citljiv za racunare i ljude,a sluzi za opis poslova koje treba da obavi racunar.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Koliko programskih jezika postoji?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Koliko programskih jezika postoji?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Koliko programskih jezika postoji?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Koliko programskih jezika postoji?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Programski jezici
Postoji veliki broj programskih jezika (broji se u hiljadama)Enciklopedija britanika pominje preko 2000Drugi izvori pominju preko 2500 dokumentovanih programskihjezika (Bill Kinnersley)„Encyclopedia of Computer Languages”, autor DiarmuidPigott, sa Murdoch Univerziteta iz Australije navodi preko8,000 jezika.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Programski jezici
Naravno, nisu svi programski jezici jednako vazni i zastupljeniListe programskih jezika
http://en.wikipedia.org/wiki/List_of_programming_languageshttp://en.wikipedia.org/wiki/List_of_BASIC_dialectshttp://people.ku.edu/~nkinners/LangList/Extras/langlist.htm
Nemoguce je prouciti sve programske jezike
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Paradigma — znacenje
Rec paradigma je grckog porekla i znaciprimer za ugled,uzoruzorakobrazacsablon
Obicno se koristi da oznaci vrstu objekata koji imaju zajednickekarakteristike
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Programska paradigma
Programski obrazac, programski stil, programski sablon, nacinprogramiranjaFundamentalni stil programiranjaKlasifikacija medusobno slicnih programskih jezika
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Uloga programskih paradigmi
Broj programskih paradigmi nije tako veliki kao brojprogramskih jezikaIzucavanjem programskih paradigmi upoznaju se globalnasvojsta jezika koji pripadaju toj paradigmiInformacija da neki jezik pripada nekoj paradigmi nam govori oosnovnim svojstvima i mogucnostima jezikaPoznavanje odredene paradigme nam znacajno olaksava dasavladamo svaki programski jezik koji toj paradigmi pripada
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Programske paradigme su usko povezane sa programskimjezicima.Svakoj programskoj paradigmi pripada vise programskih jezika,na primer proceduralnoj paradigmi pripadaju programski jeziciPascal i C, objektno-orijentisanoj paradigmi pripadaju Simula,JAVA...Potrebno je izuciti svojstva najistaknutijih predstavnikapojedinih programskih paradigmiKoliko jezika
paradigmi
znas, toliko vredis!
Preciznije: Koliko predstavnika razlicitih paradigmi znas, tolikovredis!Sledeci nivo apstrakcije cine koncepti koji su zajednicki zarazlicite paradigme
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Programske paradigme su usko povezane sa programskimjezicima.Svakoj programskoj paradigmi pripada vise programskih jezika,na primer proceduralnoj paradigmi pripadaju programski jeziciPascal i C, objektno-orijentisanoj paradigmi pripadaju Simula,JAVA...Potrebno je izuciti svojstva najistaknutijih predstavnikapojedinih programskih paradigmiKoliko jezika
paradigmi
znas, toliko vredis!
Preciznije: Koliko predstavnika razlicitih paradigmi znas, tolikovredis!Sledeci nivo apstrakcije cine koncepti koji su zajednicki zarazlicite paradigme
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Programske paradigme su usko povezane sa programskimjezicima.Svakoj programskoj paradigmi pripada vise programskih jezika,na primer proceduralnoj paradigmi pripadaju programski jeziciPascal i C, objektno-orijentisanoj paradigmi pripadaju Simula,JAVA...Potrebno je izuciti svojstva najistaknutijih predstavnikapojedinih programskih paradigmiKoliko
jezika
paradigmi znas, toliko vredis!
Preciznije: Koliko predstavnika razlicitih paradigmi znas, tolikovredis!Sledeci nivo apstrakcije cine koncepti koji su zajednicki zarazlicite paradigme
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Programske paradigme su usko povezane sa programskimjezicima.Svakoj programskoj paradigmi pripada vise programskih jezika,na primer proceduralnoj paradigmi pripadaju programski jeziciPascal i C, objektno-orijentisanoj paradigmi pripadaju Simula,JAVA...Potrebno je izuciti svojstva najistaknutijih predstavnikapojedinih programskih paradigmiKoliko
jezika
paradigmi znas, toliko vredis!Preciznije: Koliko predstavnika razlicitih paradigmi znas, tolikovredis!
Sledeci nivo apstrakcije cine koncepti koji su zajednicki zarazlicite paradigme
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Programske paradigme su usko povezane sa programskimjezicima.Svakoj programskoj paradigmi pripada vise programskih jezika,na primer proceduralnoj paradigmi pripadaju programski jeziciPascal i C, objektno-orijentisanoj paradigmi pripadaju Simula,JAVA...Potrebno je izuciti svojstva najistaknutijih predstavnikapojedinih programskih paradigmiKoliko
jezika
paradigmi znas, toliko vredis!Preciznije: Koliko predstavnika razlicitih paradigmi znas, tolikovredis!Sledeci nivo apstrakcije cine koncepti koji su zajednicki zarazlicite paradigme
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Programski jeziciParadigme i programski jeziciPovezanost paradigmi i jezika
Povezanost paradigmi i jezika
Jedan programski jezik moze podrzati vise paradigmi, naprimer C++ podrzava klasican proceduralni stil, ali iobjektno-orijentisani i genricki stil programiranjaZa resavanje nekog konkretnog problema, posebno je bitanizbor programskog jezikaizborJezika.png
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Pregled
1 Uvod
2 Razvoj jezika i paradigmiRazvoj jezikaVrste programskih paradigmiPitanja
3 Osnovne paradigme
4 Dodatne paradigme
5 Literatura Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Bitni momenti u razvoju racunara
Jedan od prvih elektrnoskih racunara 1939. ABC za resavanjesistema linearnih jednacinaENIAC — prvi elektronski racunar opste namene (1946)Konceptualna promena krajem 1940. u vidu fon NojmanovearhitektureVezuje se za fon Nojmana i racunar EDVAC 1951, iako je onekim elementima ove arhitekture i ranije bilo reci
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Podele programskih jezika
Masinski zavisniPrednosti i mane masinski zavisnih jezikaMasinski nezavisniPrednosti i mane masinski nezavisnih jezika
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Kratka istorija
FORTRAN — FORmula TRANslating system, 1957, JohnBackus i IBMLISP — LISt Processing, malo posle FORTRANa, 1958, JohnMcCarthy i Paul GrahamCOBOL — COmmon Business-Oriented language, 1959, GraceHopper
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Kratka istorija
60-te ALGOL (58,60,68), Simula, Basic70-te C, Pascal, Smalltalk, Prolog80-te C++, Erlang90-te Haskell, Python, Visual Basic, Ruby, JAVA, PHP,OCaml, Lua, JavaScript...C#, Scala, F#, Elixir...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Razvoj programskih jezika
Postoji veliki broj programskih jezika, neki su sirokorasprostranjeni, neki se vise ne koristeJava, C, C++, C#, Pascal, Visual Basic, Lisp, Scheme, ML,Ruby, Modula-2, JavaScript, Fortran, Cobol, Haskell, Oberon,Prolog, PHP, Perl, Python, Ada, ScalaNastanak i razvoj programskih jezika dosta dobro se mozeprikazati pomocu razvojnog stabla.Razvojno stablo mogucava da se sagleda vreme nastankapojedinih programskih jezika, kao i medusobni uticaji.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Razvoj programskih jezika
Nema jedinstvenog razvojnog stabla (od autora zavisi na kojejezike ce staviti akcenat i kako ce ih medusobno povezati).prog_lang.pdfprog_lang_poster.pdfdiagram-full.pdfdiagram-light.pdfhttp://startit.rs/kad-bi-programski-jezici-bili-deca-u-vrticu/U kom razdoblju je nastao najveci broj programskih jezika?Koji su najuticajniji programski jezici?Kada su nastali najuticajniji programski jezici?Zasto postoji veliki broj programskih jezika?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Razvoj programskih paradigmi
Nove programske paradigme nastajale su uz teznju da seolaksa proces programiranja.Istovremeno, nastanak novih paradgmi povezan je sa efikasnimkreiranjem sve kompleksnijeg softvera.Svaka novonastala paradigma, bila je promovisana preko nekogprogramskog jezika.Razvoj programskih paradigmi (kao i programskih jezika)skopcan je i sa razvojem hardvera.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Razvoj programskih paradigmi
Razlicita shvatanja programskih paradigmiNe postoji jedinstveno misljenje naucnika o programskimparadigma (vrstama programskih paradigmi, njihovom znacaju,najistaknutijim programskim jezicima pojedinih paradigmi itd.)Moguce su razlicite podele na programske paradigme.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Osnovne programske paradigme
Najopstija podela je na proceduralnu i deklarativnu paradigmuProceduralna paradigma — osnovni zadatak programera daopise nacin (proceduru) kojim se dolazi do resenja problema.Deklarativna paradigma — osnovni zadatak programera je daprecizno opise problem, dok se mehanizam programskog jezikabavi pronalazenjem resenja problema.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Vrste programskih paradigmi
Osnovne programske paradigmeImeprativna paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigma
Ostale paradigme se cesto tretiraju kao podparadigme ilikombinacije osnovnih.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Napomena o imperativnoj i proceduralnoj paradigmi
Postoji vise shvatanja proceduralne paradigme:1 Proceduralna paradigma je podparadigma imperativne
paradigme koju karakterise, pored naredbi, i njihovo grupisanjeu podprograme (funkcije).U ovom slucaju, u literaturi se cesto imperativna iproceduralna paradigma koriste kao sinonimi.Imerativna paradigma se karakterise postojanjem naredbi, dokse deklarativna paradigma karakterise nepostojanjem naredbi.
2 Proceduralna paradigma je svaka paradigma kod koje se uprocesu programiranja opisuje algoritam (procedura) resavanjaproblema.U ovom slucaju je imperativna paradigma podparadigmaproceduralne paradigme dok je deklarativna paradigma (pitanjeSTA) suprotna od proceduralne paradigme (pitanje KAKO).
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Programski jezici i pradigme
Programski jezik je sredstvo koje koristi covek da izrazi procespomocu kojeg racunar resava nekakav problem.U zavisnosti od toga na kojoj od ovih reci je akcenat,programskim jezikom je podrzana dominatata programskaparadigama:
covek — logicka paradigmaproces — funkcionalna paradigmaracunar — proceduralna paradigmaproblem — objektno-orijentisana paradigma
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Programski jezici i pradigme
Prethodna definicija programskog jezika je prilagodenaosnovnim programskim paradigmama.Ova definicija se moze dopuniti tako da se preko nje moguobuhvatiti i druge paradigme.Na primer, modifikacija moze biti:Programski jezik je sredstvo koje koristi covek da izrazi procespomocu kojeg racunar, koristeci paralelnu obradu, resavanekakav problem.Ako je akcenat na paralelnoj obradi, dolazi se do konkurentne(paralelne) paradigme.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Dodatne programske paradigme
Komponentna paradigmaKonkurentna paradigmaSkript paradigmaGenericka paradigmaParadigma programiranja ogranicenjaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigma
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Razvoj jezikaVrste programskih paradigmiPitanja
Pitanja
Znacenje reci paradigma i programska paradigma.Uloga programskih paradigmi.Definicija programskog jezika.Povezanost paradigmi i jezika.Razvoj programskih jezika.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Pregled
1 Uvod
2 Razvoj jezika i paradigmi
3 Osnovne paradigmeImperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
4 Dodatne paradigme
5 Literatura
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Imperativna paradigma
Imperativna paradigma nastala je pod uticajem FonNojmanove arhitekture racunaraMoze se reci da se zasniva na tehnoloskom konceptu digitalnogracunaraProces izracunavanja se odvija slicno kao neke svakodnevnerutine (zanovan je na algoritamskom nacinu rada), kao sto jespremanje hrane koriscenjm recepata, popravljanje kola i sl.Moze da se okarakterise recenicom:“prvo uradi ovo, zatim uradi ono”Procedurom se saopstava racunaru KAKO se problem resava,tj navodi se precizan niz koraka (algoritam) potreban zaresavanje problema
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Imperativna paradigma
Osnovni pojam imperativnih jezika je naredbaNaredbe se grupisu u procedure i izvrsavaju se sekvencijalnoukoliko se eksplicitno u programu ne promeni redosledizvrsavanja naredbiUpravljacke strukture su naredbe grananja, naredbe iteracije, inaredbe skoka (goto)Oznake promenljivih su oznake memorijskih lokacija pa se unaredbama cesto mesaju oznake lokacija i vrednosti - toizaziva bocne efekte.C, Pascal, Basic, Fortran, PL, Algol...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Objektno-orijentisana paradigma
Ovo je jedna od najpopularnijih programskih paradigmiSazrela je pocetkom osamdesetih godina proslog veka, kaoteznja da se jednom napisani softver koristi vise putaSimualcija (modeliranje) spoljasnjeg sveta pomocu objekataObjekti interaguju medusobno razmenom porukaMogla bi da se okarakterise recenicom:“Uputi poruku objektima da bi simulurao tok nekog fenomena”
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Objektno-orijentisana paradigma
Podaci i procedure (funkcije) se ucauravaju (enkapsuliraju) uobjekteKoristi se skrivanje podataka da bi se zastitila unutrasnjasvojstva objekataObjekti su grupisani po klasama (klasa predstavlja sablon(koncept) na osnovu kojeg se kreiraju konkretni objekti, tj.instance)Klase su najcesce hijerarhijski organizovane i povezanemehanizmom nasledivanja.Simula 67, SmallTalk, C++, Eiffel, Java, C#
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Funkcionalna paradigma
Rezultat teznje da se drugacije organizuje proces programiranjaIzracunavanja su evaluacije matematickih funkcijaZasnovana je na pojmu matematicke funkcije i ima formalnustrogo definisanu matematicku osnovu u lambda racunuMogla bi se okarakterisati narednom recenicom“Izracunati vrednost izraza i koristiti je”
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Funkcionalna paradigma
Eliminisani su bocni efekti sto utice na lakse razumevanje ipredvidanje ponasanja programa — Izlazna vrednost funkcijezavisi samo od ulaznih vrednosti argumenata funkcijeNajistaknutiji predstavnik funkcionalne paradigme jeprogramski jezik Lisp.Nastala pedesetih i pocetkom sezdesetih godina proslog veka,stagnacja u razvoju sedamdesetih godina proslog veka,ozivljavanje funkcionane paradigme programskim jezikomHaskellLisp, Scheme, Haskell, ML, Scala, OCaml
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Logicka paradigma
Nastaje kao teznja da se u kreiranju programa koristi isti nacinrazmisljanja kao i pri resavanju problema u svakodnevnomzivotuDeklarativna paradigmaOpisuju se odnosi izmedu cinjenica i pravila u domenuproblema; koriste se aksiome, pravila izvodenja i upitiLogicka paradigma se dosta razlikuje od svih ostalih po nacinupristupa resavanju problema.Nije jednako pogodna za sve oblasti izracunavnja, osnovnidomen je resavanje problema vestacke inteligencije
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Logicka paradigma
Izvrsavanje programa zasniva se na sistematskom pretrazivanjuskupa cinjenica uz koriscenje odredenih pravila zakljucivanja.Zasnovana na matematickoj logici, tj. na predikatskom racunu1. reda.Zasnovana na automatskom dokazivanju teorema (metodrezolucije)Mogla bi da se okarakterise recenicom:“Odgovori na pitanje kroz trazenje resenja”Najpoznatiji programski jezik logicke paradigme je PROLOGProlog, ASP, Datalog, CLP, ILOG, Solver, ParLog, LIFE
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Pitanja
Sta karakterise proceduralnu paradigmu?Sta karakterise deklarativnu paradigmu?Koje su osnovne cetiri programske paradigme?Nabroj bar cetiri dodatne programske paradigme.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Pitanja
Koje su osnovne karakteristike imperativne paradigme?Nabroj tri jezika koji pripadaju imperativnoj paradigmi.Koje su osnovne karakteristike ... paradigme?Nabroj tri jezika koji pripadaju ... paradigmi.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Imperativna (proceduralna) paradigmaObjektno-orijentisana paradigmaFunkcionalna paradigmaLogicka paradigmaPitanja
Pitanja
Sta je programska paradigma?Koje su osnovne programske paradigme?Sta je programski jezik?Koji je odnos programskih jezika i programskih paradigmi?Zasto su nastajale i nastaju nove programske paradigme?
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Pregled
1 Uvod
2 Razvoj jezika i paradigmi
3 Osnovne paradigme
4 Dodatne paradigmeKomponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
5 Literatura
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Dodatne programske paradigme
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigma
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Komponentna paradigma
Ideja je da se softver sklapa od vecih gotovih komponenti, kaosto se to radi kod sklapanja elektronskih i tehnickih uredajaSoftverska komponenta je kolekcija delova (metoda i objekata)koji obezbeduju neku funkcionalnost.Kao i tehnicke komponente, i softverske komponente mogu bitiproste ili kompleksne, mogu delati samostalno ili u konjunkcijisa drugim jedinicama.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Komponentna paradigma
Komponentna paradigma je nova paradigma ili potparadigmaobjektno-orijentisane paradigme?Nezavisno od toga, pitanje je: da li treba posebno izucavatikomponentno programiranje?Stil programiranja koji je u ekspanziji i treba mu poklonitiposebnu paznju.Ideja je da se uprosti proces programiranja i da se jednomkreirane komponente mnogo puta koriste.Komponenta je jedinica funkcionalnosti sa “ugovorenim”interfejsom.Interfejs definise nacin na koji se komunicira sa komponentom,i on je u potpunosti odvojen od implementacije.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Komponentna paradigma
Komponente se medusobno povezuju da bi se kreiraokompleksan softverNacin povezivanja komponenti treba da bude jednostavan, pomogucnosti prevlacenjem i spustanjem na zeljenu lokaciju.Kreiranje programa se vrsi biranjem komponenti ipostavljanjem na pravo mesto, a ne pisanjem “linije za linijom”.U okviru komponentnog programiranja, vazno je razvojnookruzenje koje se koristi, dok sama implementacija komponentii kod koji se komponentnim programiranjem generise moze dabude u razlicitim programskim jezicima, npr JAVA, C++, C#...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Konkurentna paradigma
Konkurentnu paradigmu karakterise vise procesa koji seizvrsavaju u istom vremenskom periodu, a koji imaju isti ciljPostoje razlicite forme konkurentnosti:
Konkurentnost u uzem smislu — jedan procesor, jednamemorijaParalelno programiranje — vise procesora, jedna memorijaDistribuirano programiranje — vise procesora, vise memorija
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Konkurentna paradigma
Konkurentnost u uzem smislu karakterise preklapajuceizvrsavanje vise procesa koji koriste isti procesor i kojikomuniciraju preko zajednicke memorije.Ovi procesi modeliraju procese spoljasnjeg sveta koji mogu dase dese konkurentno, na primer kod operativnih sistema
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Konkurentna paradigma
Ukoliko postoji vise procesora sa pristupom jedinstvenojmemoriji, onda je u pitanju paralelno programiranjeProcesi medusobno komuniciraju preko zajednicke memorijeCilj paralelnog izracunavanja je ubrzanje toka izracunavanja
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Konkurentna paradigma
Ukoliko postoji vise procesora od kojih svaki ima svojumemoriju, onda je u pitanju distribuirano programiranjeProcesi medusobno salju poruke da bi razmenili informacije.Distribuirano izracunavanje cine grupe umrezenih racunarakoje imaju isti cilj za posao koji izvrsavaju.Moze se shvatiti kao vrsta paralelnog izracunavanja ali sadrugacijom medusobnom komunikacijom koja namece noveizazove.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Konkurentna paradigma
Pisanje konkurentnih (konkurentnih u uzem smislu, paralelnih,distribuiranih) programa je znacajno teze od pisanjasekvencijalnih programa.Konkurentno programiranje namece nove probleme, po pitanjusinhronizacije procesa i pristupa zajednickim podacima.Za osnovne koncepte konkurentnog programiranja potrebno jeobezbediti odgovarajucu podrsku u programskom jeziku.Ada, Modula, ML, Java ...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Paradigma programiranja ogranicenja
U okviru paradigme programiranja ogranicenja zadaju serelacije izmedu promenljivih u formi nekakvih ogranicenjaOgranicenja mogu biti raznih vrsta (logicka, linearna...)Ova ogranicenja ne zadaju sekvencu koraka koji treba da seizvrse vec osobine resenja koje treba da se pronadeDeklarativna paradigmaJezici za programiranje ogranicenja cesto su nadogradnjajezika logicke paradigme, na primer PROLOGaPostoje biblioteke za podrsku ovoj vrsti programiranja u okviruimperativnih programskih jezika, npr za jezike C, JAVA, C++,PythonBProlog, OZ, Claire, Curry
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Skript jezici
Skript jezik je programski jezik koji sluzi za pisanje skriptova.Skript je spisak (lista) komandi koje mogu biti izvrsene uzadatom okruzenju bez interakcije sa korisnikom.U prvobitnom obliku pojavljuju se kao komandni jezicioperativnih sistema (npr Bash)Skript jezici imaju veliku primenu na Internetu.Skript jezici mogu imati specifican domen primene, ali mogubiti i jezici opste namene (npr Python)
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Skript jezici
Skript jezici se ne kompiliraju vec interpreterajuCesto se koriste za povezivanje komponenti unutar nekeaplikacijeOmogucavaju kratak kodNajcesce nisu strogo tipiziraniKod i podaci cesto mogu zameniti uloge
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Skript jezici
Nije uvek lako napraviti razliku izmedu skript-jezika i drugihprogramskih jezikaSkript paradigma je cesto specificna kombinacija drugihparadigmi, kao sto su: objektno-orijentisana, proceduralna,funkcionalna (pa je to razlog sto se skript paradigma neprepoznaje uvek kao posebna paradigma).Skript jezici su u ekspanzijiUnix Shell (sh), JavaScript, PHP, Perl, Python, XSLT,VBScript, Lua, Ruby...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Paradigma upitnih jezika
Upitni jezici mogu biti vezani za baze podataka ili zapronalazenje informacija (information retrieval)Deklarativna paradigma
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Upitni jezici baza podataka
Upitni jezici baza podataka — oni na osnovu strukturiranihcinjenica zadatih u okviru strukturiranih baza podataka dajukonkretne odgovore koji zadovoljavanju nekakve trazeneuslove.Najpoznatiji predstavnik upitnih jezika za relacione bazepodataka je SQL.XQuery je jezik za pretrazivanje XML strukturiranih podataka
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Upitni jezici baza podataka
Digresija: Jezici za obelezavanje teksta i programskeparadigme
Poslednjih decenija veliki procvat dozivljavaju jezici zaobelezavanje teksta, kao sto su: SGML, HTML, XMLJezici za obelezavanje teksta nisu programski jezici pa samimtim i ne mogu da generisu neku programsku paradigmu.Medutim, paralelno sa razvojem jezika za obelezavanje(posebno XML), razvijeni su specijalizovani programski jeziciza razne obrade koje se odnose na jezike za obelezavanje.U takve jezike spadaju: XSLT, XQuery, XLS, ... Ovi jezici semogu pridruziti raznim paradigmama.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Upitni jezici za pronalazenje informacija
Upitni jezici za pronalazenje informacija su upitni jezici kojipronalaze dokumenta koji sadrze informacije relevantne zaoblast istrazivanja.CQL jezik za iskazivanje upita za pronalazenje informacija.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Reaktivna paradigma
Rekativno programiranje je usmereno na tok podatka u smisluprenosenja izmena prilikom promene podatakaNa primer, u proceduralnom programskom jeziku, a = b + c jekomanda koja se izvrsava dodelom vrednosti promenljivoj a naosnovu trenutnih vrednosti promenljivih b i c i kasnija promenavrednosti b ili c ne utice na promenu vrednosti promenljive aKod reaktivnog programiranja, a = b + c ima znacenje dasvaka promena vrednosti b i c utice na izmenu vrednostipromenljive a
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Reaktivna paradigma
Programiranje u okviru tabela, npr VisiCalc, Excel, LibreOfficeCalcJezici za opis hardvera pripadaju ovoj paradigmi, jer se izmenajednog kola u dizajnu propagira na celo kolo — Verilog, VHDL...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Vizuelna paradigma
Vrsi modelovanje spoljasnjeg sveta (usko povezana saobjektno-orijentisanom paradigmom).Koriste se graficki elementi (dijagrami) za opis akcija, svojstvai povezanosti sa raznim resursimaVizuelni jezici su dominantni u fazi dizajniranja programaPostoje razne vrste dijagrama: dijagram klasa, dijagramkoriscenja, dijagram stanja, dijagram aktivnosti, dijagraminterakcija...
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Vizuelna paradigma
Postoje softverski alati za prevodenje “vizuelnog opisa” u nekiprogramski jezik (samim tim i masinski jezik).Pogodnija za pravljenje “skica” programa, a ne za detaljan opisGlavni predstavnik ove paradigme je UML.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Komponentna paradigmaKonkurentna paradigmaParadigma programiranja ogranicenjaSkript paradigmaParadigma upitnih jezikaReaktivna paradigmaVizuelna paradigmaPitanja
Pitanja
Koje su osnovne karakteristike komponentne paradigme?Nabroj tri jezika koji pripadaju (podrzavaju) komponentnuparadigmu.Koje su osnovne karakteristike ... paradigme?Nabroj tri jezika koji pripadaju ... paradigmi.
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Pregled
1 Uvod
2 Razvoj jezika i paradigmi
3 Osnovne paradigme
4 Dodatne paradigme
5 Literatura
Milena Vujosevic Janicic Dizajn programskih jezika
UvodRazvoj jezika i paradigmi
Osnovne paradigmeDodatne paradigme
Literatura
Literatura
Peter Van Roy, Seif Haridi — Concepts, Techniques, andModels of Computer Programming, MIT Press, 2003.Deo materijala je preuzet od prof Dusana Tosica, iz istoimenogkursa
Milena Vujosevic Janicic Dizajn programskih jezika