67
Programske paradigme Osnovna svojstva programskih jezika Milena Vujoˇ sevi´ c Janiˇ ci´ c www.matf.bg.ac.rs/~milena Matematiˇ cki fakultet, Univerzitet u Beogradu

Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

Programske paradigme— Osnovna svojstva programskih jezika —

Milena Vujosevic Janicic

www.matf.bg.ac.rs/~milena

Matematicki fakultet, Univerzitet u Beogradu

Page 2: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 3: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 4: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Svojstva programskih jezika

Sta je ono sto cini dva programska jezika slicnim?Na osnovu cega neki jezik pripada nekoj paradigmi?Sta je ono sto cini dva programska jezika razlicitim?Na osnovu cega neki jezik ne pripada nekoj paradigmi?Sta je zajednicko za sve programske jezike?Sta je ono sto je specificno za svaki programski jezik?Sta je ono sto je specificno za neki programski jezik?

Milena Vujosevic Janicic Programske paradigme

Page 5: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Svojstva programskih jezika

Postoje razlicita svojstva programskih jezika koja cemoizucavati:

SintaksaSemantikaImena, doseg, povezanostKontrola toka, podrutineTipoviKompajlirani/Interpretirani jeziciIzvrsavanje

Milena Vujosevic Janicic Programske paradigme

Page 6: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Pregled

1 Uvod

2 Leksika, sintaksa, semantikaLeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 7: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Leksika

Programski jezici moraju da budu precizniLeksika je podoblast sintakse koja se bavi opisivanjemosnovnih gradivnih elemenata jezika.U okviru leksike, definisu se reci i njihove kategorijeU programskom jeziku, reci se nazivaju lekseme, a kategorijetokeni.U prirodnom jeziku, kategorije su imenice, glagoli, prideviU programskom jeziku, tokeni mogu da budu identifikatori,kljucne reci, operatori...

Milena Vujosevic Janicic Programske paradigme

Page 8: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Leksika

a = 2 * b + 1 — lekseme su a, =, 2, *, +, 1 i b, a njimaodgovarajuci tokeni su identifikator (a i b), operator =,operator *, operator +, celobrojni literali 2 i 1.Neki tokeni sadrze samo jednu rec, a neki mogu sadrzati punorazlicitih reciProgramski jezik C sadrzi vise od 100 razlicitih tokena: 44razlicite kljucne reci, identifikatore, celobrojne vrednosti, realnevrednsoti, karakterske konstante, stringovske literale, dve vrstekomentara, 54 operatora...Drugi moderni progmraski jezici (npr Ada, Java) imaj slicannivo kompleksnosti tokena

Milena Vujosevic Janicic Programske paradigme

Page 9: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Leksika

Razlikujemo kljucne reci i identifikatore: identifikator ne mozebiti neka od kljucnih reci, npr ne mozemo da napravimopromenljivu koja bi se zvala if ili whilePostoje kljucne reci koje zavise od konteksta, engl. contextualkeywords koje su kljucne reci na odredenim specificnimmestima porgrama, ali mogu biti identifikatori na drugimmestima.Na primer, u C# -u rec yield moze da se pojavi ispred break ilireturn, na mestima na kojima identifikator ne moze da sepojavi. Na tim mestima, ona se interpretira kao kljucna rec, alimoze da se koristi na drugim mestima i kao identifikator.

Milena Vujosevic Janicic Programske paradigme

Page 10: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Leksika

C# 4.0 ima 26 takvih konteksno zavisnih kljucnih reci, C++11ih takode ima dosta.Vecina je uvedena revizijom postojeceg jezika sa ciljem da sedefinise novi standard: sa velikim brojem korisnika i napisanogkoda, vrlo je verovatno da se neka rec vec koristi kaoidentifikator u nekom postojecem programu. Uvodenjemkontekstualne kljucne reci, umesto obicne kljucne reci,smanjuje se rizik da se postojeci program nece kompilirati sanovom verzijom standarda.

Milena Vujosevic Janicic Programske paradigme

Page 11: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Leksika

Reci su obicno definisu regularnim izrazimaNa primer, [a-zA-Z_][a-zA-Z_0-9]*Regularnim izrazima se definisu reci, dok se konacnimautomatima prepoznaju ispravne reci.Generisanje je bitno programerima, a prepoznavanjekompajlerimaLeksikom programa obicno se bavi deo prevodioca koji senaziva leksicki analizator: on dodeljuje ulaznim recimaodgovarajuce kategorije, sto je bitno za dalji proces prevodenja.

