Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Doménové špecifické programovanie s JetBrains MPS

Prinášame vám rozhovor s Vaškom Pechom, v ktorom sa dozviete mnohé o language workbenches, ale predovšetkým o tom, čo je to MPS. Ako vznikol, kam smeruje a v čom sa líši od ostatných nástrojov z dielne JetBrains?

MPS IDE od JetBrains - Články nielen o programovaní

Ahoj, Vašek. Ďakujem, že si si na mňa urobil čas. O MPS ako súčasti portfólia produktov JetBrains sa toho zas tak veľa nevie. Poďme to teda vziať od základu. Čo je to MPS?

Ďakujem za možnosť predstaviť JetBrains MPS. Veľmi rád sa tejto úlohy ujmu. Názov MPS vznikol ako skratka pre Meta-programming System, čo už môže niekomu napovedať, ktorým smerom MPS mieri. Čitatelia pravdepodobne poznajú JetBrains ako firmu pripravujúce vývojové prostredia (IDE) pre mnoho rôznych programovacích jazykov a platforiem. Tejto tradícii je verný aj MPS - ide teda o IDE. Avšak od ostatných našich nástrojov sa v mnohom líšia.

V čom sa líšia?

Trebárs v tom, že podstatná časť vývoja MPS prebieha v Prahe :) Pri ostatných našich nástrojov prevládajú vývojári z mníchovskej a petrohradskej pobočky. MPS by som asi mohol najlepšie zaradiť do kategórie nástrojov zvaných Language Workbenches. To sú prostriedky, ktoré vám rovnako ako klasická vývojové prostredia umožňujú efektívne editovania kódu. Na rozdiel od nich nie sú však viazané vopred definovaným programovacím jazykom. Naopak, dávajú vám možnosť si sami definovať či upravovať jazyky, v ktorých svoj kód potom píšete. K takto definovaným jazykom vám MPS dodá editor schopný napovedať, refaktorovat a analyzovať kód či intuitívne v kóde vyhľadávať. Generátor kódu potom preloží váš jazyk do určeného jazyka nižšej úrovne, najčastejšie do Javy, JavaScriptu alebo C. Za zmienku iste stojí ešte jedna podstatná odlišnosť od ostatných nástrojov z dielne JetBrains - MPS je vyvíjaný pod open-source licenciou (Apache 2) a je teda dostupný všetkým záujemcom zdarma, vrátane zdrojového kódu a on-line podpory.

Existujú podobné nástroje? V čom je MPS iné?

V kategórii Language Workbenches nájdeme celý rad nástrojov. Od prevažne akademických, ako je napríklad Spoofax, cez komerčné ako MetaEdit či úmyselné Software po open-source ako je XText. MPS s nimi pláva na jednej lodi smerom k širšiemu a pohodlnejšiemu nasadenie doménový špecifických jazykov a jazykovej modularite. Na tejto plavbe vsádza MPS na svoj projekčné editor.

To si asi zasluhuje bližšie vysvetlenie ..

Tu je - zatiaľ čo dnešný nástroje definujú jazyky pomocou gramatík a pre pochopenie napísaného kódu používajú parser, ktoré prevedú text do podoby abstraktných syntaktických stromov, v MPS editujete kód priamo v jeho AST podobe. Editor vám vytvára ilúziu editácie textu, zatiaľ čo vaše údery do klávesnice priamo mení dáta v AST. Kód je v podobe AST editovaný, ukladaný na disk, verzovania a generovaný do cieľového jazyka. Odpadá teda nutnosť definovať gramatiku a parser.

Čo presne to prináša?

Pri definícii notácie jazyka sa v MPS nemusíte obmedzovať možnosťami parsera - môžete kombinovať textové a grafické prvky, tabuľky či rôzne formy syntaxe založené na pozícii (aka formulára). Predstavte si napríklad číselné výrazy poprekladané matematickými symbolmi alebo stavový automat popísaný tabuľkou stavov a udalostí. MPS vám navyše umožní podľa potreby prepínať medzi rôznymi vizualizáciami rovnakého kódu. Stavový automat tak môžete chvíľu editovať ako tabuľku a potom prepnúť napríklad do textovej syntaxe a pokračovať tak. Za zmienku ešte stojí veľké možnosti modularizácia jazykov. MPS vám dovolí vziať ľubovoľný jazyk a rozšíriť si jeho syntax i sémantiku podľa vašich potrieb. Alebo môžete nakombinovať jazyky rôznych autorov vrátane ich prípadných rozšírenia a vytvoriť jazyky šité na mieru vášmu projektu. Tu by ste s parsovanými jazykmi len ťažko uspeli.

.<> Václav Pech - JetBrains MPS - Speaking your language - GeeCON Conference 2014

Na čo sa MPS hodí?

Hoci je MPS univerzálny nástroj, väčšina doterajších nasadenie MPS sa zameriava na doménové špecifické jazyky (DSL). Práve ony môžu vyťažiť najviac z vlastností MPS.

Ako a kedy vznikol samotný nápad pustiť sa do projektu ako je MPS?

