Pitanja sa predavanja Flashcards

(192 cards)

1
Q

.
Шта је програмски језик? Чему служи програмски језик?

A

Програмски језик је скуп синтаксних и семантичких правила који служи за опис
рачунарских програма. Служи за комуникацију између човека и рачунара, између 2 машине,
а може служити и за комуникацију између двоје људи, тако што нпр.Читају код један
другом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Предности и мане машински зависних језика у односу на машински независне.

A

Предности: ближи су архитектури па су погоднији за оптимизацију и ефикаснији су, лакше и брже се преводе на машински језик.
Мане: потребно је детаљно познавање архитектуре/хардвера, теже се дебагује

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Шта је парадигма? Шта је програмска парадигма?

A

Парадигма је шаблон/оквир по коме се нешто дешава. Програмска парадигма је
шаблон/скуп правила које задовољавају сви програмски језици који спадају у ту парадигму.
Она је одређен начин на који се врши програмирање

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Навести 4 основне програмске парадигме.

A

Импреативна, ООР, логичка и функционална.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. Које су основне особине процедуралне програмске парадигме?
A

Процедуралну парадигму карактерише то да ми задајемо ток извршавања програма, тј.
ми описујемо решење проблема, а машина прати наше решење.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Које су основне особине декларативне програмске парадигме?

A

За разлику од процедуралне декларативна је описна, тј. програмер описује проблем, а
сам механизам долази до решења проблема.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Навести 2 најпознатија језика функционалне парадигме.

A

LISP, Haskell

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Навести 2 најпознатија језика логичке парадигме.

A

Prolog, ASP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Навести главне представнихе упитних језика базе података.

A

SQL, xQuery

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Навести 4 додатне програмске парадигме.

A

Конкурентна, компонентна, скриптна, реактивна

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Навести основну особину реактивног програмирања.

A

Код реактивног програмирања акценат је на преношењу измена приликом асинхроне
промене података. Нпр. а+б=ц значи да свака промена вредности променљивих а и б, утиче
на вредност променљиве ц.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Навести 2 типичне особине скрипт језика.

A

Динамички типизирани и интерпретирају се.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Да ли је парадигма програмирања ограничења декларативна или императивна.
Објасни.

A

Она је декларативна зато што се заснива на постављању релација између
променљивих у виду ограничења и пуштању програма да сам дође до решења које
задовољава те релације

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Пример домена употребе компонентне парадигме

A

Креирање интерфејса апликације-постављање текстуалних поља, прозора, дугмића

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Шта је генеричко програмирање?

A

То је стил програмирања у којем се алгоритми пишу са апстрахованим типовима где се типови об као параметри да би се избегло дуплирање кода.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. Навести основне особине конкурентне парадигме.
A

Конкурентна парадигма представља више процеса који се извршавају истовремено и имају исти о.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q
  1. Које форме конкурентности постоје?
A

Конкурентност у ужем смислу-један процесор, једна меморија
Паралелно програмирање-више процесора, једна меморија,
Дистрибуирано програмирање- више процесора, више меморија

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q
  1. Да ли су језици за обележавање текста програмски језици? Образложи.
A

Нису, јер се не уклапају у саму дефиницију програмских језика, јер се по дефиницији
језиком задаје неко израчунавање, док се овде не врши никакво израчунавање, нити се врши
неки програм.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
  1. Шта представља програмирање ограничења?
A

Програмирање ограничења је програмска парадигма, подпарадигма декларативне
парадигме, где се проблем задаје у терминима променљивих и ограничења које те
променљиве морају да задовоље.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  1. Да ли је програмирање ограничења декларативна или императивна парадигма?
A

Декларативна је, јер се не задаје поступак, већ се постављају услови које променљиве морају да испуњавају.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
  1. У којим доменима се користи програмирање ограничења?
A

Углавном се користи у решавању комбинаторних и оптимизационих проблема, тј. у
оптимизационим истраживањима

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
  1. Наведи 3 програмска језика која имају подршку за програмирање ограничења.
A

С++, Јава, Пајтон

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  1. Наведи 3 библиотеке за програмирање ограничења за С++, Јава, Пајтон.
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q
  1. Нека је дата следећа једнакост: ONE+THREE+FOUR=EIGHT. Формулиши домене и
    ограничења.
A