Milena Vujosevic Janicic Programske paradigme

Page 12: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Sintaksa

Sintaksa programskog jezika definise strukturu izraza, odnosnonacine kombinovanja osnovnih elemenata jezika u ispravnejezicke konstrukcije.Formalno, sintakse se opisuju kontekstno slobodnimgramatikama, a prepoznaju parserima (potisni automat)

Milena Vujosevic Janicic Programske paradigme

Page 13: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Sintaksa

Na primer, sledeca jednostavna gramatika definise jednostavnearitmeticke izraze<exp> ::= <exp> "+" <exp><exp> ::= <exp> "*" <exp><exp> ::= "(" <exp> ")"<exp> ::= "a"<exp> ::= "b"<exp> ::= "c"

Program u ovom jeziku je proizvod ili suma od ’a’, ’b’ i ’c’, naprimer ispravan izraz je a*(b+c)

Milena Vujosevic Janicic Programske paradigme

Page 14: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Semantika

Semantika pridruzuje znacanje ispravnim konstrukcijama nanekom programskom jeziku.Semantika programskog jezika odreduje znacenje jezika.Obicno je znacajno teze definisati nego sintaksu.

Milena Vujosevic Janicic Programske paradigme

Page 15: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Semantika

Semantika moze da se opise formalno i neformalno, cesto sezadaje samo neformalno.Uloga neformalne semantike je da programer moze da razumekako se program izvrsava pre njegovog pokretanja.Na primer, semnatika nardbe if(a<b) a++; neformalno seopisuje sa „ukoliko je vrednost promenljive a manja odvrednosti promenljive b, onda uvecaj vrendnost promenljive aza jedan”

Milena Vujosevic Janicic Programske paradigme

Page 16: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Uloga formalne semantike

Formalna semantika omogucava formalno rezonovanje osvojstvima programaNa primer, formalna semantika nekog jezika, zajedno samodelom programa (tranzicionim sistemom) omogucavaispitivanje razlicitih uslova ispravnosti/korektnosti togprogramaRazlicitim programskim jezicima prirodno odgovaraju razlicitesemantike

Milena Vujosevic Janicic Programske paradigme

Page 17: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Semantika

Formalan opis znacenja jezickih konstrukcijaOperaciona semantikaDenotaciona semantikaAksiomska semantika

Milena Vujosevic Janicic Programske paradigme

Page 18: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Operaciona semantika

Operaciona semantika opisuje kako se izracunavanje izvrsava.Ponasanje se formalno definise koriscenjem apstraktnihmasina, formalnih automata, tranzicionih sistema...U okviru ove semantike postoje strukturna operacionasemantika (small-step semantics, opisuje individualne korakeizracunavanja) i prirodna operaciona semantika (big-stepsemantics, opisuje ukupne rezultate izracunavanja).Najcesce se koristi za opis i rezonovanje o imperativnimjezicima jer individualni koraci izracunavanja opisuju na kojinacin se menja stanje programa.

Milena Vujosevic Janicic Programske paradigme

Page 19: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Primer operacione semantike: prirodna semantika

〈 S, s 〉 → s’

Intuitivno ovo znaci da izvrsavanje programa S sa ulaznim stanjems ce se zavrsiti i rezultujuce stanje ce biti s’.Pravilo generalno ima formu

〈S1,s1〉→s′1,...,〈Sn,sn〉→s′n〈S ,s〉→s′

gde S1, ..., Sn nazivamo neposrednim konstituentima(eng. immediate constituents) od S. Pravilo se sastoji iz odredenogbroja premisa (nalaze se iznad linije) i jednog zakljucka (nalazi seispod linije).Pravilo takode moze imati odredeni broj uslova (nalaze se sa desnestrane linije) koji moraju biti ispunjeni kako bi se primenilo pravilo.Pravilo sa praznim skupom premisa se naziva aksioma.

Milena Vujosevic Janicic Programske paradigme

Page 20: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Primer prirodne semantike

B — semantika bulovskog izraza, A — semantika aritmetickogizraza

[assns ] 〈x := a, s〉 → s[x 7→ A[[a]]s]

[skipns ] 〈skip, s〉 → s

[compns ]〈S1,s〉→s′,〈S2,s′〉→s′′

〈S1;S2,s〉→s′′

[if ttns ]〈S1,s〉→s′

〈if b then S1 else S2, s〉→s′ if B[[b]]s = tt

