GenProg14 — различия между версиями
Mikhail (обсуждение | вклад) м |
Mikhail (обсуждение | вклад) |
||
Строка 27: | Строка 27: | ||
11.11.2014: [[Медиа: L14_8.pdf | Пример]] реализации аспекта трассировки в MPS. | 11.11.2014: [[Медиа: L14_8.pdf | Пример]] реализации аспекта трассировки в MPS. | ||
+ | <br/> | ||
+ | |||
+ | 18.11.2014: Использование системы на базе MPS для программирования встроенного оборудования. Набор языков в [http://mbeddr.com mbeddr]. | ||
<br/> | <br/> | ||
Строка 33: | Строка 36: | ||
<b>2. [[Generative Programming 14 HW2|Генерация HTML-расписания]]</b>, срок сдачи до 18.11 <br/> | <b>2. [[Generative Programming 14 HW2|Генерация HTML-расписания]]</b>, срок сдачи до 18.11 <br/> | ||
<b>3. [[Generative Programming 14 HW3|Аспект трассировки]]</b>, срок сдачи до 02.12 <br/> | <b>3. [[Generative Programming 14 HW3|Аспект трассировки]]</b>, срок сдачи до 02.12 <br/> | ||
+ | Придумать и реализовать аспект, управляющий трассировкой выполнения, для языка baseLanguage в MPS. | ||
+ | |||
+ | Домен языка должен иметь несколько измерений: | ||
+ | * Тип трассировки: | ||
+ | ** вызов метода/конструктора | ||
+ | ** изменение поля/переменной | ||
+ | ** обращение к переменной | ||
+ | ** [возврат из метода] | ||
+ | ** ... | ||
+ | * Формат лога | ||
+ | * Выбор трассируемых значений (набор полей, методов) | ||
+ | * Приветствуются любые другие полезные возможности | ||
+ | |||
+ | Указания о трассировке добавляются в модель одним или несколькими дополнительными рутами. Проект должен содержать язык и примеры его использования. | ||
+ | |||
+ | Оценки: <br/> | ||
+ | 3 - реализованы и правильно работают хотя бы трассировка вызова метода и изменения поля. Можно задавать формат лога. <br/> | ||
+ | 4 - реализованы основные типы трассировок, задание формата лога <br/> | ||
+ | 5 - дополнительно к предыдущим пунктам продуман и реализован выбор трассируемых значений <br/> | ||
+ | реализация каких-либо дополнительных полезных возможностей может компенсировать недостатки в реализации обязательных. | ||
+ | |||
+ | Решение, в котором не используется pre/post-processing script (с использованием только reduction & weawing rules), получает +1 балл. <br/> | ||
+ | Одно первое решение получает +1 балл. Как обычно, нельзя получить больше 6 баллов. | ||
<br/><br/> | <br/><br/> |
Версия 08:22, 19 ноября 2014
Преподаватели - Власьев Михаил Игоревич (mailto:michael.vlassiev@jetbrains.com),
Лекции
09.09.2014:
О чем курс
16.09.2014:
Введение в MPS, проект mps.demolazy
23.09.2014:
Domain engineering
30.09.2014:
Практическое занятие. Моделирование калькулятора: MPS проект
07.10.2014:
Продолжение моделирования калькулятора (проект), Domain implementation, generation.
14.10.2014:
Практическое занятие по написанию генератора. (проект)
21.10.2014:
Продолжение практического занятия.
28.10.2014:
Aspect programming. (Здесь последняя версия проекта практического занятия по генератору).
11.11.2014: Пример реализации аспекта трассировки в MPS.
18.11.2014: Использование системы на базе MPS для программирования встроенного оборудования. Набор языков в mbeddr.
Домашние задания
1. Моделирование домена таймеров/секундомеров, срок сдачи до 21.10
2. Генерация HTML-расписания, срок сдачи до 18.11
3. Аспект трассировки, срок сдачи до 02.12
Придумать и реализовать аспект, управляющий трассировкой выполнения, для языка baseLanguage в MPS.
Домен языка должен иметь несколько измерений:
- Тип трассировки:
- вызов метода/конструктора
- изменение поля/переменной
- обращение к переменной
- [возврат из метода]
- ...
- Формат лога
- Выбор трассируемых значений (набор полей, методов)
- Приветствуются любые другие полезные возможности
Указания о трассировке добавляются в модель одним или несколькими дополнительными рутами. Проект должен содержать язык и примеры его использования.
Оценки:
3 - реализованы и правильно работают хотя бы трассировка вызова метода и изменения поля. Можно задавать формат лога.
4 - реализованы основные типы трассировок, задание формата лога
5 - дополнительно к предыдущим пунктам продуман и реализован выбор трассируемых значений
реализация каких-либо дополнительных полезных возможностей может компенсировать недостатки в реализации обязательных.
Решение, в котором не используется pre/post-processing script (с использованием только reduction & weawing rules), получает +1 балл.
Одно первое решение получает +1 балл. Как обычно, нельзя получить больше 6 баллов.
Проекты со сделанными заданиями присылать мне на michael.vlassiev@jetbrains.com. Они оцениваются по 4-балльной системе (2-5). При получении дополнительного балла возможна оценка 6. Задания, отправленные после срока сдачи, получают на 1 балл меньше.
Зачет будет выставляться по результатам трех домашних заданий и одной контрольной работы (контрольная работа - с весом 2.0).
Результаты
здесь.
Если Вы заметили ошибку в этой таблице - никогда не поздно о ней сообщить, поправим.
Список литературы
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