Jezici specifični za domen
Upoznavanje
Kreirano 2024-10-11 Fri 11:10, pritisni ESC za mapu, Ctrl+Shift+F za pretragu, ? za pomoć
1. 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
- Konsultacije se obavljaju po potrebi uz najavu na email
- Dogovor o usmenim ispitima se obavlja preko grupe:
2. 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.
3. 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.
4. 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
5. Struktura ocene
- Predispitne obaveze - 70%
- Projekat - 50%
- textX test - 20%
- Teorijski deo ispita (usmeni) - 30%
6. Projekat
- Timski rad - timovi od 4±1 studenta.
- Obavezna upotreba sistema za kontrolu verzija (Git).
- Obavezna upotreba sistema za upravljanje projektom (GitHub).
7. 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.
8. 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.
- M. Völter, DSL Engineering: Designing, Implementing and Using Domain-Specific
Languages. 2013
- S. 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