[if ffns ]〈S2,s〉→s′

〈if b then S1 else S2, s〉→ s′ if B[[b]]s = ff

[whilettns ]〈S ,s〉→s′,〈 while b do S , s′〉→ s′′

〈 while b do S , s〉→ s′′ if B[[b]]s = tt

[whileffns ] 〈 while b do S , s〉 → s if B[[b]]s = ff

Milena Vujosevic Janicic Programske paradigme

Page 21: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Primer

(z := x, x := y); y := zNeka s0 bude stanje koje mapira sve promenljive osim x i y u 0 iima x = 5 i y = 7. Tada dobijamo sledece stablo izvodenja:

〈z:=x,s0〉→s1 〈x :=y ,s1〉→s2〈z:=x,x :=y ,s0〉→s2 〈y :=z,s2〉→s3〈(z :=x ;x :=y);y :=z ,s0〉→s3

Milena Vujosevic Janicic Programske paradigme

Page 22: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Osobine semantike

Kada imamo definisanu semantiku, to nam omogucava darezonujemo o osobinama te semantike.Primer: Moze da nas interesuje da li su dve naredbesemanticki ekvivalentne, donosno da li vazi da za svaka dvastanja s i s’ vazi sledece

〈S1, s〉 → s ′ akko 〈S2, s〉 → s ′

Mozemo da formulisemo sledecu lemuNaredbawhile b do Sje semanticki ekvivalentna saif b then (S; while b do S) else skip

Milena Vujosevic Janicic Programske paradigme

Page 23: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Skica dokaza

Potrebno je dokazati dva smera, tj

〈while b do S , s〉 → s ′′

ako i samo ako

〈if b then (S ; while b do S) else skip, s〉 → s ′′

Dokaz se izvodi konstruisanjem stabla izvodenja na osnovupravila izvodenja koja su data semantikom. Na primer, akopretpostavimo da vazi

〈while b do S , s〉 → s ′′

onda postoji stablo izvodenja kojima se dolazi do stanja s”.Ukoliko pogledamo pravila izvodenja, do takvog stablamozemo da dodemo samo primenim pravila [whilettns ] ili pravila[whileffns ]. Potrebno je razmotriti jedan i drugi slucaj.

Milena Vujosevic Janicic Programske paradigme

Page 24: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Skica dokaza

(prvi slucaj): ukoliko se primeni pravilo [whilettns ] to se ondastablo izvodenja svodi na primenu ovog pravila:

〈S , s〉 → s ′, 〈 while b do S , s ′〉 → s ′′

〈 while b do S , s〉 → s ′′

pri cemu vazi B[[b]]s = tt odnosno stablo izvodenja izgledaovako

T1 T2

〈 while b do S , s〉 → s ′′

pri cemu je T1 nekakvo izvodenje za 〈S , s〉 → s ′ a T2 nekakvoizvodenje za 〈 while b do S , s ′〉 → s ′′

Milena Vujosevic Janicic Programske paradigme

Page 25: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Skica dokaza

Koristeci T1 i T2, mozemo da primenimo i pravilo kompozicije[compns ] i da izvedemo sledeci zakljucak

T1 T2

〈S ; while b do S , s〉 → s ′′

Posto znamo da je B[[b]]s = tt, mozemo da primenimo [if ttns ]i da nam stablo izvodenja sada izgleda ovako, cime smopokazali da zeljeno svojstvo vazi:

T1 T2〈S ; while b do S , s〉→ s′′

〈if b then (S ; while b do S) else skip, s〉 → s ′′

Dalje je potrebno razmotriti [whileffns ]

Milena Vujosevic Janicic Programske paradigme

Page 26: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Strukturna operaciona semantika

Tranzicionu relaciju zapisujemo ovako

〈 S, s 〉 =⇒ γ

ovo treba razmatrati kao prvi korak izvrsavanja programa S ustanju s koji vodi do stanja γ.Mozemo razlikovati dva slucaja za γ:

1 γ = 〈 S’, s’ 〉: izvrsavanje programa S sa ulaznim stanjem snije zavrseno, i ostatak izracunavanja ce biti izrazeno srednjomkonfiguracijom 〈 S’, s’ 〉.

2 γ = s’ : izvrsavanje programa S sa ulaznim stanjem s sezavrsilo sa zavrsnim stanjem s’.

Milena Vujosevic Janicic Programske paradigme

Page 27: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Strukturna operaciona semantika

SOS omogucava pracenje „sitnijih detalja” izracunavanjaMilena Vujosevic Janicic Programske paradigme

