Језици специфични за домен

Упознавање

Проф. др Игор Дејановић (igord at uns ac rs)

Креирано 2025-11-04 Tue 13:11, притисни ESC за мапу, Ctrl+Shift+F за претрагу, "?" за помоћ

1. Опште информације

  • Број ЕСПБ: 6
  • Фонд часова: 3+2
  • Предметни наставник: проф. др Игор Дејановић (igord на uns ac rs)
  • Предметни асистент:
    • MSc Балша Шаренац (balsasarenac на uns ac rs)
  • Материјали за наставу су доступни на линку
  • Google група: https://groups.google.com/g/kzi-jsd
    • Обавезно се пријавите!
  • Консултације се обављају по потреби уз најаву на имејл
  • Договор о усменим испитима се обавља преко групе:

2. Циљ предмета

  • Оспособљавање студената за дизајнирање и имплементацију софтверских језика намењених за уске домене људске делатности (Језици специфични за домен - ЈСД, Domain-Specific Language – DSL) уз примену савремених метода, техника и алата.
  • Савладавање модерних технологија за развој DSL-ова уз ослонац на програмских језик Pyhon и алате: Arpeggio и textX.

3. Зашто користити језике специфичне за домен?

  • Прилагођеност домену омогућава једноставније описивање решења проблема. Користе се концепти домена.
  • Поједине студије показују да повећање продуктивности иде и до 1000% у поређењу са језицима опште намене*.
  • Доменски експерти могу директно користити DSL-ове јер је то језик њиховог домена.
  • Идеал коме тежимо:
    • Софтвер инжењери креирају и еволуирају језике, алате и мапирање на циљне техничке платформе.
    • Доменски експерти дефинишу конкретна решења употребом DSL-а.

4. Тематске целине

  1. Увод у ЈСД-ове (мотивација)
  2. Увод у програмски језик Пајтон
  3. Језичке синтаксе и метамоделовање
  4. Текстуалне синтаксе и парсирање
  5. Arpeggio
  6. textX
  7. Подршка за Visual Studio Code textX-LS, textX алати - textX-dev
  8. Поставка пројектног задатка - дискусија
  9. parglare
  10. Трансформације, генерисање кода и интерпретирање - Jinja2, textX-jinja
  11. Студије случаја - DOMMLite, pyFlies
  12. Презентације пројеката и дискусија
  13. Ограничења, систем типова, scoping, linking.
  14. Коеволуција језика

5. Структура оцене

  • Предиспитне обавезе - 70%
    • Пројекат - 50%
    • textX тест - 20%
  • Теоријски део испита (усмени) - 30%

6. Пројекат

  • Тимски рад - тимови од 4±1 студента.
  • Обавезна употреба система за контролу верзија (Git).
  • Обавезна употреба система за управљање пројектом (GitHub).

7. Пројекат - расподела бодова

Активност бодови
Дизајн језика 10
Имплементација језика 20
Подршка за VS Code 12
- Основно (5)  
- LSP (7)  
GitHub активност 8
Укупно 50

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

8. Литература