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

Материал из SEWiki
Перейти к: навигация, поиск
м (Лекции)
 
(не показано 15 промежуточных версий этого же участника)
Строка 27: Строка 27:
 
[[Медиа: Lect_5.pdf‎ | Aspect programming]], [[Медиа: LogDemo.zip | пример]]<br/>
 
[[Медиа: Lect_5.pdf‎ | Aspect programming]], [[Медиа: LogDemo.zip | пример]]<br/>
  
30.10.2013: <b> Будет практическое занятие</b><br/>
+
30.10.2013: Практическое занятие<br/>
 +
 
 +
06.11.2013: Контрольная работа<br/>
 +
 
 +
13.11.2013: нет занятия (devdays)<br/>
 +
 
 +
20.11.2013: Spoofax ([http://strategoxt.org/Spoofax homepage])<br/>
 +
 
 +
27.11.2013: Forth<br/>
 +
 
 +
4.12.2013: XText<br/>
 +
 
 +
11.12.2013: Kotlin<br/>
 +
 
 +
18.12.2013: bonus: mbeddr languages<br/>
 +
 
 +
25.12.2013: выставление зачетов<br/>
  
 
== Домашние задания ==
 
== Домашние задания ==
Строка 34: Строка 50:
 
<b>2. [[Generative Programming Homework 2|Модель домена калькуляторов]]</b>, срок сдачи до 29.09 <br/>
 
<b>2. [[Generative Programming Homework 2|Модель домена калькуляторов]]</b>, срок сдачи до 29.09 <br/>
 
<b>3. [[Generative Programming Homework 3|Генератор калькуляторов]]</b>, срок сдачи до 27.10 <br/>
 
<b>3. [[Generative Programming Homework 3|Генератор калькуляторов]]</b>, срок сдачи до 27.10 <br/>
Предполагается генерировать калькулятор по описанию. В качестве описания можно взять структуру из [[Медиа: calc.zip | примера]], а можно взять свое описание, если оно есть.
+
<b>4. [[Generative Programming Homework 4|Генерация HTML-расписания]]</b>, срок сдачи до 10.11 <br/>
<br/>
+
<b>5. [[Generative Programming Homework 5|Spoofax: Expressions]]</b>, срок сдачи до 02.12 <br/>
 
+
<b>6. [[Generative Programming Homework 6|XText: Subscribers graph]]</b>, срок сдачи до 16.12 <br/>
Калькулятор должен уметь выполнять арифметические операции (+-*/) с числами. Должна быть предусмотрена возможность добавления новых (специфических для данного калькулятора) операций, например, возведение в степень или извлечение квадратного корня. UI фичи - на усмотрение.
+
<b>7. [[Generative Programming Homework 7 (opt)|Kotlin: state machines]]</b>, срок сдачи до 22.12 <br/>
Модель должна уметь описывать стандартный (минимальный) калькулятор Windows (или любой другой ОС). <br/>
+
 
+
Ожидаемый результат: проект MPS с описанием домена калькуляторов (language), редактором и генератором, sandbox с моделью, описывающей примерно такой калькулятор:
+
[[Файл: calc_pict.gif]]
+
<br/>
+
<br/>
+
Чего не хватает в генераторе из примера:<br/>
+
- Вычисление правильных размеров и расположения кнопок и размеров самого калькулятора.<br/>
+
- Работа с памятью.<br/>
+
- 0-арные функции (pi)<br/>
+
- Остальные стандартные операции, кнопка сброса.<br/>
+
- Аккуратный layout и разумные шрифты (для индикатора, например).<br/>
+
Что можно добавить:<br/>
+
- Статус калькулятора для возможности введения клавиш типа "arc" [+"sin"/"cos"].<br/>
+
- Расширения языка baseLanguage для работы со статусом.<br/>
+
- Поддержка типов данных для калькулятора (сейчас работает только double).<br/>
+
- Настройка пользовательского интерфейса.<br/>
+
- ...
+
<br/><br/>
+
Чтобы получить максимальную оценку, надо сделать, чтобы правильно работало все, что перечислено в списке "не хватает". Дополнительные фичи могут компенсировать недостатки в реализации основных фич. На все фичи должен быть пример в sandbox.<br/>
+
  
Два первых сданных задания получают +1 балл.
+
<b>Результаты</b>
 +
[https://docs.google.com/spreadsheet/ccc?key=0Anpvyfja13p5dHktX2lldFBIMU56aUVnUTRYOVBNSFE&usp=sharing здесь]<br>
 +
Мы никогда не удаляем Ваши работы, поэтому, если Вы заметили ошибку в этой таблице - никогда не поздно о ней сообщить, поправим.
  
 
== Список литературы ==
 
== Список литературы ==

Текущая версия на 04:53, 25 декабря 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: Практическое занятие (проект)

23.10.2013: Aspect programming, пример

30.10.2013: Практическое занятие

06.11.2013: Контрольная работа

13.11.2013: нет занятия (devdays)

20.11.2013: Spoofax (homepage)

27.11.2013: Forth

4.12.2013: XText

11.12.2013: Kotlin

18.12.2013: bonus: mbeddr languages

25.12.2013: выставление зачетов

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

1. Парсер упрощенного XML, срок сдачи до 15.09
2. Модель домена калькуляторов, срок сдачи до 29.09
3. Генератор калькуляторов, срок сдачи до 27.10
4. Генерация HTML-расписания, срок сдачи до 10.11
5. Spoofax: Expressions, срок сдачи до 02.12
6. XText: Subscribers graph, срок сдачи до 16.12
7. Kotlin: state machines, срок сдачи до 22.12

Результаты здесь
Мы никогда не удаляем Ваши работы, поэтому, если Вы заметили ошибку в этой таблице - никогда не поздно о ней сообщить, поправим.

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

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