Language Oriented Programming
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.

