Jezici specifični za domen
Opšte informacije
- Broj ESPB: 6
- Fond časova: 3+2
- Predmetni nastavnik: prof. dr Igor Dejanović (igord na uns ac rs)
-
Predmetni asistent:
- MSc Balša Šarenac (balsasarenac na uns ac rs)
-
Materijali za nastavu su dostupni na linku
-
Google grupa: https://groups.google.com/g/kzi-jsd
- Obavezno se prijavite!
- Konsultacije se obavljaju po potrebi uz najavu na email
-
Dogovor o usmenim ispitima se obavlja preko grupe:
- https://groups.google.com/g/dejanovic-ispiti
- Ne zaboravite da se prijavite kada položite praktični deo!
Cilj predmeta
- Osposobljavanje studenata za dizajniranje i implementaciju softverskih jezika namenjenih za uske domene ljudske delatnosti (Domain-Specific Language – DSL) uz primenu savremenih metoda, tehnika i alata.
- Savladavanje modernih tehnologija za razvoj DSL-ova uz oslonac na programskih jezik Pyhon i alate: Arpeggio i textX.
Zašto koristiti jezike specifične za domen?
- Prilagođenost domenu omogućava jednostavnije opisivanje rešenja problema. Koriste se koncepti domena.
- Pojedine studije pokazuju da povećanje produktivnosti ide i do 1000% u poređenju sa jezicima opšte namene*.
- Domenski eksperti mogu direktno koristiti DSL-ove jer je to jezik njihovog domena.
-
Ideal kome težimo:
- Softver inženjeri kreiraju i evoluiraju jezike, alate i mapiranje na ciljne tehničke platforme.
- Domenski eksperti definišu konkretna rešenja upotrebom DSL-a.
Tematske celine
- Uvod u DSL-ove (motivacija)
- Uvod u programski jezik Pyhon
- Jezičke sintakse i meta-modelovanje
- Tekstualne sintakse i parsiranje
- Arpeggio
- textX
- Podrška za Visual Studio Code textX-LS, textX alati - textX-dev
- Postavka projektnog zadatka - diskusija
- parglare
- Transformacije, generisanje koda i interpretiranje - Jinja2, textX-jinja
- Studije slučaja - DOMMLite, pyFlies
- Prezentacije projekata i diskusija
- Ograničenja, sistem tipova, scoping, linking.
- Koevolucija jezika
Struktura ocene
-
Predispitne obaveze - 70%
- Projekat - 50%
- textX test - 20%
- Teorijski deo ispita (usmeni) - 30%
Projekat
- Timski rad - timovi od 4±1 studenta.
- Obavezna upotreba sistema za kontrolu verzija (Git).
- Obavezna upotreba sistema za upravljanje projektom (GitHub).
Projekat - raspodela bodova
Aktivnost | bodovi |
---|---|
Dizajn jezika | 10 |
Implementacija jezika | 20 |
Podrška za VS Code | 12 |
- Osnovno (5) | |
- LSP (7) | |
GitHub aktivnost | 8 |
Ukupno | 50 |
I pored timskog rada svi bodovi se dobijaju individualno.
Literatura
-
Osnovna
- Igor Dejanović, Jezici specifični za domen, Fakultet tehničkih nauka, Novi Sad, 2021. (dostupno u skriptarnici FTN-a)
-
Dodatna
- 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