Језици специфични за домен
Опште информације
- Број ЕСПБ: 6
- Фонд часова: 3+2
- Предметни наставник: проф. др Игор Дејановић (igord на uns ac rs)
-
Предметни асистент:
- MSc Балша Шаренац (balsasarenac на uns ac rs)
-
Материјали за наставу су доступни на линку
-
Google група: https://groups.google.com/g/kzi-jsd
- Обавезно се пријавите!
- Консултације се обављају по потреби уз најаву на имејл
-
Договор о усменим испитима се обавља преко групе:
- https://groups.google.com/g/dejanovic-ispiti
- Не заборавите да се пријавите када положите практични део!
Циљ предмета
- Оспособљавање студената за дизајнирање и имплементацију софтверских језика намењених за уске домене људске делатности (Језици специфични за домен - ЈСД, Domain-Specific Language – DSL) уз примену савремених метода, техника и алата.
- Савладавање модерних технологија за развој DSL-ова уз ослонац на програмских језик Pyhon и алате: Arpeggio и textX.
Зашто користити језике специфичне за домен?
- Прилагођеност домену омогућава једноставније описивање решења проблема. Користе се концепти домена.
- Поједине студије показују да повећање продуктивности иде и до 1000% у поређењу са језицима опште намене*.
- Доменски експерти могу директно користити DSL-ове јер је то језик њиховог домена.
-
Идеал коме тежимо:
- Софтвер инжењери креирају и еволуирају језике, алате и мапирање на циљне техничке платформе.
- Доменски експерти дефинишу конкретна решења употребом DSL-а.
Тематске целине
- Увод у ЈСД-ове (мотивација)
- Увод у програмски језик Пајтон
- Језичке синтаксе и метамоделовање
- Текстуалне синтаксе и парсирање
- Arpeggio
- textX
- Подршка за Visual Studio Code textX-LS, textX алати - textX-dev
- Поставка пројектног задатка - дискусија
- parglare
- Трансформације, генерисање кода и интерпретирање - Jinja2, textX-jinja
- Студије случаја - DOMMLite, pyFlies
- Презентације пројеката и дискусија
- Ограничења, систем типова, scoping, linking.
- Коеволуција језика
Структура оцене
-
Предиспитне обавезе - 60%
- Пројекат - 50%
- textX тест - 10%
- Теоријски део испита (усмени) - 40%
Пројекат
- Тимски рад - тимови од 4±1 студента.
- Обавезна употреба система за контролу верзија (Git).
- Обавезна употреба система за управљање пројектом (GitHub).
Пројекат - расподела бодова
| Активност | бодови |
|---|---|
| Дизајн језика | 10 |
| Имплементација језика | 20 |
| Подршка за VS Code | 12 |
| - Основно (5) | |
| - LSP (7) | |
| GitHub активност | 8 |
| Укупно | 50 |
И поред тимског рада сви бодови се добијају индивидуално.
Литература
-
Основна
- Игор Дејановић, Језици специфични за домен, Факултет техничких наука, Нови Сад, 2021. (доступно у скриптарници ФТН-а)
-
Додатна
- Meinte Boersma, Building User-Friendly DSLs, Manning, 2024.
-
- Völter, [[http://dslbook.org/][/DSL Engineering: Designing, Implementing and Using Domain-Specific
Languages/]]. 2013
-
- Kelly and J.-P. Tolvanen, /Domain-Specific Modeling: Enabling Full Code
Generation/. Wiley-IEEE Computer Society Pr, March 2008
- Federico Tomassetti, The complete guide to (external) Domain Specific Languages, February 2017.
- Alessio Stalla, Quick Domain-Specific Languages in Python with textX