GenProg14 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 36: Строка 36:
  
 
02.12.2014: Занятие переносится.
 
02.12.2014: Занятие переносится.
 +
<br/>
 +
 +
09.12.2014: Занятие отменяется.
 +
<br/>
 +
 +
16.12.2014
 
<br/>
 
<br/>
  
Строка 41: Строка 47:
 
<b>1. [[Generative Programming 14 HW1|Моделирование домена таймеров/секундомеров]]</b>, срок сдачи до 21.10 <br/>
 
<b>1. [[Generative Programming 14 HW1|Моделирование домена таймеров/секундомеров]]</b>, срок сдачи до 21.10 <br/>
 
<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>, срок сдачи до 07.12 - <b>продлен</b> <br/>
<b>3. [[Generative Programming 14 HW4|Spoofax: dependency graph]]</b>, срок сдачи до 16.12 (но можно и раньше) <br/>
+
Придумать и реализовать аспект, управляющий трассировкой выполнения, для языка baseLanguage в MPS.
+
 
+
Домен языка должен иметь несколько измерений:
+
* Тип трассировки:
+
** вызов метода/конструктора
+
** изменение поля/переменной
+
** обращение к переменной
+
** [возврат из метода]
+
** ...
+
* Формат лога
+
* Выбор трассируемых значений (набор полей, методов)
+
* Приветствуются любые другие полезные возможности
+
 
+
Указания о трассировке добавляются в модель одним или несколькими дополнительными рутами. Проект должен содержать язык и примеры его использования.
+
 
+
Оценки: <br/>
+
3 - реализованы и правильно работают хотя бы трассировка вызова метода и изменения поля. Можно задавать формат лога. <br/>
+
4 - реализованы основные типы трассировок, задание формата лога <br/>
+
5 - дополнительно к предыдущим пунктам продуман и реализован выбор трассируемых значений <br/>
+
реализация каких-либо дополнительных полезных возможностей может компенсировать недостатки в реализации обязательных.
+
  
Решение, в котором не используется pre/post-processing script (с использованием только reduction & weawing rules), получает +1 балл. <br/>
+
Дополнительное задание (позволяет получить +1 балл к контрольной работе):<br/>
Одно первое решение получает +1 балл. Как обычно, нельзя получить больше 6 баллов.
+
<b>4. [[Generative Programming 14 HW4|Spoofax: dependency graph]]</b>, срок сдачи до 16.12 (но можно и раньше) <br/>
  
 
<br/><br/>
 
<br/><br/>

Версия 19:49, 2 декабря 2014

Преподаватели - Власьев Михаил Игоревич (mailto:michael.vlassiev@jetbrains.com), Мухин Михаил Александрович (mailto:mihail.muhin@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.

25.11.2014: Spoofax. Пример с лекции

02.12.2014: Занятие переносится.

09.12.2014: Занятие отменяется.

16.12.2014

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

1. Моделирование домена таймеров/секундомеров, срок сдачи до 21.10
2. Генерация HTML-расписания, срок сдачи до 18.11
3. Аспект трассировки, срок сдачи до 07.12 - продлен

Дополнительное задание (позволяет получить +1 балл к контрольной работе):
4. Spoofax: dependency graph, срок сдачи до 16.12 (но можно и раньше)



Проекты со сделанными заданиями присылать мне на 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