За О, Т, F домен је {1-9}, док је за остала слова домен {0-9}, а услови су:
100O+N10+E+10000T+1000H+100R+10E+E+1000F+100O+10U+R=10000E+1000*
I+100G+10H+T.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
25. Како је Џон Бакус утицао на развој функционалних језика?
Најзначајнији је због његовог рада везаног за развој Фортрана. Био је добитник Тјурингове награде поводом чега је одржао говор о предности функционалних језика у односу на императивне, јер су читљивији, поузданији и вероватније исправни.
26
26. Који су најпознатији функционални програмски језици?
LISP, Haskell, Scala, F#, Elixir
27
27. Који је домен употребе функционалних програмских језика?
Они су језици опште намене и могу се свуда користити. Нпр. за обраду базе података, биоинформатику, финансијско моделирање, ста
28
28. Која је основна апстракција у функционалној програмској парадигми?
Функцијса
29
29. Да ли математичке функције имају пропратне ефекте? Образложи.
Немају, у математичким функцијама нема параметра који би могао да утиче на резултат као нпр. глобална променљива, већ за исти улаз увек добијамо и исти излаз
30
30. Шта су то функције вишег реда? Навести неке најбитније.
Функција вишег реда је функција која прима другу функцију као параметар или је враћа као повратну вредност или оба. Примери: map, fold(reduce), filter
31
31. Шта се подразумева под појмом транспарентности референци и шта је основна последица?
То значи да вредност израза не зависи од контекста у ком се налази, а основна последица је непостојање бочних ефеката.
32
. Ко је творац програмског језика Хаскел?
Међународни комитет/Хаскел Кари
33
33. Које су основне карактеристике програмског језика Хаскел?
Чист функционални језик, лења израчунавања, статички типизиран, строго типизиран језик, има мочни систем типова..
34
34. Шта је статичко, а шта динамичко типизиран језик? Навести по један пример.
Статички типизиран језик је језик где се типови одређују у фази компилације, док се у динамички типизираном језику типови одређују при извршавању. Статички типизиран је Хаскел, а динамички Пајтон
35
Објасни појам лење евалуације
Лења евалуација подразумева да се не раде непотребна израчунавања, нпр. при израчунавању израза тачно || некиИзраз, некиИзраз се неће израчунавати јер нам његова вредност није потребна
36
. Шта је слабо, а шта строго типизиран језик? Наведи примере
Строго типизиран језик значи да сви типови морају да се поклапају, нема имплицитних конверзија. Није могуће извршавати математичке операције са подацима различитих типова. Нпр. не можемо да помножимо 3.5*2. Пример је Хаскел. Слабо типизиран језик значи да има имплицитних конверзија и да је претходно израчунавање могуће јер се у том случају прво изврши конверзија броја 2 у 2.0, и затим и резултат буде реалан број-7.0.Пример је С
37
37. Наведи основне типове података у Хаскелу.
Bool, Char, Int, Integer, Float, String
38
38. Шта су листе у Хаскелу?
Листа је колекција истих типова произвољне дужине (колико то меморија омогућава).
39
39. Шта су торке у Хаскелу?
Торке су колекције фиксираног броја вредности, али различитих типова.
40
40. Наведи 3 функције за рад са листама у Хаскелу.
Map, foldl, foldr, filter
41
41. Шта је то грађанин првог реда у контексту програмских језика?
Градивни елемент у оквиру језика у коме не постоји рестрикција креирања и коришћења.
42
42. Наведи примере грађана првог реда у С-у.
Int, double, float, показивачи...
43
43. Да ли су функције грађани првог реда у С-у? Образложи.
Нису, јер се не могу саме прослеђивати, већ се могу прослеђивати само показивачи на те функције.
44
44. Наведи примере појмова који нису грађани првог реда у С-у.
Функције, низови..
45
45. Да ли је функција грађанин првог реда у Хаскелу?
Јесте
46
46. Шта су то функције вишег реда?
То су функције које као повратну вредност имају неку функцију или је имају као аргумент или оба.
47
Користећи фју map у Хаскелу напиши израз којим се сваки члан листе [1,3,7] увећава за 1.
map(+)[1,3,7]
48
Користећи фју map у Хаскелу напиши израз којим се сваки члан х листе [1,3,7] замењује кубом броја х+1
Map(3+1)[1,3,7], map(3)(map(+1)[1,3,7])
49
Koристећи функцију foldl у Хаскелу напиши израз којим се израчунава производ елемената листе природних бројева [1,2,3,10]
foldl(*)1[1,2,3,10]
50
50. Koристећи функцију foldl у Хаскелу напиши израз којим се израчунава сума апсолутних вредности елемената листе природних бројева [1,-2,3,-10]
foldl(+)0(map(abs)[1,-2, 3, -10]).
51
Како се најприродније остварује понављање извршавања наредби у императивним, а како у функционалним програмским језицима?
У императивним итерацијом, а у функционалним рекурзијом.
52
52. Шта су то чисти функционални језици?
Чисти функционални језици су они који не допуштају никакве пропратне ефекте (потпуна транспарентност референци).
53
53. Наведи 3 чиста функционална језика.
Хаскел, Миранда, Clean
54
Да ли је могуће дозволити неке бочне ефекте у контролисаним условима и и даље задржати потпуну транспарентност референци?
Не, ако хоћемо да имамо у потпуности транспарентност референци не смемо допустити никакве пропратне ефекте.
55
Шта нам омогућава својство транспарентности референци што није омогућено у нпр. императивном програмирању где не постоји то својство?
Необавезан је експлицитни редослед навођења функција, битно је да се дефинише израз који представља решење проблема, док је код императивних редослед битан
56
Којим наредбама се најчешће мења стање програма?
Најчешће наредбом доделе (директно са =, а индиректно са ++)
57
Наведи примере 2 познате функције у којима је неизбежно нарушити транспарентност референци
Random, scanf
58
Шта је мана код транспарентности референци?
Не смемо користити пропратне ефекте, што је доста тешко јер постоје алгоритми којима је суштина да мењају стања, а неке функције постоје само због својих пропратних ефеката (scanf)
59
59. Шта су погодности код транспарентности референци?
Програми су формално концизни (блиски математичком запису), прикладни за формалну верификацију (провера исправности програма је скроз математичка), мање су подложни грешкама, лакше их је оптимизовати и трансформисати
60
60. Навести 3 функционална језика која имају и особине императивних језика.
Scala, Python, Ruby
61
Када хоћемо да дамо предност брзини извршавања да ли бирамо статички или динамички типизиране језике и зашто?
Бирамо статички типизиране јер не постоји додатна провера типова током извршавања (типови одређени у фази компилације).
62
62. Када бирамо динамички типизиране језике?
Када желимо да имамо већу флексибилност по цену мало споријег извршавања.
63
63. Да ли се код статички типизираних језика типови морају навести? Образложи.
Није увек неопходно, нпр. Хаскел је статички типизиран језик, али ипак не морамо да наводимо типове већ их он сам може закључити
64
64. Шта је типски разред. Наведи 3 типа.
Типски разред казује које особине мора да има неки тип да би над њим могла да се изврши нека операција. Они дефинишу и које функције мора неки тип да имплементира да би припадао том разреду. Примери: типови са једнакошћу, типови са уређењем, нумерички типови.
65
65. Навести пример типа података код кога не постоје типски разреди.
Комплексни бројеви, буловске вредности
66
66. Када је нека функција полиморфна?
Функција је полиморфна уколико за аргументе може да прима аргументе различитог типа при позиву.
67
67. Шта је типска променљива и шта нам она омогућава?
Означавају променљиве које се односе на тип. Омогућавају нам да дефинишемо типове функција које су полиморфне , тј. да функције раде са било којим типом података који се уклапа у типску променљиву.
68
68. Када се за неки језик каже да је слабо типизиран, а када да је јако типизиран?
Слабо типизиран је када се не поклапају типови, а јако типизиран је када се сви типови морају поклапати
69
69. Шта је то стриктан израз, а шта нестриктан? Навести по пример.
Стриктан израз је онај који се може израчунати само ако су познати сви параметри. Нестриктан израз је онај који се може израчунати чак и ако неки параметри нису наведени. Примери: нестриктан израз- а||b, стриктан израз- а+б
70
70. Када се за неку семантику каже да је стриктна, а када да је нестриктна?
Семантика је стриктна када за сваки израз проверава да ли постоји вредност за све променљиве било оне потребне за израчунавање израза или не. У супротном је нестриктна.
71
71. Да ли Хаскел има стриктну или нестриктну семантику?
Нестриктну.
72
72. Навести 2 програмска језика са стриктном семантиком.
LISP, Scala
73
73. Који је животни век променљивама у функционалном језику?
Не постоје променљиве, па ни њихов животни век.
74
74. Како је организовано руковање меморијом приликом извршавања програма за податке који се више не користе у програму?
О деалокацији меморије брине се сакупљач отпадака, објекти у меморији се деле по старости а очекује се да ће млађи објекти брже бити искоришћени и уклоњени.
75
75. Који су изазови у прављењу компајлера за функционалне језике?
Изазов је направити компајлер који подржава транспарентност референци, бесконачне структуре података..
76
76. Да ли је ефикасност предност или мана функционалних програмских језика?
Предност, раније је била мана, али доста је узнапредовало, тако да сада Хаскел има ефикасност као нпр.С.
77
77. Зашто је тестирање и дебаговање у општем случају једноставније код функционалних језика? Образложи
Тестирање је једноставније јер је свака функција потенцијални кандидат за проверу тестова. Функције не зависе од стања система, што олакшава синтезу тест примера и проверу да ли је израз одговарајући. Дебаговање је једноставније јер су функције углавном мале и јасно специјализоване
78
78. Која је експресивност ламбда израза?
Еквивалентна је експресивности Тјурингове машине.
79
79. Написати дефиницију за грађење ламбда термова.
Променљива: променљива је валидни ламбда терм. ƛ апстракција- Ако је t ƛ терм, а х променљива, онда је и ƛ х.t ƛ терм. ƛ примена- ако су t и s ƛ термови, онда је и (t s) ƛ терм
80
80. Објасни значење ламбда израза ƛ х.х*х+3 и примени га на конкретну вредност.
Oznacava preslikavanje f(x) = x*x +3, (lambx,x*x+3)2 ->2*2+3 ->7
81
83. Шта је алфа еквивалентност? Навести пример 2 еквивалентна ламбда терма.
Алфа еквивалентност представља независност имена везаних променљивих у ламбда изразу. А пример 2 еквивалентна ламбда израза: ƛх.х=ƛу.у
82
84. Да ли су термови х и у алфа еквивалентни? Образложи.
Нису, јер су то слободне променљиве.
83
85. Да ли су термови ƛх. х+у и ƛ у.у+х алфа еквивалентни? Образложи.
Nisu ,jer je u prvom izrazu y slobodna a u drugom x slobodna,
84
81.Koja je asocijativnost primene,a koja apstrakcije?
Primena je levo asocijativna,a aprstrakcija desno asocijativna
85
82.Sta su slobodne promenljive u lamba termy i koje su slobodne ,a koje vezane u izrazu lambaZ.z*y-1-x.
Slobodne promenljive u termu su one koje nisu vezane lamba apstrakcijom.U primeru x i y su slobodne a z vezana
86
86. Да ли су термови ƛх.х+у и ƛу.у+у алфа еквивалентни? Образложи.
Нису, јер је у у другом терму везана променљива, а у првом није.
87
87. Да ли су термови ƛz.ƛx.x+z(ƛy.y 2) и ƛz.ƛy.y+z(ƛy.y 2) алфа еквивалентни?Образложи.
Јесу. Изрази са везаним променљивама су им исти, а нема слободних променљивих.
88
88. Шта је алфа редукција? Навести пример.
Алфа редукција је преименовање везаних променљивих, нпр. ƛх.х и ƛу.у су иститермови само је на први примењена алфа редукција
89
89. Шта је бета редукција? Навести пример.
Бета редукција је израчунавање вредности неке функције, нпр. (ƛх.х*х+1)1→1*1+1→2
90
90. Шта је делта редукција? Навести пример.
Делта редукција трансформише изразе који садрже само константе, нпр. 5+3→8
91
91. Навести пример ламбда израза који дефинише функцију вишег реда кја каоаргумент прима функцију примењену на број 10.
ƛх.(х 10)
92
92. Навести пример ламбда израза који дефинише функцију вишег реда која имафункцију као повратну вредност.
(ƛху.х*у+3)5
93
93. Како се дефинишу функције са више аргумената? Написати ламбда израз којиодговара функцији f(x,y,z)=2*x+4+y*z
Функцију са више аргумената можемо дефинистаи помоћу Каријевог поступкаnправљењем функција са једним аргументом. Функција f(x,y,z)=telo, Каријевим поступкомсводи се на ƛх1х2...хn=telo. Горњи пример се своди на: ƛxyz.2*x+4+y*z
94
94. Koje су предности лење евалуације ламбда израза? Наведи и објасни пример где сето дешава.
Избегавају се непотребна израчунавања, гарантује се завршетак извршавањаувек када је то могуће, омогућава коришћење бесконачних структура података. Пример: (ƛх.2)(45*89-23)→2
95
95. Шта је апликативни, а шта нормални поредак извођења редукција? Навести потенцијалне предности и мане и једног и другог.
Апликативни одговара позиву по вредности, прво се рачуна вредност аргумената па сешаље у функцију.Предности: брже се израчунава и читкије је. Мане: можда се не израчуна вредност функције, а могуће ју је израчунати.Нормални поредак-бета редукцијом се редукује најлевљи израз, одговара евалуацијипо имену.Предности: завршиће се израчунавање увек ако је то могућеМане: дуже се исписује, није толико читко
96
96. Шта је нормални облик функције?
Нормални облик функције је облик који се добија бета редукцијама све док су оне могуће.
97
97. Да ли за сваку функцију постоји нормалан облик? Колико нормалних облика можеда има функција? У каквом су односу нормални облици функције?
Нема свака функција свој нормалан облик. Свака функција може имати највише једаннормалан облик који је јединствен. Ако се неки израз може свести на два различита ламбдаизраза, онда постоји трећи до ког се може доћи из та два.
98
98. Извести нормалан облик:
а) (ƛx.x*x-10)((ƛy.y+2)5)→ ((ƛy.y+2)5)*((ƛy.y+2)5)-10→ 3*3-10→ -1 b) (ƛx.x(x 15))(ƛy.y+2)→ (ƛy.y+2)((ƛy.y+2)15)→ ((ƛy.y+2)15)+2→ 15+2+2→ 19 c) (ƛx.5)((ƛx.x x)(ƛx.x x)→ 5 d) (((ƛxyz.x*y-z)4)3)5→ (((ƛxyz.xy-z)4)3)5→ ((ƛyz.4*y-z)3)5→ (ƛz.12-z)5→ 12-5→7 e) (ƛx.x(x(x 7)))((ƛxy.x+2*y)3)→ ((ƛxy.x+2*y)3)(((ƛxy.x+2*y)3)((((ƛxy.x+2*y)3))7)→((ƛx.(ƛy.x+2*y))3)(((ƛxy.x+2*y)3)((((ƛxy.x+2*y)3))7)→(ƛy.3+2*y)(((ƛxy.x+2*y)3)((((ƛxy.x+2*y)3))7)→3+2*((ƛxy.x+2*y)3)((((ƛxy.x+2*y)3))7)→3+2*((ƛx.(ƛy.x+2*y))3)((((ƛxy.x+2*y)3))7)→3+2*(ƛy.3+2*y)((((ƛxy.x+2*y)3))7)→3+2*(3+2*(3+2*7))→3+2*(3+2*(3+14))→ 3+2*(3+2*17)→ 3+2*(3+34)→ 3+2*37→ 3+74→ 77 f)(ƛx.x (x 3))((ƛabc.a+b*c)2)→ ((ƛabc.a+b*c)2)(((ƛabc.a+b*c)2)3)→ (ƛb.2+b*c)(((ƛbc.a+b*c)2)3)→ ƛc.2+(((ƛbc.a+b*c)2)3)*c→ƛc.2+((ƛbc.2+b*c)3)*c→ ƛc.2+(ƛc.2+3*c)*c
99
99. Шта чини теоријске основе логичког програмирања?
Логика првог реда.
100
100. На који начин се решавају проблеми у оквиру логичке парадигме?
Логика се користи као декларативни језик за описивање проблема, а доказивач теорема као механизам за решавање проблема. Решавање проблема подељено је између програмера који описује проблем и доказивача теорема који тај проблем решава
101
101. Који су основни представниси логичке парадигме?
Пролог, Даталог, АСП
102
102. За коју врсту проблема је погодно користити логичко програмирање?
За решавање проблема математичке логике, обраду природних језика, подршку релационим базама података, аутоматизацију пројектовања, симболичко решавање једначина, разне области вештачке интелигенције.
103
103. За коју врсту проблема није погодно логичко програмирање?
За графику, нумеричка израчунавања, И/О алгоритме
104
104. Ukoliko je zadata supstitucija σ =[x→ a, y→ b] I term t=f(x,y) izracunati tσ.
tσ=f(a,b).
105
105. Ukoliko je zadata supstitucija σ=[x→ g(x)] i term t=f(x) izracunati tσ.
tσ=f(g(x)).
106
106. Ukoliko je zadata supstitucija σ=[x→a, y→ g(x)] i term t=f(x,y) izracunati tσ.
tσ=f(a, g(x)).
107
107. Ukoliko je zadata supstitucija σ=[y→ g(x), x→ a] i term t=f(x,y) izracunati tσ.
tσ=f(a, g(x)).
108
108. Kada kazemo da su izrazi unifikabilni?
Izrazi e1 i e2 su unifikabilni ako postoji supstitucija σ takva da je e1σ=e2σ. Supstitucija σ jejedan njihov unifikator.
109
109. Da li za dva izraza uvek postoji unifikator?
Ne, za dva izraza ne mora uvek postojati unifikator, npr za f(x,y) i g(x) nema unifikatora jernemaju isti broj argumenata, a pri tome supstitucijom funkcijske simbole ne mozemo zameniti.
110
110. Ako su dati termovi t1=f(x,y) i t2=f(c,z) i ako su oni unifikabilni, izracunati jedanunifikator ovih termova. Ako nisu unifikabilni, objasni zasto.
Jesu unifikabilni, jedan unifikator mogao bi biti σ=(x→c, y→z).
111
111. Ako su dati termovi t1=f(x,y) i t2=g(y,x) i ako su oni unifikabilni, izracunati jedanunifikator ovih termova. Ako nisu unifikabilni, objasni zasto.
Ovi termovi nisu unifikabilni jer supstitucijom funkcijske simbole ne mozemo dapromenimo, tako da, koju god supstituciju izvrsili, f!=g
112
112. Ako su dati termovi t1=f(x,y, g(z)) i t2=f(g(g(a)), g(a), a) i ako su oni unifikabilni,izracunati jedan unifikator ovih termova. Ako nisu unifikabilni, objasni zasto.
Ovi termovi nisu unifikabilni jer se funkcija ne moze preslikati u konstantu???
113
113. Ako su dati termovi t1=f(g(g(x)), y,z) i t2=f(y, g(z), g(a)) i ako su oni unifikabilni,izracunati jedan unifikator ovih termova. Ako nisu unifikabilni, objasni zasto.
Ovi termovi jesu unifikabilni I jedan moguci unifikator je σ=[y→g(z), z→g(a), x→a]
114
114. Sta je metod rezolucije?
Rezolucija je oblik zakljucivanja u kome se na osnovu formula A=>B I B=>C zakljucujeA=>C. Odnosno, na osnovu ¬A˅B i ¬B˅C zakljucujemo ¬A˅C.
115
115. Neka su date formule predikatske logike: 1.A=>B 2. C=>D 3. A=>C. Ako je A tacno, metodom rezolucije dokazi D.
1. ¬A˅B 2. ¬C˅D 3.¬A˅C 4.A 5.¬D (pretpostavimo suprotno) 6. C (rezolucija iz 3 I 4) 7. D (rezolucija iz 2 I 6) 8. ┴ (kontradikcija iz 5 I 7)
116
116. Svi vole kucnog ljubimca. Milan ne voli glasne kucne ljubimce. Macak Zuca je glasan. a) Pretvori date iskaze u dobro formirane formule predikatske logike. b) Prevesti prethodne izraze u KNF c) Metodom rezolucije dokazati da Zuca nije Milanov kucni ljubimac.
a) 1. KucniLjubimac(x,y)→Voli(y,x) 2. Glasan(x)→¬Voli(Milan, x) 3. Glasan (Zuca) 4. ¬KucniLjubimac(Zuca, Milan) b) 1. ¬KucniLjubimac(x,y)˅ Voli(y,x) 2. ¬Glasan(x) ˅¬Voli(Milan, x) 3. Glasan(Zuca) 4. ¬KucniLjubimac(Zuca, Milan) c) 1. ¬KucniLjubimac(x,y)˅ Voli(y,x) 2. ¬Glasan(x) ˅¬Voli(Milan, x) 3. Glasan(Zuca) 4. KucniLjubimac(Zuca, Milan)-pretpostavimo suprotno 5. ¬Glasan(Zuca)˅¬Voli(MIlan, Zuca)-supstitucija iz 2 6.¬Voli(MIlan, Zuca)-rezolucija iz 3 I 5 7. ¬KucniLjubimac(Zuca, Milan)˅Voli(MIlan, Zuca)-supstitucija iz 1 8. ¬KucniLjubimac(Zuca, Milan)-rezolucija iz 6 I 7 9. ┴-kontradikcija iz 4 I 8.
117
117. Hornova klauza je:
Disjunkcija literala sa najvise jednim nenegiranim literalom.
118
118. Tvrdjenja se sastoje od:
Cinjenica i pravila.
119
119. Pretpostavka zatvorenosti je:
Pretpostavka da je netacno sve sto nije eksplicitno navedeno kao tacno.
120
120. Cemu sluzi stablo izvodjenja u Prologu?
Ono omogucava slikovit prikaz nacina resavanja problema u Prologu. Stablo izvodjenja=stablo pretrage. U smislu deklarativne semantike, odgovara poretku primene pravila rezolucije na postojeci skup cinjenica i pravila. U smislu proceduralne semantike, odgovara procesu ispunjavanja ciljeva I potciljeva.
121
121. Objasni sta je I kako funkcionise operator secenja.
Omogucava brze izvrsavanje programa uz manje memorijske zahteve. To je sistemski operator za eksplicitnu kontrolu backtrackinga. Odseca sve nakon prvog uspeha svih upita sa levestrane operatora.
122
122. Objasni sta karakterise imperativnu paradigmu.
Prednost se daje algoritmima, a program cine podaci i algoritmi. Ovu paradigmu karakterise izracunavanje u terminima naredbe koje menjaju stanje programa.
123
123. Navesti faze razvoja imperativne paradigme.
Operaciona, strukturna, proceduralna, I modularna paradigma.
124
124. Objasni sta karakterise operacionu paradigmu. Navesti probleme ove paradigme.
Ovo je prva faza programiranja zasnovana na dosetkama I trikovima za ustedu memorije.Koristile su se specificnosti jezika I rada racunara. Jos se naziva I trik programiranje.Programi su pisani bez nekih pravila. Karakterisu je upravljacke strukture (uslovni I bezuslovniskok) koje direktno oslikavaju hardverske instrukcije. Ovako napisani kodovi su teski za citanje Imodifikaciju
125
125. Na sta se odnosti termin “spageti programiranje”?
Isprepletan niz naredbi koriscenjem GOTO naredbe skoka, cesto jako tezak kod zarazumevanje, debagovanje.
126
126. Objasni sta karakterise strukturnu paradigmu.
Sekvenca naredbi, selekcija- da li da se izvrsi neka naredba, I ponavljanje bloka naredbi.Akcenat je na programskim strukturama gde svaka ima ulaznu I izlaznu tacku. Cilj je veceprilagodjavanje coveku
127
127. Navesti minimalan skup komandi koje se cesto koriste u operacionoj paradigmi.
Naredba dodele, sekvenca naredbi, obelezavanje naredbe, naredbe bezuslovnog skoka,naredbe uslovnog skoka.
128
128. Navesti 4 osnovne upravljacke strukture koje se koriste u strukturnoj paradigmi.
Naredba dodele, sekvenca naredbi, iteracija (while), selekcija (if-then-else).
129
129. Navesti 3 primera dodatnih upravljackih struktura koje se koriste u strukturnojparadigmi.
For, do-while, switch-case.
130
130. Koje su karakteristike proceduralne paradigme?
Apstrakcija kontrole toka- podrutine. Podrutine predstavljaju apstrakciju niza naredbi.Priblizava programiranje deklarativnoj paradigmi. Izvrsava svoje operacije u ime svog pozivaoca.Svaka podrutina je nezavisna od ostalih. Razvija se mehanizam prenosa parametara
131
131. Koja je razlika izmedju procedure I fje?
Procedure nemaju povratnu vrednost, a funkcije imaju.
132
132. Navesti I objasniti osnovne vrste prenosa parametara u podprogramu.
*Prenos po vrednosti- izraz se evaluira I njegova vrednost se kopira u promenjljivu potprograma *Prenos po referenci- prenosi se adresa argumenta *Prenos po rezultatu- po povratku, vrednost se kopira u pozivajucu podrutinu *Prenos po imenu- parametri se zamenjuju neeavluiranim izrazima. *Prenos po konstantnoj vrednosti- isto kao I prenos po vrednosti, samo se vrednosti tretirajukao konstante. *Prenos po vrednosti I rezultatu- vrednost parametra se kopira I po ulasku I po izlasku izpodrutine.
133
133. Kako je u memoriji organizovano izvrsavanje programa?
POdaci potrebni za izvrsavanje potprograma su organizovani na steku, po jedan stek okvir zasvaki novi poziv potprograma
134
134. Objasni sta karakterise modularnu paradigmu.
Modularnost podrazumeava razbijanje veceg problema na nezavisne celine. Celine sadrzedefinicije srodnih podataka I fja. Cesto se celine smestaju u posebne datoteke, cime se postize lakseodrzavanje kompleksnih sistema. Celine mogu medjusobno da komuniciraju kroz svoje interfejse.
135
135. Objasni princip fionalne dekompozicije problema.
Kreiranje programa proceduralne paradigme zasniva se na principu “od opsteg ka posebnom”. Polazi se od postavljenog zadatka kao opsteg, zatim se uocavaju jednostavnije celine Izadatak se dekomponuje na jednostavnije delove. Ukoliko su ti delovi I dalje kompleksni razbijajuse na jos jednostavnije delove, dok se ne dodje do nivoa na kom se vise ne moze vrsiti dekompozicija.
136
136. Sta su bocni efekti I kako se oni manifestuju?
Bocni efekti odnose se na situacije kada se prilikom izracunavanja nekog izraza istovremenon menja I stanje memorije (npr. Vrednost izraza se upisuje u neku memorijsku lokaciju). Oznake promenljivih su istovremeno I oznake memorijskih lokacija, pa se u naredbama mesaju oznake lokacija I njihovih vrednosti. Primer: x++;
137
137. Sta je kohezija?
Kohezija je koncept koji opisuje koliko su blisko povezane operacije koje se vrse u jednojcelini (klasi).
138
138. Sta je kopcanje?
Kopcanje je koncept koji opisuje koliko su medjusobno povezane dve razlicite celine(klase).
139
139. Sta je efekat talasanja?
Efekat koji se javlja kada napravimo izmenu u nekom delu programa, a kao posledica teizmene javlja se greska/neocekivano ponasanje programa u nekom drugom delu, zbogpovezanosti/kopcanja tih delova.
140
140. Koji su nedostaci funkcionalne dekompozicije?
Jer se kreira dizajn programa koji je dizajniran na osnovu osobina glavnog programa.Ovakav dizajn nije pogodan za izmene zahteva jer svaki put moramo da menjamo nesto I u main-u,jer je sve preko njega povezano. U startu se koristi znanje kako glavni problem treba da izgleda, paje cesto ad hoc I tesko je ponovo iskoristivo.
141
141. Sta je nasledjivanje?
Nasledjivanje je kreiranje novih klasa od vec postojecih. Omogucava postojenje hijerarhijeklasa koje simuliraju koncept klasa I potklasa iz stvarnog sveta.
142
142. Sta je polimorfizam?
Predstavlja ponovno iskoriscavanje koda. Npr. Pise se fja koja kao argumente primaparametre I ta fja moze da primi razlicite tipove I radi sa razlicitim tipovima umesto da se za svakitip pise zasebna fja, ovo je parametarski polimorfizam.
143
143. Sta je apstrakcija?
To je skup osnovnih koncepata koje neki entitet obezbedjuje sa ciljem omogucavanja resavanja nekog problema. Apstrakcija rezultuje u odvajanju interfejsa I implementacije.
144
144. Sta je enkapsulacija?
Enkapsulacija (ucauravanje) je skup mehanizama koje obezbedjuje jezik (ili skup tehnika zadizajn) za skrivanje implementacionih detalja (klase, modula..). Enkapsulacijom su podaci zasticeniod nezeljenih spoljnih uticaja.
145
145. Sta je interfejs?
Interfejs je korisnicki pogled na to sta neki entitet moze da uradi. Implementacija vodiracuna o internim operacijama interfejsa koji ne moraju da budu poznati korisniku.
146
146. Kakav je odnos izmedju kalse I objekta?
Klase su sabloni za grupe objekata, tj. klase daju specifikaciju za sve podatke I ponasanjeobjekata. Za objekat kazemo da je instanca klase.
147
147. Navesti primer konkurentnosti u cilju podrske logickoj strukturi problema?
Kod veb pregledaca, razmenjuju se podaci sa serverom, prikazuje se tekst I slike, reaguje sena korisnicki ulaz, sto su sve u velikoj meri nezavisni zadaci koji se prirodno mogu podeliti
148
148. Navesti primer konkurentnosti za dobijanje na brzini.
Moze se ostvariti na viseprocesorskim sistemu paralelnim izvrsavanjem, ali I najednoprocesorskom kada postoje neki asimetricni zadaci, kao sto je citanje ulaza I njegova obrada,gde je citanje znatno sporije, pa se u vreme izmedju dva unosa moze iskoristiti za obradu vecucitanih podataka.
149
149. Distribuirani sistemi su:
To su sistemi koji se sastoje od vise komponenti koje se nalaze na arzlicitim masinama Ikoje komuniciraju I koordiniraju sa ciljem da izgledaju kao jedan monolitni sistem koji obavlja istufju.
150
150. Navesti 3 primera distribuiranih sistema.
WWW, senzori aviona, online igre...
151
151. Poredjaj hijerarhijski paradigma: paralelna, distribuirana I konkurentna.
Konkurentna, paralelna I distribuirana (od opstije ka specificnoj)
152
152. Navedi osnovne nivoe konkurentnosti.
Nivo instrukcija, nivo naredbi, nivo jedinica, nivo programa.
153
153. Formulisi Amdalov zakon.
Faktor ubrzanja paralelizacijom odozgo je ogranicen sa 1/α, gde je α udeo programa koji semora izvrsiti sekvencijalno.
154
154. Portabilnost je:
Nezavisnost programa od konkretne arhitekture.
155
155. Skalabilnost je:
Osobina da program pokazuje bolje performanse kada ima vise dostupnih resursa.
156
156. Objasniti podelu na lake I teske zadatke.
Teski zadaci imaju razlicit adresni prostor, dok laki dele adresni prostor, razlikuje ih samostek I vrednosti registara
157
157. Promena konteksta se odnosi na:
promenu stanja procesora koja je neophodna kada se sa izvrsavanja jednog teskog zdatkaprelazi na izvrsavanje drugog teskog zadatka.
158
158. Navedi primer paralelizacije saradnjom:
Jedna nit zahteva rezultat druge. Primer je problem proizvodjaca I potrosaca.
159
159. Navedi primer sinhronizacije takmicenjem:
Dva zadatka pokusavaju da dobiju nedeljiv resurs. Primer je izvrsavanje kriticne sekcije.
160
160. Zasto je tesko naci gresku u konkurentnim programima?
Zato sto se greska ne mora uvek ispoljavati, vec samo kada se desi nepozeljan tokizvrsavanja, sto moze biti jako retko
161
161. Sta je vertikalno, a sta horizontalno skaliranje distribuiranih sistema?
Vertikalno-poboljsanje karakteristika hardvera jedne masine Horizontalno- dodajemo nove racunare svaki put kada performanse opadnu.
162
162. Navesti prednosti distribuiranih sistema:
Posto se izvrsavanje vrsi nezavisno na cvorovima, jednostavno je I jeftino dodavanje cvorafunkcionalnosti kada je potrebno; pouzdanost- ako jedna masina otkaze, ne bi trebalo da budeposledica po sistem
163
163. Navesti mane distribuiranih sistema:
Kompleksan dizajn, tesko debagovanje I konstrukcija, izazovno rasporedjivanje poslova,kasnjenje, posmatranje padova je neophodno...
164
164: Skript jezik je:
Jezik koji sluzi za pisanje skriptova. Skript je niz komandi koje se izvrsavaju u odgovarajucem izvrsnom okruzenju.
165
165: Objasni kako se skript jezik koristi za povezivanje aplikacija.
Posto je za razvoj odredjenih programa cesto koriscenje razlicitih jezika, programa i/ili modula, skript jezik sluzi da poveze sve te celine kako se to ne bi radilo manuelno I kako bi se na taj nacin izbegle greske poput neodgovarajucih tipova.
166
166:Navesti najznacajnije razlike iymedju tradicionalnih I skript jezika:
Skript jezici su vise okrenuti brzom razvoju, dinamickim proverama,lokalnoj prilagodljivosti i podrzavaju slozenije koncepte (tabele,…), dok su tradicionalni jezici okrenuti ka laksem odrzavanju, prenosivosti, efikasnosti, statickom otkrivanju gresaka.
167
167:Navesti osnovne karakteristike skript jezika:
Skracen zapis, dinamicki su tipizirani, koriste tipove podataka viseg nivoa, interaktivno se koriste, imaju poklapanje obrazaca I omogucavaju lakse koriscenje stringova.
168
168:Navesti neke tipove podataka viseg nivoa:
skupovi, multiskupovi, mape, liste, torke…
169
169:Navesti 5 domena upotrebe skript jezika:
Jezici za web, matematika I statistika, obrada teksta, komandni jezici, jezici prosirenja…
170
170:Navedi 3 komandna jezika:
bash, sh, csh…
171
171:Navedi 3 skript jezika za procesiranje teksta:
sed, awk, perl
172
172:Navedi 3 skript jezika za domen matematike I statistike:
R,S, Matlab, Wolfram…
173
173:Sta su to jezici prosirenja? Navedi 3 primera jezika prosirenja:
Oni prosiruju korisnost neke aplikacije dozvoljavajuci nove komande koristeci vec postojece kao gradivne blokove. Primeri: Scheme, Tcl, VisualBasic
174
174:Navedi 3 skript jezika za programiranje veb aplikacija:
php, JavaScript
175
175:Navesti osnovne karakteristike JavaScripta:
To je jezik za programiranje veb aplikacija. Podrzava programiranje vodjeno dogadjajima, imperativnu I funkcionalnu paradigmu. On je multiparadigmatski, slabo tipiziran, interpretiran.
176
176:Navesti 3 skript jezika opste namene:
Python, ruby, lua.
177
177:Navesti osnovne osobine Python jezika:
Jednostavna I laka sintaksa, koristi vise paradigmi-opp, funkcionalnu, imperatvinu, ali primarno je skript jezik. Lak je za pisanje, strogo je I dinamicki tipiziran, ima veliku podrsku u vidu biblioteka za ogroman broj razlicitih poslova.
178
178:Sta su domenski specificni jezici I koja je njihova uloga?
To su jezici koji su specijalizovani za neke konkretne domene. Uloga im je da se fokusiraju na specificne aspekte sistema. Koriste se kao biblioteke I u ejzicima opste namene.
179
179:Koje su prednosti domenski specificnih jezika?
Razvoj softvera, kreiraju se kada ne postoji adekvatno resenje za neki prolem u jeziku opste namene jednostavan je za upotrebu, povecava produktivnost programa. Omogucavaju fokus na bitnije aspekte tako sto skrivaju detalje implementacije od programera
180
180:Koji su preduslovi za koriscenje domenski specificnih jezika?
Preduslov je da se koriste kada ne postoji adekvatno resenje za neki problempri cemu bi nam DSL obezbedio efikasnije resenje nego sto bi to bilou u vec postojecim jezicima, takodje je potrebno da se takav problem javlja dovoljno cesto. Iako su laki, potrebno je da programer dobro poznaje tu specificnu oblast.
181
181:U kom su odnosu opsti I domenski specificni jezici? Obrazlozi.
Nije uvek jasan odnos izmedju njih jer jezik moe da ima neke specijalizovane osobine za neki domen ali da se istovremeno upotrebljava I za siri sprektar od toga ili obratno, da se koristi za specijalizovan domen, a da ima mogucnosti I za sire primene.
182
182:Navedi 5 DSL I za svaki navesti domen upotrebe
Dot- za crtanje grafova, HTML- za opis teksta SQL- jezik za rad sa bazama podataka, CSS- za stilizovanje teksta, Verilog- za modelovanje hardvera
183
183:Cime se bavi leksika?
Bavi se opisivanjem osnovnih gradivnih elemenata jezika. U okviru leksike, definisu se reci I njihove kategorije.
184
184:Cime se bavi sintaksa?
Ona definise strukturu izraza, tj, nacine kombinovanja osnovnih elemenata jezika u ispravne jezicke konstrukcije.
185
185: Cime se bavi semantika?
Ona pridruzuje znacenje ispravnim konstrukcijama u nekom programskom jeziku. Ona odredjuje znacenje jezika, tj. sta se desava kad se program izvrsava.
186
186:Sta je neformalna semantika I koja je njena uloga?
To je semantika koja je zadata opisno, a uloga joj je da programer moze da razume kako se program izvrsava I pre nego sto se pokrene.
187
187:Sta su problemi sa neformalnom semantikom?
Dvosmislenost, nekonzistentnost I nedorecenost.
188
188:Sta je formalna semantika I koja je njena uloga?
Semantika koja je formalno zadata I kojom se definise znacenje samo sintaksno isprevnih programa, a uloga joj je precizno definisanje znacenja programa.
189
189:Navesti osnovne vrste semantika:
Operaciona, denotaciona I aksiomatska.
190
190:Cime se bavi pragmatika programskog jezika?
Bavi se nacinima na koje je nameravano da se jezik prakticno koristi, tj. Na koji nacin konstrukti jezika mogu da se upotrebljavaju da bi se ostvarili razliciti zeljeni ciljevi.
191
191:Navedi bar 4 mehanizma za odredjivanje kontrole toka programa:
rekurzija, iteracija, konkurentnost, nedeterminizam…
192
192 : Objasni razliku izmedju kompilacije I interpretacija:
Kompilirani jezici se prevode u masinski kod koji se izvrsava direktno na procesoru racunara- faza prevodjenja I izvrsavanja su odvojene. Interpretirani jezici se prevode naredbu po naredbu I odmah zatim se naredba izvrsava-faze prevodjenja I izvrsavanja su isprepletane.