Sergey Dmitriev, zakladateľ a súčasný prezident spoločnosti JetBrains, začal s prvými pokusmi na MPS už v roku 2003. Po IntelliJ IDEA je MPS teda fakticky druhý najstarší nástroj z dielne JetBrains. Zviezol sa na vlne vtedy rastúceho záujmu o Model Driven Architecture (MDA) a generátory kódu. Do približne rovnakej doby možno datovať aj niektoré ďalšie podobné nástroje, ako napr. Projekt od úmyselné Software. Sergey Dmitriev potom zhrnul svoje poznatky do článku Language Oriented Programming: The Next Programming Paradigm (2004), ktorý znamenal v podstate prvé verejné predstavenie MPS odbornej verejnosti. Martin Fowler v roku 2005 zahrnul MPS vo svojom významnom článku Language Workbenches: The Killer-App for Domain Specific Languages? (2005).

Podľa časovej osi na webe vidím "December 10, 2008: Meta Programming System (MPS) Beta released" čiže po IntelliJ IDEA, ReSharperu, TeamCity atď., Ale oveľa skôr ako PhpStorm, PyCharm, webstore. Aká bola teda pohnútka pustiť sa do sféry "language workbenches", keď bol vývoj IDE a nástrojov v plnom prúde a na strmom vzostupe?

Tých dôvodov bolo viac. V prvom rade možno za MPS nájsť silný osobný záujem pôvodných autorov o odbor a jeho potenciálne možnosti. Súčasne MPS posúva víziu intuitívnych a inteligentných vývojárskych nástrojov, ktorú nájdete za všetkými nástrojmi z našej dielne. A v neposlednom rade tento nástroj otvára nové obchodné možnosti. Prvým projektom, ktorý využil možnosť MPS, bol vývoj systému YouTrack u nás v JetBrains. YouTrack je typická Webovská aplikácie, využívajúce v MPS vytvorenej doménové špecifické jazyky pre definíciu webového užívateľského rozhrania, aplikačného workflow či mapovanie objektov do databázy a databázové dotazy. Od roku 2008 postupne rastie záujem o MPS mimo JetBrains. Či už v akademickej tak komerčnej sfére. Určite stojí za zmienku mbeddr.com, ktorý umožňuje vývoj aplikácií pre malé (embedded) zariadenie v jazyku C. Jeho architektúra ťaží najmä zo značnej modularity jazykov v MPS a je tak možné jazyky prispôsobiť cieľovej doméne - avionika, robotika, elektronické systémy.

Uviesť a presadiť na trhu taký nástroj, to musí byť však beh na dlhú trať, že?

Áno, to určite. Od prvých pokusov do prvých komerčných úspechov to trvalo skoro 10 rokov. Počas tej doby sa MPS postupne premenil z experimentálneho projektu, laborujícího s rôznymi koncepty, v ucelený spoľahlivý nástroj, ktorý je dnes nasadzovaný v prostredí medzinárodných finančných organizácií, elektrotechnických podnikov alebo štátnych inštitúcií.

Modelovanie v MPS - Články nielen o programovaní Modelovanie v MPS - Články nielen o programovaní Modelovanie v MPS - Články nielen o programovaní

"A tu vznikol jedného dňa námet na tutoriál pre začiatočníkov v MPS - jazyk pre modelovanie grafických tvarov." S Vaškom sme sa rozprávali v zázemí kancelárií spoločnosti JetBrains v Prahe.

Aké máte krátkodobé a dlhodobé ciele pre MPS, vízia do budúcnosti?

Nedávno sme vypustili do sveta verziu 3.1, ktorá je pre MPS prelomová v tom, že umožňuje programovať pomocou grafických notáciou a diagramov. Koncept projekčného editora, na ktorom MPS stojí, umožňuje zobrazovať kód užívateľovi v rôznych podobách - od klasickej textové, cez pozičné a tabuľkové notácie až napríklad práve po grafickej diagramy. Tieto diagramy môžu byť navyše ľubovoľne kombinované s textovými notáciu, či byť do textu vnorené. Pre názornosť si napríklad predstavte schému elektrického obvodu, ktoré je vyjadrené graficky, v ktorom jednotlivé prvky môžu byť programované textovým kódom vpisovaným priamo k ich grafickým symbolom. V dlhodobejšom horizonte plánujeme pridať podporu pre projekčné editovanie na webe. Jazyky definované v MPS potom budú môcť byť používané programátorov či doménovými expertmi priamo v prostredí webového prehliadača. Rozširujeme aj ponuku našich služieb okolo MPS. Ako open-source projekt je nutné vývoj MPS financovať z iných zdrojov ako klasické licencované produkty. Ponúkame teda užívateľom MPS široké portfólio podporných a asistenčných služieb.

Chystá JetBrains v najbližšej dobe nejakú možnosť zoznámenie sa s MPS v Čechách?

V rámci konferencie GeeCON, ktorá sa bude konať 23.-24. októbra v Prahe, budem mať hodinovú prezentáciu o MPS, v rámci ktorej by som chcel ukázať čo najviac zo schopností nášho nástroja a možnosťou jeho použitia v praxi.

Ešte raz ďakujem za tvoj čas a prajem MPS do budúcnosti priaznivé vlny a tebe veľa úspechov v ďalších projektoch.

Ďakujem.


 

Všetky články v sekcii
Články nielen o programovaní
Článok pre vás napísal Redakce
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity