S clanky venovanymi tematu Domain Specific Languages (DSL) a Language Oriented Programming (LOP) se ted roztrhl pytel. Minuly tyden nich psal Michael Jurek, tento zase TheServerSide.
O co tedy jde? No v podstate o dalsi stupen volnosti. Az doted jsme byli drzeni v okovech jednotlivych jazyku, LOP nam umoznuje si ten jazyk navrhnout. Microsoft bude mit Coronu a javisti budou mit co nevidet plugin do IDEAi. Vazne se na to tesim. Spousta lidi ma problem pochopit objektove programovani, s timhle staci v tymu jeden chytry clovek, ktery da dohromady sikovny DSL a ostatni pak ani nemusi o objektech nic vedet, protoze namapovani problemu do daneho domenoveho jazyka bude lidsky pristupnejsi. Stejne tak to muze byt soumrak design patterns – ty uz budou primo zabudovany v DSL.
Pozn.: Take vidim ty CVcka plna exotickych jazyku jako – Filemonol, BSQL v Oracle apod.
V moc peknem pdf Sergey Dmitrieva o Intellij implementaci LOP – MetaProgrammingSystem (MPS) se muzeme mimo jine take docist, ze grafy nejsou pro metamodelovani prilis vhodne. Moje rec, UML mi taky prijde pro navrh systemu spis na obtiz – mam o tom zvlastni post, ktery publishnu do konce tydne.
Dalsi zajimavou veci, ktera souvisi s LOP je nastroj pro vyvoj v nove navrzenem jazyku. Sergey dava k dispozici tzv. Editor language, ktery umoznuje definice vlastnich editoru. To je svoboda. Intellij navic bude umoznovat vlozit veci jako auto-completion, syntax highlighting ci refactoring. To je ulet.
Posledni fazi vyvoje je pak transformace z DSL do ciloveho jazyka. Vetsina MDA nastroju pro UML pouziva XMI jako vstup a transformuje ho do vysledneho jazyka. Srovnavat tyhle pristupy nema cenu, protoze v LOP si vlastne UML muzu nadefinovat sam. MPS definuje 3 zpusoby – iterativni pruchod DSL programem, MQL jazyk pro hledani casti pro transformaci a transformaci celku. Prilis jsem to nedal do detailu, takze se tu nebudu poustet do vetsich akci. 🙂
Abychom nemuseli pokazde definovat zakladni veci jako aritmeticke operace, prace s poli, kolekcemi apod., poskytne nam MPS frameworky – jiz hotove DSL, ktere je mozne reusnout – jsou jimi Base Language, Collection Language a UI Language.
Ted to jen chce ty chytre lidi, kteri budou umet premyslet jeste o uroven vys nez doposud. Moc se tesim na novou Ideu.
hmm zajimave, takze se dostavame k tomu, co NkD nazyva kresli panacka co chodi zleva doprava a strili. 🙂
Pocuvajte toto co je za hovadinu. Po neuspechu UML lebo je obsirne a zbytocne a hlavne neriesi zlozitost ale ju vyraba. Prisla este vacsia chujovina , tento krat kapitalna degenerovana Buschovina.. Musi to niekto povedat, niekolko krat obtiaznejsia a zlozitejsia chujovina superabstraktna vyprdenost DSL. Nieco ako linux v programovani . Otvorene treba povedat ze tyto ludia nevedia nic o zakladoch filozofie. Ved to je jasne ze zlozity problem sa da riesit este zlozitejsie. Len treba k tomu sikovneho cloveka. To vie urobit vymysliet aj idiot spomocnej skoly. A to ze spoustu lidi ma problem s objektami . To snad ani neni pravda. Toto je rovno sialene.
to memo: DSL a UML jdou proti sobe. UML se snazi postihnout vsechny mozne domeny, kdezto DSL se zameruje uzce. Je dokonce dane domene blize, nez-li programovaci jazyk jako takovy. Prvnim stupnem k DSL jsou frameworky, ktery vam v danem programovacim jazyce poskytuji konstrukty pro danou domenu. DSL vas zbavuje techto opisu a primo poskytuje gramatiku a semantiku pro danou oblast. Mozna vas zmatla ona zminovana transformace z DSL do programovaciho jazyku. Toto je (byla) IDEA vychytavka, abyste nemusel psat interpreter ci kompilar sam.
V minulosti jsem pracoval s nekolika DSL, napr. mam za sebou uspesny projekt, kde jsme vytvorili DSL pro tvorbu vlastni TELCO modelu.
Dalsim zajimavym DSL, se kterym jsem se setkal, byl skriptovaci jazyk pro oblast pricingu (postaveny na rhino).