Generative programming 2013 — различия между версиями
Mikhail (обсуждение | вклад) |
Mikhail (обсуждение | вклад) м (→Лекции) |
||
Строка 22: | Строка 22: | ||
[[Медиа: Lect_4.pdf | Generation]], [[Медиа: calc.zip | пример]]<br/> | [[Медиа: Lect_4.pdf | Generation]], [[Медиа: calc.zip | пример]]<br/> | ||
− | 16.10.2013: Практическое занятие | + | 16.10.2013: Практическое занятие ([[Медиа: PersonHelloDemo.zip |проект]])<br/> |
== Домашние задания == | == Домашние задания == |
Версия 18:15, 17 октября 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:
Пример "Калькулятор" (проект)
09.10.2013:
Generation, пример
16.10.2013: Практическое занятие (проект)
Домашние задания
1. Парсер упрощенного XML, срок сдачи до 15.09
2. Модель домена калькуляторов, срок сдачи до 29.09
3. Генератор калькуляторов, срок сдачи до 27.10
Предполагается генерировать калькулятор по описанию. В качестве описания можно взять структуру из примера, а можно взять свое описание, если оно есть.
Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления новых (специфических для данного калькулятора) операций, например, возведение в степень или извлечение квадратного корня. UI фичи - на усмотрение.
Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС).
Ожидаемый результат: проект MPS с описанием домена калькуляторов (language), редактором и генератором, sandbox с моделью, описывающей примерно такой калькулятор:
Чего не хватает в генераторе из примера:
- Вычисление правильных размеров и расположения кнопок и размеров самого калькулятора.
- Работа с памятью.
- 0-арные функции (pi)
- Остальные стандартные операции, кнопка сброса.
- Аккуратный layout и разумные шрифты (для индикатора, например).
Что можно добавить:
- Статус калькулятора для возможности введения клавиш типа "arc" [+"sin"/"cos"].
- Расширения языка baseLanguage для работы со статусом.
- Поддержка типов данных для калькулятора (сейчас работает только double).
- Настройка пользовательского интерфейса.
- ...
Чтобы получить максимальную оценку, надо сделать, чтобы правильно работало все, что перечислено в списке "не хватает". Дополнительные фичи могут компенсировать недостатки в реализации основных фич. На все фичи должен быть пример в sandbox.
Два первых сданных задания получают +1 балл.
Список литературы
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