codefest 2012. Гладкий Д. — Практика применения mps на примере...
TRANSCRIPT
![Page 1: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/1.jpg)
Практика применения MPS на примере проекта
Денис Гладкий Татьяна Лях
![Page 2: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/2.jpg)
© Технологика
Базовые подсистемы
1
Чтение/запись *.one файлов
Синхронизация с «облачными»
сервисами:
![Page 3: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/3.jpg)
© Технологика
OneNote COM API
Объектная модель документа
VCS
Модель данных OneNote
2
![Page 4: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/4.jpg)
© Технологика
Синхронизация с «облачными» сервисами
Общий алгоритм синхронизации:
- Вычисление файловой разности
- Отправка/удаление локальных файлов
- Загрузка/удаление файлов в хранилище
- Построение индекса локальных файлов
Интерфейс «облачного» файлового хранилища
Протокол Dropbox
Протокол SkyDrive
3
![Page 5: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/5.jpg)
© Технологика
В цифрах
Модель данных Парсер Синхронизация Всего
*.java файлов 206 77 61 344
# cтрок кода ~7438 ~14818 ~5847 ~28103
Объём *.java файлов ~280 Kb ~896 Kb ~500 Кб ~1.6 Mb
Цель: портировать этот КОД на iOS.
4
![Page 6: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/6.jpg)
© Технологика
На этапе планирования
5
Неудовлетворённость IDEA + Java
А писать придётся на Objective-C + Xcode
AppCode был в виде постоянно падающей «беты»
Классические проблемы дублирования кода
Править одни и те же «баги» в 2-х местах
Писать [новый] функционал дважды
![Page 7: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/7.jpg)
© Технологика
Domain-Specific Language
6
Domain-specific language (noun): a computer programming language of limited expressiveness focused on a particular domain.
-Martin Fowler
Существующие DSL: Эффективное решение «частных» задач:
Увеличение продуктивности разработки Улучшение коммуникаций с заказчиком
«Success stories»: SQL, HLSL/GLSL
Создание своего DSL: Компилятор, среда выполнения Среда разработки: редактор, отладчик и т.д.
![Page 8: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/8.jpg)
© Технологика
Создание DSL
7
Редактор
Абстрактный синтаксис (AST Model)
Семантика
![Page 9: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/9.jpg)
© Технологика
Базовые понятия MPS
8
Узел (Node)
Концепция (Concept)
Язык (Language)
![Page 10: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/10.jpg)
© Технологика
Язык структуры
9
![Page 11: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/11.jpg)
© Технологика
Язык редактора
10
![Page 12: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/12.jpg)
© Технологика
Шаблоны
11
![Page 13: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/13.jpg)
© Технологика
Как делать транслятор?
12
Точный перевод абстрактного синтаксического дерева одного языка в синтаксическое дерево другого языка
Взять уже готовый язык текстового документа и транслировать из расширения Java в текстовый документ
![Page 14: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/14.jpg)
© Технологика
Объявление и определение класса
.java
.h
.m
13
![Page 15: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/15.jpg)
© Технологика 14
Объявление и определение класса
![Page 16: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/16.jpg)
© Технологика 15
Объявление и определение класса
![Page 17: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/17.jpg)
© Технологика
Enum
.m
.h
16
![Page 18: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/18.jpg)
© Технологика
Проблемы трансляции
17
Анонимные классы
Ручное управление памятью
![Page 19: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/19.jpg)
© Технологика
Retain, release, autorelease
Structure
18
![Page 20: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/20.jpg)
© Технологика
Retain, release, autorelease
Editor
19
![Page 21: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/21.jpg)
© Технологика
Retain, release, autorelease
20
![Page 22: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/22.jpg)
© Технологика
Retain, release, autorelease
21
![Page 23: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/23.jpg)
© Технологика
Трансляция стандартной библиотеки
22
1) typedef для имен классов; интерфейс адаптируется при помощи «категорий»
2) В java вводим классы из Objective-C
![Page 24: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/24.jpg)
© Технологика 23
Трансляция стандартной библиотеки
![Page 25: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/25.jpg)
© Технологика
Нововведения MPS 2.0
24
Копирование из Java
Импорт из Java
![Page 26: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/26.jpg)
© Технологика
Выводы
25
- Сырость проработанности use cases - Слабая [offline] поддержка - «Птичий язык»
+ Низкая цена отказа + Проекты с большим сроком жизни + И таки да, оно работает
![Page 27: CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»](https://reader034.vdocuments.site/reader034/viewer/2022052311/55878aead8b42a47318b46e7/html5/thumbnails/27.jpg)
© Технологика
Большие проекты
Сложные задачи
Интересные люди
Спасибо за внимание!
26
Денис Гладкий
Татьяна Лях