Generative Programming Homework 2 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Новая страница: «<b>2. Модель домена калькуляторов</b>, срок сдачи до 24.09.2013 <br> Предполагается генерировать кал…»)
 
 
Строка 1: Строка 1:
<b>2. Модель домена калькуляторов</b>, срок сдачи до 24.09.2013 <br>
+
<b>2. Модель домена калькуляторов</b>, срок сдачи до 29.09.2013 <br>
 
Предполагается генерировать калькулятор по описанию.
 
Предполагается генерировать калькулятор по описанию.
Необходимо проанализировать домен калькуляторов (Вы выступаете экспертом и пользователем) и смоделировать его.
+
Необходимо проанализировать домен калькуляторов (домен задачи) и смоделировать его. Вы выступаете и экспертом, и пользователем.
 
Структуру домена записать на MPS 3.0. <br/>
 
Структуру домена записать на MPS 3.0. <br/>
  
Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления как минимум унарных и бинарных операций. UI фичи - на усмотрение пользователя. <br/>
+
Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления новых (специфических для данного калькулятора) операций, например, возведение в степень или извлечение квадратного корня. UI фичи - на усмотрение.
 
Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС). <br/>
 
Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС). <br/>
  
Для описания пользовательских операций можно использовать FunctionType и/или ClosureLiteral из языка jetbrains.mps.baseLanguage.closures
+
Для описания пользовательских операций можно использовать FunctionType и/или ClosureLiteral из языка jetbrains.mps.baseLanguage.closures. Например, UserOperation ::= Expression, где typeof(Expression)==FunctionType, соответствующий операции. Или UserOperation ::= ClosureLiteral, который тоже проверяется на правильность типа. Ограничение на тип можно пока не задавать, это не будет влиять на оценку. <br/>
 +
 
 +
Ожидаемый результат: проект MPS с описанием домена калькуляторов (language) и редактором, sandbox с моделью, описывающей примерно такой калькулятор:
 +
[[Файл: calc_pict.gif]]
  
 
<br><br>
 
<br><br>
 +
Баллы:  <br/>
 +
5 - Домен задачи проработан, редактор позволяет легко вводить описание калькулятора, есть примеры разных описаний <br/>
 +
4 - Домен задачи проработан, есть пример "стандартного" калькулятора <br/>
 +
3 - Домен задачи недостаточно проработан или описание домена запутано, но "стандартный" калькулятор можно описывать (есть пример) <br/>
 +
1 - Невозможно описать "стандартный" калькулятор или задать пользовательские операции. <br/>
 +
 +
Первое сданное задание получает +1 балл.

Текущая версия на 01:27, 26 сентября 2013

2. Модель домена калькуляторов, срок сдачи до 29.09.2013
Предполагается генерировать калькулятор по описанию. Необходимо проанализировать домен калькуляторов (домен задачи) и смоделировать его. Вы выступаете и экспертом, и пользователем. Структуру домена записать на MPS 3.0.

Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления новых (специфических для данного калькулятора) операций, например, возведение в степень или извлечение квадратного корня. UI фичи - на усмотрение. Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС).

Для описания пользовательских операций можно использовать FunctionType и/или ClosureLiteral из языка jetbrains.mps.baseLanguage.closures. Например, UserOperation ::= Expression, где typeof(Expression)==FunctionType, соответствующий операции. Или UserOperation ::= ClosureLiteral, который тоже проверяется на правильность типа. Ограничение на тип можно пока не задавать, это не будет влиять на оценку.

Ожидаемый результат: проект MPS с описанием домена калькуляторов (language) и редактором, sandbox с моделью, описывающей примерно такой калькулятор: Calc pict.gif



Баллы:
5 - Домен задачи проработан, редактор позволяет легко вводить описание калькулятора, есть примеры разных описаний
4 - Домен задачи проработан, есть пример "стандартного" калькулятора
3 - Домен задачи недостаточно проработан или описание домена запутано, но "стандартный" калькулятор можно описывать (есть пример)
1 - Невозможно описать "стандартный" калькулятор или задать пользовательские операции.

Первое сданное задание получает +1 балл.