Generative programming 2013 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 15: Строка 15:
  
 
25.09.2013: Практическое занятие ([[Медиа: DialogDemo.zip |проект]]) <br/>
 
25.09.2013: Практическое занятие ([[Медиа: DialogDemo.zip |проект]]) <br/>
 +
 +
02.10.2013:
 +
Пример [[Медиа: calc_design.pdf‎ |"Калькулятор"]] ([[Медиа: calc0.zip |проект]]) <br/>
  
 
== Домашние задания ==
 
== Домашние задания ==
  
 
<b>1. [[Generative Programming Homework 1|Парсер упрощенного XML]]</b>, срок сдачи до 15.09 <br>
 
<b>1. [[Generative Programming Homework 1|Парсер упрощенного XML]]</b>, срок сдачи до 15.09 <br>
<b>2. [[Generative Programming Homework 2|Модель домена калькуляторов]] </b>, срок сдачи продлен <b>до 29.09</b> <br>
+
<b>2. [[Generative Programming Homework 2|Модель домена калькуляторов]] </b>, срок сдачи до 29.09 <br>
Предполагается генерировать калькулятор по описанию.
+
Необходимо проанализировать домен калькуляторов (домен задачи) и смоделировать его. Вы выступаете и экспертом, и пользователем.
+
Структуру домена записать на MPS 3.0. <br/>
+
 
+
Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления новых (специфических для данного калькулятора) операций, например, возведение в степень или извлечение квадратного корня. UI фичи - на усмотрение.
+
Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС). <br/>
+
 
+
Для описания пользовательских операций можно использовать FunctionType и/или ClosureLiteral из языка jetbrains.mps.baseLanguage.closures. Например, UserOperation ::= Expression, где typeof(Expression)==FunctionType, соответствующий операции. Или UserOperation ::= ClosureLiteral, который тоже проверяется на правильность типа. Ограничение на тип можно пока не задавать, это не будет влиять на оценку. <br/>
+
 
+
Ожидаемый результат: проект MPS с описанием домена калькуляторов (language) и редактором, sandbox с моделью, описывающей примерно такой калькулятор:
+
[[Файл: calc_pict.gif]]
+
 
+
<br><br>
+
Баллы:  <br/>
+
5 - Домен задачи проработан, редактор позволяет легко вводить описание калькулятора, есть примеры разных описаний <br/>
+
4 - Домен задачи проработан, есть пример "стандартного" калькулятора <br/>
+
3 - Домен задачи недостаточно проработан или описание домена запутано, но "стандартный" калькулятор можно описывать (есть пример) <br/>
+
1 - Невозможно описать "стандартный" калькулятор или задать пользовательские операции. <br/>
+
 
+
Первое сданное задание получает +1 балл.
+
  
 
== Список литературы ==
 
== Список литературы ==

Версия 22:50, 2 октября 2013

Преподаватели - Власьев Михаил Игоревич (mailto:michael.vlassiev@jetbrains.com),
Мухин Михаил Александрович (mailto:Mihail.Muhin@jetbrains.com)

Лекции

04.09.2013: О чем курс, Textmapper, Textmapper example

11.09.2013: Введение в MPS

18.09.2013: Domain engineering, пример

25.09.2013: Практическое занятие (проект)

02.10.2013: Пример "Калькулятор" (проект)

Домашние задания

1. Парсер упрощенного XML, срок сдачи до 15.09
2. Модель домена калькуляторов , срок сдачи до 29.09

Список литературы

Generative Programming: Methods, Tools, and Applications
Krysztof Czarnecki, Ulrich Eisenecker
Addison-Wesley Professional; 1 edition (June 16, 2000)
Перевод: Чернецки К., Айзенекер У. Порождающее программирование: методы, инструменты, применение / Пер. с англ. СПб: Питер, 2005.


Domain-Specific Languages
Martin Fowler
Addison-Wesley; 2011


Полезные ссылки

JetBrains MPS: http://www.jetbrains.com/mps
Отчеты об ошибках MPS писать сюда: http://youtrack.jetbrains.com/issues/MPS