http://lib.custis.ru/index.php?title=Application_Developer_Days_2:_%D0%9E%D1%82%D1%87%D0%B5%D1%82_%D0%9A%D1%83%D0%B4%D1%80%D1%8F%D0%B2%D1%86%D0%B5%D0%B2%D0%B0_%D0%92.%D0%91/Language_Oriented_Programming_%D0%B2_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B8&feed=atom&action=historyApplication Developer Days 2: Отчет Кудрявцева В.Б/Language Oriented Programming в действии - История изменений2024-03-28T12:21:33ZИстория изменений этой страницы в викиMediaWiki 1.26.4http://lib.custis.ru/index.php?title=Application_Developer_Days_2:_%D0%9E%D1%82%D1%87%D0%B5%D1%82_%D0%9A%D1%83%D0%B4%D1%80%D1%8F%D0%B2%D1%86%D0%B5%D0%B2%D0%B0_%D0%92.%D0%91/Language_Oriented_Programming_%D0%B2_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B8&diff=25826&oldid=prevStasFomin: Новая страница: «Докладчик из самой, вероятно, известной российской (условно) фирмы-производителя ПО [[Language ...»2011-05-15T16:46:07Z<p>Новая страница: «Докладчик из самой, вероятно, известной российской (условно) фирмы-производителя ПО [[Language ...»</p>
<p><b>Новая страница</b></p><div>Докладчик из самой, вероятно, известной российской (условно) фирмы-производителя ПО [[Language Oriented Programming (LOP) в действии (Максим Мазин, ADD-2011)|рассказывал про среду разработки DSL]], которая называется [http://www.jetbrains.com/mps/ MPS (Meta Programming System)].<br />
<br />
=== Про DSL вообще ===<br />
<br />
Я пришел не с начала, может быть поэтому мне показалось, что автор так и не смог объяснить, как же оно работает. Мое понимание основано скорее на чтении сайта JetBrains. Поэтому — только несколько отрывочных тезисов.<br />
<br />
* Написание програм на DSL — это очень эффективно<br />
* Разработка собственных DSL — очень дорого само по себе, кроме того порождает несколько проблем, которые только увеличивают затраты:<br />
** Отсутствие поддержки со стороны IDE<br />
** Разные расширения, основанные на макроподстановке, могут конфликтовать друг с другом<br />
<br />
Пример с интерполяцией (подстановкой) строк:<br />
<br />
Расширения 1:<br />
int SomeCount = 1;<br />
var message = "Count is [SomeCount]";<br />
<br />
Расширение 2:<br />
int SomeCount = 1;<br />
var message = "Count is %[SomeCount]"<br />
<br />
* Традиционный способ борьбы с этой проблемой — это работа через AST (''Abstract Syntax Tree'')<br />
** Ранее использовали графические языки<br />
** MPS — текстово-ориентированная среда для работы с AST<br />
<br />
=== Про практическую работу в MPS ===<br />
<br />
Как работают в MPS?<br />
<br />
* Определяют элементы языка (AST)<br />
* Определяют систему типов<br />
* Определяют конкретный синтаксис языка<br />
* (Опционально) Определяют трансляцию в другой язык (Java)<br />
<br />
Основной целевой язык для MPS — конечно Java, хотя сейчас также поддерживаются CSS, XML, JavaScript.<br />
Флагманский продукт на MPS — приятный баг-трекер [http://www.jetbrains.com/youtrack YouTrack]<br />
<br />
Докладчик сказал, что привыкание к программированию в MPS занимает около 3 недель.<br />
<br />
{{question}} Из всех наших проектов единственным явным кандидатом на применение является GL-XML</div>StasFomin