Doménově specifické programování s JetBrains MPS

Ostatní Doménově specifické programování s JetBrains MPS

Přinášíme vám rozhovor s Vaškem Pechem, ve kterém se dozvíte mnohé o language workbenches, ale především o tom, co je to MPS. Jak vznikl, kam směřuje a v čem se liší od ostatních nástrojů z dílny JetBrains?

MPS IDE od JetBrains

Ahoj, Vašku. Děkuji, že sis na mě udělal čas. O MPS jako součásti portfolia produktů JetBrains se toho zas tak moc neví. Pojďme to tedy vzít od základu. Co je to MPS?

Děkuji za možnost představit JetBrains MPS. Velmi rád se tohoto úkolu ujmu. Název MPS vznikl jako zkratka pro Meta-programming System, což již může někomu napovědět, kterým směrem MPS míří. Čtenáři nejspíše znají JetBrains jako firmu připravující vývojová prostředí (IDE) pro mnoho různých programovacích jazyků a platforem. Této tradici je věren i MPS - jde tedy o IDE. Nicméně od ostatních našich nástrojů se v mnohém liší.

V čem se liší?

Třeba v tom, že podstatná část vývoje MPS probíhá v Praze :) U ostatních našich nástrojů převládají vývojáři z mnichovské a petrohradské pobočky. MPS bych asi mohl nejlépe zařadit do kategorie nástrojů zvaných Language Workbenches. To jsou prostředky, které vám stejně jako klasická vývojová prostředí umožňují efektivní editování kódu. Na rozdíl od nich nejsou ovšem vázány předem definovaným programovacím jazykem. Naopak, dávají vám možnost si sami definovat či upravovat jazyky, ve kterých svůj kód poté píšete. K takto definovaným jazykům vám MPS dodá editor schopný napovídat, refaktorovat a analyzovat kód či intuitivně v kódu vyhledávat. Generátor kódu poté přeloží váš jazyk do určeného jazyka nižší úrovně, nejčastěji do Javy, JavaScriptu nebo C. Za zmínku jistě stojí ještě jedna podstatná odlišnost od ostatních nástrojů z dílny JetBrains - MPS je vyvíjen pod open-source licencí (Apache 2) a je tedy dostupný všem zájemcům zdarma, včetně zdrojového kódu a on-line podpory.

Existují podobné nástroje? V čem je MPS jiné?

V kategorii Language Workbenches nalezneme celou řadu nástrojů. Od převážně akademických, jako je například Spoofax, přes komerční jako MetaEdit či Intentional Software po open-source jako je XText. MPS s nimi pluje na jedné lodi směrem k širšímu a pohodlnějšímu nasazení doménově specifických jazyků a jazykové modularitě. Na této plavbě sází MPS na svůj projekční editor.

To si asi zasluhuje bližší vysvětlení..

Tady je - zatímco dnešní nástroje definují jazyky pomocí gramatik a pro pochopení napsaného kódu používají parsery, které převedou text do podoby abstraktních syntaktických stromů, v MPS editujete kód přímo v jeho AST podobě. Editor vám vytváří iluzi editace textu, zatímco vaše údery do klávesnice přímo mění data v AST. Kód je v podobě AST editován, ukládán na disk, verzován a generován do cílového jazyka. Odpadá tedy nutnost definovat gramatiku a parser.

Co přesně to přináší?

Při definici notace jazyka se v MPS nemusíte omezovat možnostmi parseru - můžete kombinovat textové a grafické prvky, tabulky či různé formy syntaxe založené na pozici (aka formuláře). Představte si například číselné výrazy proložené matematickými symboly nebo stavový automat popsaný tabulkou stavů a událostí. MPS vám navíc umožní podle potřeby přepínat mezi různými vizualizacemi stejného kódu. Stavový automat tak můžete chvíli editovat jako tabulku a pak přepnout třeba do textové syntaxe a pokračovat tak. Za zmínku ješte stojí velké možnosti modularizace jazyků. MPS vám dovolí vzít libovolný jazyk a rozšířit si jeho syntaxi i sémantiku podle vašich potřeb. Nebo můžete nakombinovat jazyky různých autorů včetně jejich případných rozšíření a vytvořit jazyky šité na míru vašemu projektu. Tady byste s parsovanými jazyky jen těžko uspěli.

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

Na co se MPS hodí?

Ačkoliv je MPS univerzální nástroj, většina dosavadních nasazení MPS se zaměřuje na doménově specifické jazyky (DSL). Právě ony mohou vytěžit nejvíce z vlastností MPS.

Jak a kdy vznikl samotný nápad pustit se do projektu jako je MPS?

