MPS: Vytvořte si vlastní IDE nebo programovací jazyk

ITBiz.cz , 30. říjen 2017 06:30 0 komentářů
MPS: Vytvořte si vlastní IDE nebo programovací jazyk

Svět programování prochází různými změnami. Prostředí MPS umožňuje definici vlastních programovacích jazyků, inspiruje se doménově specifickými jazyky, ale jde výrazně dál. Radiálně novou podobu získává i vývojové rozhraní, které podporuje různá zobrazení i maximum struktur nad jediným kódem v podobě abstraktního stromu.

Společnost JetBrains vytváří základní komponenty pro Android Studio (IntelliJ), tedy hlavní programovací nástroj pro Android přímo od Googlu. Vedle toho firma koordinuje vývoj vlastního programovacího jazyka Kotlin a přišla rovněž s nástrojem MPS, který podle ní přináší nový přístup k samotnému programování.

Viz také: Kotlin – vycházející hvězda mezi programovacími jazyky

MPS (neboli Meta-Programming System) je na jednu stranu vývojové prostředí, ale současně funguje o úroveň výš – kromě samotného programování si v MPS může vývojář de facto vytvořit i svůj vlastní jazyk. V rámci prostředí pak dostane k dispozici inteligentní editor kódu a nástroj, který nakonec odladěný kód převádí do nějakého „standardního“ jazyka typu Javy. To je umožněno tím, že JetBrains zde může využít svou technologii IntelliJ. Z MPS lze ale generovat i kód v C, XML, FHTML, PDF, LaTeX, JavaScript a další; vývojář se proto nemusí zabývat otázkami kompilátorů/interpreterů.

Podpora pro vytvoření nového programovacího jazyka znamená, že MPS cílí na uživatele doménově specifických jazyků (DSL). Do kategorie DSL patří především jazyky zaměřené na řešení určitého problému, v rámci kterého přinášejí oproti plnohodnotným programovacím jazykům některé výhody – kód bývá snadno srozumitelný nejen pro samotné programátory a cílení na konkrétní oblast zvyšuje produktivitu vývoje (rychlost). Doménově specifické jazyky mohou být určeny jak pro speciální problémy obecných projektů (např. návrhy uživatelských rozhraní), tak i přímo na konkrétní obory, třeba návrh elektronických systémů, modelování legislativních norem, dokumentaci softwarových systémů nebo finanční služby. MPS cílí na uživatele DSL, přitom má ale ambici tyto jazyky v jejich dnes používané podobě nahradit.

Vývojář v MPS nemusí svůj jazyk vytvářet od nuly, ale může začít syntaxí nějakého již oblíbeného jazyka (obecného i DSL) a dále si ji rozšířit či jinak upravit. Různé jazyky lze rovněž kombinovat; pokud by vývojář chtěl něco takového udělat jinak a vytvořil zdrojový kód kombinací více jazyků (včetně jazyků DSL), narazí na obrovské problémy, jak vůbec taktový program převést do spustitelné podoby.

Právě schopnost snadno kombinovat jazyky, potenciálně od různých autorů, považuje společnost JetBrains za hlavní sílu MPS.

Pro libovolnou smysluplnou kombinaci jazyků umí MPS vytvořit dedikované IDE a lze tak tyto jazyky distribuovat společně s nástrojem pro jejich efektivní použití. Taková jednoúčelová IDE je možno vhodně přizpůsobit zvykům cílové skupiny uživatelů a podpořit tak účel daného doménově specifického jazyka.

Projekční editor

Klíčovou součást MPS, která dodává hlavní funkcionalitu, představuje tzv. projekční editor. Standardní vývojová prostředí (IDE) pro běžné programovací jazyky dokáží ze zdrojového kódu vytvořit abstraktní syntaktické stromy (AST), v nichž je pak vidět logika programu. Pro IDE slouží AST jako základní datová struktura pro podporu navigace v kódu, refaktorování, vyhledávání, či analýzu.