Page 28: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Denotaciona semantika definise znacenje prevodenjem u drugijezik, za koji se pretpostavlja da je poznata semantikaNajcesce je taj drugi jezik nekakav matematicki formalizamPovezivanje svakog dela programskog jezika sa nekimmatematickim objektom kao sto je broj ili funkcija: svakasintaksna definicija se tretira kao objekat na koji se mozeprimeniti funkcija koja taj objekat preslikava u matematickiobjekat koji definise znacenje.Dodeljivanjem znacenja delovima programa dodeljuje seznacenje celokupnom programu, tj semantika jedne programskeceline definisana je preko semantike njenih poddelova. Ovaosobina denotacione semantike naziva se kompozitivnost.

Milena Vujosevic Janicic Programske paradigme

Page 29: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Sintaksni domeni i pravila:

B : Broj B je nenegativan brojC : Cifra C je cifra 0,1...,9I : IzrazBroj ::== Cifra|BrojCifraCifra ::== 0|1|2|3|4|5|6|7|8|9Izraz ::== Broj |Izraz + Izraz

Milena Vujosevic Janicic Programske paradigme

Page 30: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Sledeci korak jeste definisanje matematickih objekata koji cepredstavljati semanticke vrednosti. Ti matematicki objekti nazivajuse semanticki domeni. Njihova kompleksnost zavisi od toga kolikoje kompleksan programski jezik kojem dajemo znacenje, u ovomjednostavnom primeru, semanticka vrednost moze biti i samoprirodan broj.

Semanticki domeniN = 0, 1, 2, 3, .... skup prirodnih brojeva

Milena Vujosevic Janicic Programske paradigme

Page 31: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Funkcije znacenja daju znacenje uvedenim sintaksnim definicijama.

Funkcije znacenjapovezibn : B → N unarna funkcija - povezuje broj sa Npovezicn : C → N unarna funkcija - povezuje cifru sa Nsemantika : I → N unarna funkcija - povezuje izraz sa Nplus : N × N → N binarna funkcija plus - isto sto i +pom : N × N → N binarna funkcija pom - isto sto i *povezicn[[0]] = 0, ..., povezicn[[9]] = 9povezibn[[C ]] = povezicn[[C ]]povezibn[[BC ]] = plus(pom(10, povezibn[[B]]), povezibn[[C ]])semantika[[B]] = povezibn[[B]]semantika[[I1+ I2]] = plus(semantika[[I1]], semantika[[I2]])

Zagrade [[, ]] imaju ulogu da razdvoje semanticki deo od sintaksnog dela. Uokviru zagrada nalazi se sintaksni deo definicija.

Milena Vujosevic Janicic Programske paradigme

Page 32: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Pronaci znacenje izraza 2+32+61.semantika[[2+32+61]]= plus(semantika[[2+32]],semantika[[61]])= plus(plus(semantika[[2]],semantika[[32]]),povezibn[[61]])= plus(plus(2,32),61) = plus(2+32,61) = plus(34+61) = 34+61 = 95jer je:semantika[[2]] = povezibn[[2]] = povezicn[[2]] = 2semantika[[32]] = povezibn[[32]] = plus(pom(10,povezibn[[3]]),povezibn[[2]])=plus(pom(10,povezicn[[3]]),povezicn[[2]]) = plus(pom(10,3),2)= plus(10*3,2) = plus(30,2) = 30+2 = 32semantika[[61]] = povezibn[[61]] = plus(pom(10,povezibn[[6]]),povezibn[[1]])= plus(pom(10,povezicn[[6]]),povezicn[[1]]) = plus(pom(10,6),1) =plus(10*6,1) = plus(60,1) = 60+1 = 61

Milena Vujosevic Janicic Programske paradigme

Page 33: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Denotaciona semantika

Denotaciona semantika apstrahuje izvrsavanje programa.Koristi se za definisanje semantike funkcionalnih programskihjezika — funkcionalno programiranje zasniva se na pojmumatematickih funkcija i izvrsavanje programa svodi se naevaluaciju funkcija.Analiziranje programa se svodi na analiziranje matematickihobjekata, sto olaksava formalno dokazivanje semantickihsvojstava programa.

Milena Vujosevic Janicic Programske paradigme

Page 34: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Aksiomatska semantika

