Intro to MPS

4,484 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,484
On SlideShare
0
From Embeds
0
Number of Embeds
3,193
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Intro to MPS

  1. 1. Введение в MPS Михаил Мухин JetBrains Старший разработчик, MPS Mihail.Muhin@jetbrains.com
  2. 2. LOP, или что плохо всуществующем подходе• Универсальные языки недостаточно выразительны Проблема – мы ограничены синтаксисом языка
  3. 3. «Старый» подход к LOP• Лексический анализатор• Парсер (абстрактный синтаксис) – «как выглядит синтаксическое дерево?» load a• Компилятор (семантика) – «а что load b это AST значит?» cmp …
  4. 4. Проблемы, которые мы решили• Сложно «смешивать» языки (2 языка внутри одного выражения) - нет никаких гарантий, что удастся корректно распарсить A: “String with {value}” B: “String with ${anotherValue}” A+B: “String with ${problemValue}”• Отсутствие инструментария o editor o code completion o intentions o refactorings o ...
  5. 5. Подход MPS AST (Abstract Syntax Tree) editor typesystem generator codeintentions tools transformations
  6. 6. MPS• Быстрая разработка языков (а будет еще быстрее!)• Неограниченное смешивание языков (нет парсера)• Автоматический тулинг – editor, code completion, refactorings• Лаконичное описание системы типов• Шаблонная кодогенерация• DSLи для создания тулов
  7. 7. Языки MPS• Closures• Collections• Dates• Checked dots• Math• Tuples• Regexp
  8. 8. Язык “Lazy”• Язык для «ленивых» вычислений• Интегрируется с Java• Наш язык не будет работать в некоторых случаях (но мы знаем как это поправить!)
  9. 9. Язык “Lazy” AST тип lazy<Type> Generator Editor Typesystem lazy<T> x;Представление: lazy<T> :<: T x = 1+1; lazy < Type > lazy<T> :>: T print(x);
  10. 10. Demo• Будет 2 этапа o Structure + editor – после этого можно писать на языке o Generator – можно «скомпилировать» нашу программу в рабочий код на Java
  11. 11. Just give it a try!• MPS бесплатен• Полностью открытый исходный код• Распространяется под лицензией Apache 2.0 (бери и продавай!)

×