Skip to Content

Испитна питања

  1. Дефиниши софтверски језик.
  2. Дефиниши домен.
  3. Шта је језик специфичан за домен?
  4. Када језик можемо сматрати ЈСД?
  5. У чему је разлика између језика специфичног за домен и језика опште намене?
  6. Шта је главни разлог подизања продуктивности употребом ЈСД?
  7. Опиши проблем менталног мапирања код развоја софтвера.
  8. Како ЈСД утиче на квалитет софтвера?
  9. Како ЈСД утиче на еволуцију и одржавање апликација?
  10. Опиши главне архитектуре приликом израде ЈСД. Предности и мане.
  11. Градивни елементи језика.
  12. Шта је апстрактна синтакса језика? Наведи пример.
  13. Шта је конкретна синтакса језика? Наведи пример.
  14. Како можемо дефинисати семантику језика?
  15. Класификација језика према врсти конкретне синтаксе.
  16. Текстуалне синтаксе - предности и мане.
  17. Графичке синтаксе - предности и мане.
  18. Подела ЈСД према врсти домена. Наведи пример.
  19. Подела ЈСД према начину имплементације (интерни/екстерни). Предности и мане. Наведи пример.
  20. Мане/критике ЈСД.
  21. Шта су језичке радионице?
  22. Приступи у изради језичких радионица.
  23. Шта су пројекциони едитори? У чему се разликују од радионица базираних на парсирању.
  24. Шта је парсирање или синтаксна анализа?
  25. Шта је стабло парсирања или стабло конкретне синтаксе?
  26. Шта је стабло апстрактне синтаксе? По чему се разликује од стабла парсирања? Објасни на примеру.
  27. Шта је секундарна нотација/синтакса?
  28. Како дефинишемо модел?
  29. Које су основне карактеристике модела?
  30. Шта је мета-модел?
  31. Шта је мета-метамодел? Које мета-метамоделе познајеш?
  32. Шта је мета-језик?
  33. Објасни стек за мета-моделовање. Паралела са класичним програмским језицима.
  34. Шта представљају “мета” везе (conformsTo) између мета-нивоа? Каква је разлика између веза истанцирања унутар једног мета-нивоа и између мета-нивоа?
  35. Које операције користимо при мета-моделовању?
  36. Шта је апстракција? Између којих мета-нивоа стека за мета-моделовање се користи?
  37. Шта је класификација? Каква је веза са мета-нивоима стека за мета-моделовање? Где се може користити?
  38. Шта је генерализација?
  39. Шта су токен модели а шта модели типова?
  40. Шта је MOF?
  41. Шта је ECore?
  42. Објасни усклађеност елемената кроз мета-нивое на примеру.
  43. Објасни како се спроводи анализа домена.
  44. Шта је свеприсутни језик?
  45. Објасни трансформације програма. Која је разлика између трансформације унутар истог језика и између различитих језика? Наведи примере.
  46. Шта је рефакторисање у контексту трансформације програма?
  47. Опиши индуктивни и дедуктивни приступ при дефинисању домена.
  48. Објасни однос између скупа програма домена (\(P_D\)) и скупа програма написаног на неком језику (\(P_l\)).
  49. Шта је надапроксимација и подапроксимација домена језиком? Које су практичне импликације?
  50. Објасни концепт хијерархије домена и које користи доноси.
  51. Шта је лексичка анализа? Дефиниши токен и лексему.
  52. Опиши проблеме који се могу јавити приликом лексичке анализе (“lexer hack”).
  53. Шта је формална граматика и од којих елемената се састоји?
  54. Објасни хијерархију граматика по Чомском.
  55. Шта је извођење (деривација)? Која је разлика између реченичне форме и реченице?
  56. Објасни лево и десно извођење.
  57. Шта је вишезначна граматика? Објасни на примеру “висећег else” (dangling else).
  58. Како се може разрешити вишезначност граматике?
  59. Шта је лева рекурзија и зашто представља проблем код неких врста парсера?
  60. Како се елиминише директна лева рекурзија?
  61. Упореди силазне (top-down) и узлазне (bottom-up) стратегије парсирања.
  62. Објасни концепт предувида (lookahead) у процесу парсирања.
  63. Шта је стратегија враћања (backtracking) код парсера? Које су предности и мане?
  64. Упореди LL и LR парсере.
  65. Шта су граматике израза за парсирање (PEG) и по чему се разликују од контекстно слободних граматика?
  66. Шта је “packrat” парсер и како обезбеђује линеарно време извршавања?
  67. Упореди приступ израде парсера помоћу генератора и помоћу интерпретера граматика.
  68. Шта су генерализовани парсери и која је њихова основна предност у односу на детерминистичке LL/LR парсере?
  69. Како генерализовани парсери, попут GLR, рукују са вишезначним граматикама?
  70. Шта је шума парсирања (Parse Forest) и у ком контексту се користи?
  71. Након што генерализовани парсер врати више могућих стабала, како се може извршити разрешавање вишезначности (дисамбигвација)?
  72. Објасни принцип рада GLR парсера. Како он симулира недетерминистички алгоритам?
  73. Шта су синтаксни предикати у PEG граматикама и чему служе? Наведи пример.
  74. Која је разлика између оператора избора (|) у CFG и оператора уређеног избора (/) у PEG?
  75. Која су два основна прагматична начина за дефинисање семантике језика? Укратко их објасни.
  76. Наведи и укратко опиши основне приступе у генерисању програмског кода.
  77. Објасни приступ генерисању кода помоћу шаблона (Template Engines). Који су основни елементи те архитектуре?
  78. Упореди “print” приступ генерисању кода са приступом базираним на шаблонима. Које су предности и мане?
  79. Шта је ин-лајн генерисање кода и који алат се најчешће користи за његову имплементацију? Наведи пример.
  80. Које су добре праксе приликом генерисања кода у циљу очувања читкости и лакшег одржавања?
  81. Опиши проблем интеграције ручно писаног и генерисаног кода. Зашто је важно решити овај проблем?
  82. Упореди два начина за очување ручних измена у коду: заштићене секције (protected regions) и коришћење могућности језика (нпр. наслеђивање).
  83. Какав је однос између генерисаног кода и система за контролу верзија (VCS)? Када генерисани код треба, а када не треба додавати у репозиторијум?
  84. Наведи и укратко опиши (може и дијаграмом) барем два обрасца за интеграцију генерисаног и ручно писаног кода у објектно-оријентисаним језицима.
  85. Шта је интерпретер у контексту извршавања модела? Упореди предности и мане интерпретирања у односу на генерисање кода.
  86. Када бисте се одлучили за генерисање кода, а када за интерпретацију приликом имплементације ЈСД? Наведи факторе који утичу на одлуку.
  87. Објасните протокол језичких сервера (Language Server Protocol - LSP). Који проблем решава?