Aksiomska semantika zasniva se na matematickoj logici, naprimer na Horovoj logiciHorova trojka {P} C {Q}; opisuje kako izvrsavanje dela kodamenja stanje izracunavanja: ako je ispunjen preduslov {P},izvrsavanje komande C vodi do postuslova {Q}

Horova logika obezbeduje aksiome i pravila izvodenja za svekonstrukte jednostavnog imperativnog programskog jezika

Milena Vujosevic Janicic Programske paradigme

Page 35: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Aksiomatska semantika — primer

[assp] {P[x → [[A]]} x := a {P}

[skipp] {P} skip {P}

[compp]{P} S1 {Q}, {Q} S2 {R}

{P} S1; S2{R}

[ifp]{B[[b]] ∧ P} S1 {Q}, {¬B[[b]] ∧ P} S1 {Q}

{P} if b then S1 else S2 {Q}

[whilep]{B[[b]] ∧ P} S {P}

{P} while b do S {¬B[[b]] ∧ P}

[conspp]{P′} S {Q′}{P} S {Q} if P ⇒ P

′and Q ⇒ Q

Milena Vujosevic Janicic Programske paradigme

Page 36: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Semantika

Kompajler prevodi kod na masinski kod u skladu sa zadatomsemantikom jezika.Tokom kompilacije, vrsi se proveravanje da li postoji nekasemanticka greska, tj situacija koja je sintaksno ispravna ali zakonkretne vrednosti nema pridruzeno znacenje zadatomsemantikom.Neki aspekti semanticke korektnosti programa se moguproveriti tokom prevodenja programa — na primer, da su svepromenljive koje se koriste u izrazima definisane i da suodgovarajuceg tipa),Neki aspekti semanticke korektnosti se mogu proveriti tek ufazi izvrsavanja programa — na primer, deljenje nulom, pristupelementima niza van granica...

Milena Vujosevic Janicic Programske paradigme

Page 37: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

LeksikaSintaksaNeformalna semantikaOperaciona semantikaDenotaciona semantikaAksiomatska semantika

Semantika

Semanticke provere se mogu podeliti na staticke (provereprilikom kompilacije) i dinamicke (provere prilikom izvrsavanjaprograma).Staticki se ne moze pouzdano utvrditi ispunjenost semantickihuslova, tako da je moguce da se neke greske ne utvrde, iakoprisutne, kao i da se neke greske pogresno utvrde iako nisuprisutne i da rezultiraju nepotrebnim proverama prilikomizvrsavanja programa.Razlicitim programskim jezicima odgovaraju izvrsni programikoji sadrze razlicite nivoe dinamickih provera ispravnosti.

Milena Vujosevic Janicic Programske paradigme

Page 38: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, dosegImenaPromenljiveDosegZivotni vekPovezivanje

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 39: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Imena

Ime — string koji se koristi za predstavljanje necega(promenljive, konstante, operatora, tipova...)Prvi programski jezici imali su imena duzine jednog karaktera(po uzoru na matematicke promenljive). Fortran I je topromenio dozvoljavajuci sest karaktera u imenu.Fortran 95 i kasnije verzije Fortrana dozvoljavaju 31 karakter uimenu, C99 nema ogranicenja za interna imena, ali samo prvih63 je znacajno. Eksterna imena u C99 (ona koja su definisanavan modula i o kojima mora da brine linker) imaju ogranicenjeod 31 karaktera. Imena u Javi, C# i Adi nemaju ogranicenjaduzine i svi karakteri su znacajni. C++ ne zadaje limit duzineimena, ali implementacije obicno zadaju.

Milena Vujosevic Janicic Programske paradigme

Page 40: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Imena

Imena u vecini programskih jezika imaju istu formu - slova,cifre i podvlakaPodvlaka se sve cesce zamenjuje kamiljom notacijomU nekim jezicima imena moraju da pocnu specijalnim znacima(npr PHP ime mora da pocne sa $)Imena su najcesce case sensitive, sto moze da stvara probleme

Milena Vujosevic Janicic Programske paradigme

Page 41: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Imena

Specijalne reci se korsite da ucine program citljivijim - imenujuakcije koje treba da se sprovedu ili sintaksno odvajaju delovenaredbi i programa. U vecini jezika specijalne reci surezervisane reci koje ne mogu da budu predefinisane od straneprogramera.Kljucne reci su najcesce rezervisane reci, ali ne moraju to dabudu, kao na primer kontestno zavisne kljucne reciNije dobro ako jezik ima preveliki broj rezervisanih reciNa primer, COBOL ima oko 300 rezervisanih reci, u kojespadaju i count, length, bottom, destination...

Milena Vujosevic Janicic Programske paradigme

Page 42: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Promenljive

Promenljiva: apstrakcija memorijskih jedinica (celija), imepromenljive je imenovanje memorijske lokacijeKarakteristke promenljivih: ime, adresa, vrednost, tip, zivotnivek, dosegImena promenljivih su najcesca imena u programu, ali nemajusve promenljive imena (tj nemaju sve meorijske lokacije imena,na primer, memorijske lokacije eksplicitno definisane na hipukojima se pristupa preko pokazivaca)

Milena Vujosevic Janicic Programske paradigme

Page 43: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Adresa

Adresa promenljive: adresa fizicke memorije koja je pridruzenapromenljivoj za skladistenje podataka.Promenljiva moze imati razlicite fizicke lokacije prilikom istogizvrsavanja programa (npr razliciti pozivi iste funkcije rezultujurazlicitim adresama na steku). Adresa se cesto nazival-vrednostMoguce je da postoje vise promenljivih koje imaju istu adresu -aliasiAliasi pogorsavaju citljivost programa i cine verifikacijuprograma tezom.Aliasi: unije u C/C++-u, dva pointera koji pokazuju na istumemorijsku lokaciju, dve reference, pointer i promenljiva...Aliasi se u mnogim jezicim akreiraju kroz parametre pozivapotprograma

Milena Vujosevic Janicic Programske paradigme

Page 44: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Tip

Tip promenljive odreduje opseg vrednosti koje promenljivamoze da ima kao i operacije koje se mogu izvrsiti za vrednostitog tipaOsnovni tipovi, niske, korisnicki definisani prebrojivi tipovi(enum, subrange), nizovi, asocijativni nizovi, strukture, torke,liste, unije, pokazivaci i reference

Milena Vujosevic Janicic Programske paradigme

Page 45: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Vrednost

Vrednost promenljive je sadrzaj odgovarajuce memorijskecelije, cesto se naziva r-vrednostDa bi se pristupilo r-vrednosti mora najpre da se odredil-vrednost, sto ne mora da bude jednostavno, jer zavisi odpravila dosega.

Milena Vujosevic Janicic Programske paradigme

Page 46: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Doseg

Doseg odreduje deo programa u kojem je vidljivo neko imePravila dosega mogu da budu veoma jednsotavna (kao u skriptjezicima) ili veoma kompleksnaDoseg ne odreduje nuzno zivotni vek objekta

Milena Vujosevic Janicic Programske paradigme

Page 47: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Zivotni vek

Zivotni vek obicno odgovara jednom od tri osnovnamehanizma skladistenja podatakaStaticki objekti — koji imaju zivotni vek koji se prostire tokomcelog rada programa (npr globalne promenljive)Objekti na steku — zivoni vek koji se alocira i dealocira LIFOprincipom, obicno zajedno sa pozivom i zavrsetkom radapodprograma.Objekti na hipu — koji se aociraju i dealociraju proizvoljno odstrane programera, implicitno ili eksplicitno, i koji zahtevajuopstiji i skuplji sistem za upravljanje skladistenjem(memorijom)

Milena Vujosevic Janicic Programske paradigme

Page 48: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Povezivanje

Povezivanje uspostavlja odnos izmedu imena sa onim sto toime predstavlja.Vreme povezivanja je vreme kada se ova veza uspostavljaRano vreme povezivanja — veca efikasnost, kasno vremepovezivanja — veca fleksibilnost.

Milena Vujosevic Janicic Programske paradigme

Page 49: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

ImenaPromenljiveDosegZivotni vekPovezivanje

Povezivanje

Vreme povezivanja moze biti (vreme - primer)vreme dizajna programskog jezika (osnovni konstrukti,primitivni tipovi podataka...)vreme implementacije (velicina osnovnih tipova podataka...)vreme programiranja (algoritmi, strukture, imena promenljivih)vreme kompiliranja (preslikavanje konstrukata viseg nivoa umasinski kod)vreme povezivanja (kada se ime iz jednog modula odnosi naobjekat definisan u drugom modulu)vreme ucitavanja (kod starijih operativnih sistema, povezivanjeobjekata sa fizickim adresama u memoriji)vreme izvrsavanja (povezivanje promenljivih i njihovihvrednosti)

Milena Vujosevic Janicic Programske paradigme

Page 50: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipoviKontrola tokaTipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literaturaMilena Vujosevic Janicic Programske paradigme