Sergey Dmitriev, zakladatel a současný prezident společnosti JetBrains, začal s prvními pokusy na MPS už v roce 2003. Po IntelliJ IDEA je MPS tedy fakticky druhý nejstarší nástroj z dílny JetBrains. Svezl se na vlně tehdy rostoucího zájmu o Model Driven Architecture (MDA) a generátory kódu. Do přibližně stejné doby lze datovat i některé další podobné nástroje, jako např. projekt od Intentional Software. Sergey Dmitriev poté shrnul své poznatky do článku Language Oriented Programming: The Next Programming Paradigm (2004), který znamenal v podstatě první veřejné představení MPS odborné veřejnosti. Martin Fowler v roce 2005 zahrnul MPS ve svém významném článku Language Workbenches: The Killer-App for Domain Specific Languages? (2005).

Dle časové osy na webu vidím „December 10, 2008: Meta Programming System (MPS) Beta released“ čili po IntelliJ IDEA, ReSharperu, TeamCity atd., ale mnohem dříve než PhpStorm, PyCharm, WebStorm. Jaká byla tedy pohnutka pustit se do sféry „language workbenches“, když byl vývoj IDE a nástrojů v plném proudu a na strmém vzestupu?

Těch důvodů bylo více. V první řadě lze za MPS najít silný osobní zájem původních autorů o obor a jeho potenciální možnosti. Současně MPS posouvá vizi intuitivních a inteligentních vývojářských nástrojů, kterou najdete za všemi nástroji z naší dílny. A v neposlední řadě tento nástroj otevírá nové obchodní možnosti. Prvním projektem, který využil možnosti MPS, byl vývoj systému YouTrack u nás v JetBrains. YouTrack je typická webovská aplikace, využívající v MPS vytvořené doménově specifické jazyky pro definici webového uživatelského rozhraní, aplikačního workflow či mapování objektů do databáze a databázové dotazy. Od roku 2008 postupně roste zájem o MPS mimo JetBrains. Ať již v akademické tak komerční sféře. Určitě stojí za zmínku mbeddr.com, který umožňuje vývoj aplikací pro malá (embedded) zařízení v jazyce C. Jeho architektura těží zejména ze značné modularity jazyků v MPS a je tak možné jazyky přizpůsobit cílové doméně - avionika, robotika, elektronické systémy.

Uvést a prosadit na trhu takový nástroj, to musí být ovšem běh na dlouhou trať, že?

Ano, to určitě. Od prvních pokusů do prvních komerčních úspěchů to trvalo skoro 10 let. Během té doby se MPS postupně proměnil z experimentálního projektu, laborujícího s různými koncepty, v ucelený spolehlivý nástroj, který je dnes nasazován v prostředí mezinárodních finančních organizací, elektrotechnických podniků či státních institucí.

Modelování v MPS Modelování v MPS Modelování v MPS

“A tady vznikl jednoho dne námět na tutoriál pro začátečníky v MPS - jazyk pro modelování grafických tvarů.” S Vaškem jsme si povídali v zázemí kanceláří společnosti JetBrains v Praze.

Jaké máte krátkodobé a dlouhodobé cíle pro MPS, vize do budoucna?

Nedávno jsme vypustili do světa verzi 3.1, která je pro MPS průlomová v tom, že umožňuje programovat pomocí grafických notací a diagramů. Koncept projekčního editoru, na kterém MPS stojí, umožňuje zobrazovat kód uživateli v různých podobách - od klasické textové, přes poziční a tabulkové notace až třeba právě po grafické diagramy. Tyto diagramy mohou být navíc libovolně kombinovány s textovými notacemi, či být do textu vnořeny. Pro názornost si třeba představte schéma elektrického obvodu, které je vyjádřeno graficky, v němž jednotlivé prvky mohou být programovány textovým kódem vpisovaným přímo k jejich grafickým symbolům. V dlouhodobějším horizontu plánujeme přidat podporu pro projekční editování na webu. Jazyky definované v MPS pak budou moci být používány programátory či doménovými experty přímo v prostředí webovského prohlížeče. Rozšiřujeme také nabídku našich služeb kolem MPS. Jako open-source projekt je nutné vývoj MPS financovat z jiných zdrojů než klasické licencované produkty. Nabízíme tedy uživatelům MPS široké portfolio podpůrných a asistenčních služeb.

Chystá JetBrains v nejbližší době nějakou možnost seznámení se s MPS v Čechách?

V rámci konference GeeCON, která se bude konat 23.-24. října v Praze, budu mít hodinovou prezentaci o MPS, v jejímž rámci bych rád ukázal co nejvíce ze schopností našeho nástroje a možností jeho použití v praxi.

Ještě jednou děkuji za tvůj čas a přeji MPS do budoucna příznivé vlny a tobě hodně úspěchů v dalších projektech.

Děkuji.


 

  Aktivity (1)

Článek pro vás napsal Redakce
Avatar

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Články nejen o programování
Miniatura
Následující článek
Elektroničtí dinosauři na Chodově

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!