Nicméně představte si, že si vytváříte vlastní jazyk. Pro převod mezi těmito textovou podobou kódu a jeho AST reprezentací byste si museli vytvořit i svůj vlastní parser, který by nejspíš měl jen omezenou funkčnost. Díky projekčnímu editoru v MPS toto všechno odpadá, kód se ukládá rovnou a pouze v podobě „stromu“ – bez ohledu na to, v jaké podobě ho vývojář edituje. Není třeba tvořit žádný parser ani při vytváření stromu kontrolovat syntaktickou korektnost. Základní prvky stromu, tj. uzly, jejich vlastnosti, potomci a odkazy mezi nimi, plně popisují kód a umožňují generovat výstup v cílovém jazyce.

To, že není nutné kód parsovat z textové podoby, výrazně zvyšuje bohatství struktur, které lze využívat při návrhu jazyka i samotném vývoji. Kromě vlastní programovací „gramatiky“ mohou být součástí kódu stejně dobře tabulky, diagramy, matematické objekty (vzorečky, matice...), grafická informace i text, vše naskládané vedle sebe do jediného prostředí, tj. např. texty vedle prvků diagramu. Mezi různými zobrazeními kódu lze snadno přepínat, diagramy editovat v prostředí podobném UML, tabulky v okně typu tabulkovém procesoru a vlastní kód v textovém editoru. Kód/strom přitom pořád zůstává jediný a jednotný.

Open source licence

Vývoj MPS ve společnosti JetBrains začal krátce po roce 2000, první veřejná beta verze byla vydána v roce 2008. Aktuální verze má číslo MPS 2017.3, respektive MPS 2017.3 EAP (Early Access Program) 4. Prostředí MPS je k dispozici jako open source pod licencí Apache 2. Zvolená licence přitom po vývojářích nepožaduje, aby odvozená díla byla dále šířena se zachováním licence.

Další informace

MPS – základní idea

MPS – aktuální informace/novinky na blogu JetBrains

Projekční editor – představení nástroje

Doménově specifické jazyky


Komentáře

RSS 

Komentujeme

Agilita a devops, přepracování a vyhoření

Pavel Houser , 12. červenec 2018 12:30
Pavel Houser

Michael Cote na The Register upozorňuje na častý problém: nové „agilní“ metody vývoje, všechny příst...

Více







RSS 

Zprávičky

Hackeři ukradli zdravotní záznamy 1,5 milionu Singapurců

ČTK , 20. červenec 2018 14:37

Cílem útoku bylo prý získat podrobné údaje o singapurském premiérovi a také o lécích, které užíval....

Více 0 komentářů

Ericsson je díky úsporám v mírném zisku

ČTK , 20. červenec 2018 11:36

Švédský podnik se v poslední době potýkal se slábnoucí poptávkou telekomunikačních operátorů....

Více 0 komentářů

Čip v občanském průkazu si zatím aktivovala třetina lidí

ČTK , 20. červenec 2018 08:00

Prostřednictvím Portálu občana lidé mají přístup např. k údajům o důchodu nebo si mohou pořídit výpi...

Více 0 komentářů

Kalendář

04. 08.

09. 08.
Black Hat USA 2018
09. 08.

12. 08.
DEF CON 26
06. 09.

07. 09.
Humusoft Technical Computing Camp 2018

Starší zprávičky

Red Hat Ansible Engine přináší další automatizaci cloudu

Pavel Houser , 19. červenec 2018 13:52

Nejnovější verze platformy Red Hat Ansible Engine 2.6 rozšiřuje automatizaci cloudů AWS, Google Clou...

Více 0 komentářů

Samsung chystá na příští rok telefon se sklopným displejem

ČTK , 19. červenec 2018 10:00

Displej půjde složit na polovinu jako peněženku. Ve složeném stavu je na přední straně přístroje men...

Více 0 komentářů

Internet Mall snížil ztrátu, tržby mu vzrostly na 7,2 miliardy Kč

ČTK , 18. červenec 2018 17:29

Internet Mall mj. investuje do distribučního centra v Jirnech u Prahy, které by mělo sloužit 7 střed...

Více 0 komentářů

Google dostal kvůli Androidu od EK rekordní pokutu 4,34 mld. eur (aktualizace)

ČTK , 18. červenec 2018 13:26

Google využil Android k upevnění dominantní pozice svého internetového vyhledávače, uvádí EK....

Více 0 komentářů