Page 51: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Kontrola toka

Kontrola toka definise redosled izracunavanja koje racunarsprovodi da bi se ostvario neki cilj.Postoje razliciti mehanizmi odredivanja kontrole toka:

1 Sekvenca — odreden redosled izvrsavanja2 Selekcija — u zavisnosti od uslova, pravi se izbor (if, switch)3 Iteracija — fragment koda se izvrsava vise puta4 Podrutine su apstrakcija kontrole toka: one dozvoljavaju da

programer sakrije proizvoljno komplikovan kod izajednostavnog interfejsa (procedure, funkcije, rutine, metodi,potprogrami)

Milena Vujosevic Janicic Programske paradigme

Page 52: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Kontrola toka

Postoje razliciti mehanizmi odredivanja kontrole toka:5 Rekurzija — definisanje izraza u terminima samog izraza

(direktno ili indirektno)6 Konkurentnost — dva ili vise fragmenta programa mogu da se

izvrsavaju u istom vremenskom intervalu, bilo paralelno narazlicitim procesorima, bilo isprepletano na istom procesoru

7 Podrska za rad sa izuzecima —fragment koda se izvrsavaocekujuci da su neki uslovi ispunjeni, ukoliko se desi suportno,izvrsavanje se nastavlja u okviru drugog fragmenta za obraduizuzetka

8 Nedeterminizam — redosled izvrsavanja se namerno ostavljanedefinisan, sto povlaci da izvrsavanje proizvoljnim redosledomdovodi do korektnog rezultata

Milena Vujosevic Janicic Programske paradigme

Page 53: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Tipovi

Programski jezici moraju da organizuju podatke na neki nacinTipovi pomazu u dizajniranju programa, proveri ispravnostiprograma i u utvrdivanju potrebne memorije za skladistenjepodatakaMehanizmi potrebni za upravljanjem podacima nazivaju sesistem tipova

Milena Vujosevic Janicic Programske paradigme

Page 54: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Tipovi

Sistem tipova obicno ukljucujeskup predefinisanih osnovnih tipova (npr int, string...)mehanizam gradenja novih tipova (npr struct, union)mehanizam kontrolisanja tipova

pravila za utvrdivanje ekvivalentnosti: kada su dva tipa ista?pravila za utvrdivanje kompatibilnosti: kada se jedan tip mozezameniti drugim?pravila izvodenja: kako se dodeljuje tip kompleksnim izrazima?

pravila za proveru tipova (staticka i dinamicka provera)

Milena Vujosevic Janicic Programske paradigme

Page 55: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Tipovi

Jezik je tipiziran ako precizira za svaku operaciju nad kojimtipovima podataka moze da se izvrsiJezici kao sto je asembler i masinski jezici nisu tipizirani jer sesvaka operacija izvrsava nad bitovima fiksne sirinePostoji slabo i jako tipiziranje

Kod jako tipiziranih jezika izvodenje operacije nad podacimapogresnog tipa ce izazvati greskuSlabo tipizirani jezici izvrsavaju implicitne konverzije ukolikonema poklapanja tipovaNeki jezici dozvoljavaju eksplicitno kastovanje tipova

Milena Vujosevic Janicic Programske paradigme

Page 56: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kontrola tokaTipovi

Tipovi

Vazan je trenutak kada se radi provera tipovaZa vreme prevodenja programa — staticko tipiziranjeZa vreme izvrsavanja programa — dinamicko tipiziranje

Staticko tipiziranje je manje sklono greskama ali moze da budeprevise restriktivno, dok je dinamicko tipiziranje sklonijegreskama i tesko za debagovanje ali fleksibilnije.

Milena Vujosevic Janicic Programske paradigme

Page 57: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanjeKompilacija vs InterpretiranjeIzvrsavanje

6 Pitanja i literaturaMilena Vujosevic Janicic Programske paradigme

Page 58: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Kompilacija vs Interpretiranje

Kompilirani jezici se prevode u masinski kod koji se izvrsavadirektno na procesoru racunara - faze prevodenja i izvrsavanjaprograma su razdvojene.U toku prevodenja, vrse se razne optimizacije izvrsnog kodasto ga cini efikasnijim.Jednom preveden kod se moze puno puta izvrsavati, ali svakaizmena izvornog koda zahteva novo prevodenje.

Milena Vujosevic Janicic Programske paradigme

Page 59: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Kompilacija vs Interpretiranje

Interpretirani jezici se prevode naredbu po naredbu ineposredno zatim se naredba izvrsava — faze prevodenja iizvrsavanja nisu razdvojene vec su medusobno isprepletene.Rezultat prevodenja se ne smesta u izvrsnu datoteku, vec je zasvako naredno pokretanje potrebna ponovna analiza iprevodenje.Sporiji, ali prilikom malih izmena koda nije potrebno vrsitianalizu celokupnog koda.Hibridni jezici — kombinacija prethodna dva.

Milena Vujosevic Janicic Programske paradigme

Page 60: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Kompilacija vs Interpretiranje

Teorijski, svi programski jezici mogu da budu i kompilirani iinterpretirani.Moderni programski jezici najcesce pruzaju obe mogucnosti, aliu praksi je za neke jezike prirodnije koristiti odgovarajucipristup.Nekada se u fazi razvoja i testiranja koristi interpretiranipristup, a potom se generise izvrsni kod kompilacijom.Prema tome, razlika se zasniva pre na prakticnoj upotrebi negona samim karakteristikama jezika.

Milena Vujosevic Janicic Programske paradigme

Page 61: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Izvrsavanje

Svaka netrivijalna implementacija jezika viseg nivoa intenzivnokoristi rantajm bibliotekeRantajm sistem se odnosi na skup biblioteka od kojihimplementacija jezika zavisi kako bi program mogao ispravnoda se izvrsava.Neke bibliotecke funkcije rade jednostavne stvari (npr podrskaaritmetickim funkcijama koje nisu implementirane u okviruhardvera, kopiranje sadrzaja memorije...) dok neke radekomplikovanije stvari (npr upravljanje hipom, rad sabaferovanim I/O, rad sa grafickim I/O...)

Milena Vujosevic Janicic Programske paradigme

Page 62: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Kompilacija vs InterpretiranjeIzvrsavanje

Izvrsavanje

Neki jezici imaju veoma male rantajm sisteme (npr C)Neki jezici koriste rantajm sisteme intenzivnoVirtuelne masine u potpunosti skrivaju hardver arhitekture nadkojom se program izvrsavaC# koristi rantajm sistem CLI, JAVA koristi JVM

Milena Vujosevic Janicic Programske paradigme

Page 63: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Pregled

1 Uvod

2 Leksika, sintaksa, semantika

3 Imena, povezanost, doseg

4 Kontrola toka i tipovi

5 Prevodenje i izvrsavanje

6 Pitanja i literatura

Milena Vujosevic Janicic Programske paradigme

Page 64: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Pitanja

Koja su osnovna svojstva programskih jezika?Koji formalizam se koristi za opisivanje sintakse programskogjezika?Sta definise semantkika programskog jezika?Koji su formalni okviri za definisanje semantike programskihjezika?Sta je ime?Sta je povezivanje?Koja su moguca vremena povezivanja?

Milena Vujosevic Janicic Programske paradigme

Page 65: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Pitanja

Sta je doseg?Sta je kontrola toka?Koji su mehanizmi odredivanja kontrole toka?Sta je sistem tipova i sta on ukljucuje?Sta je tipiziranje i kakvo tipiziranje postoji?Kada se radi provera tipova?Koja je razlika izmedu kompiliranja i interpretiranja?Sta je rantajm sistem?

Milena Vujosevic Janicic Programske paradigme

Page 66: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Literatura

Programming Language Pragmatics, Third Edition, 2009 byMichael L. ScottSeven Languages in Seven Weeks: A Pragmatic Guide toLearning Programming Languages (Pragmatic Programmers),2010. by Bruce A. TateSemantics with Applications: A Formal Introduction. HanneRiis Nielson, Flemming Nielson. John Wiley & Sons, Inc.http://www.daimi.au.dk/~bra8130/Wiley_book/wiley.pdf

Milena Vujosevic Janicic Programske paradigme

Page 67: Programskeparadigme - University of Belgrade...Uvod Leksika,sintaksa,semantika Imena,povezanost,doseg Kontrolatokaitipovi Prevodenjeiizvrˇsavanje Pitanjailiteratura Pregled 1 Uvod

UvodLeksika, sintaksa, semantika

Imena, povezanost, dosegKontrola toka i tipovi

Prevodenje i izvrsavanjePitanja i literatura

Literatura

Programming Language Pragmatics, Third Edition, 2009 byMichael L. ScottDeo materijala je preuzet od prof Dusana Tosica, iz istoimenogkursa.

Milena Vujosevic Janicic Programske paradigme