Weitere ähnliche Inhalte
Ähnlich wie CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»
Ähnlich wie CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD» (20)
CodeFest 2012. Гладкий Д. — Практика применения MPS на примере проекта «MobileNoter HD»
- 2. Базовые подсистемы
Чтение/запись *.one файлов
Синхронизация с «облачными»
сервисами:
© Технологика
1
- 4. Синхронизация с «облачными» сервисами
Протокол Протокол
Dropbox SkyDrive
Интерфейс «облачного» файлового
хранилища
Общий алгоритм синхронизации:
- Вычисление файловой разности
- Отправка/удаление локальных файлов
- Загрузка/удаление файлов в хранилище
- Построение индекса локальных файлов
© Технологика
3
- 5. В цифрах
Модель данных Парсер Синхронизация Всего
*.java файлов 206 77 61 344
# cтрок кода ~7438 ~14818 ~5847 ~28103
Объём *.java файлов ~280 Kb ~896 Kb ~500 Кб ~1.6 Mb
Цель: портировать этот КОД на iOS.
© Технологика
4
- 6. На этапе планирования
Неудовлетворённость IDEA + Java
А писать придётся на Objective-C + Xcode
AppCode был в виде постоянно падающей «беты»
Классические проблемы дублирования кода
Править одни и те же «баги» в 2-х местах
Писать [новый] функционал дважды
© Технологика
5
- 7. Domain-Specific Language
Существующие DSL: Создание своего DSL:
Эффективное решение Компилятор, среда
«частных» задач: выполнения
Увеличение Среда разработки:
продуктивности разработки редактор, отладчик и т.д.
Улучшение коммуникаций с
заказчиком
«Success stories»: SQL,
HLSL/GLSL
Domain-specific language (noun): a computer programming
language of limited expressiveness focused on a particular domain.
-Martin Fowler
© Технологика
6
- 8. Создание DSL
Редактор
Абстрактный синтаксис (AST Model)
Семантика
© Технологика
7
- 13. Как делать транслятор?
Точный перевод абстрактного
синтаксического дерева одного языка в
синтаксическое дерево другого языка
Взять уже готовый язык текстового
документа и транслировать из
расширения Java в текстовый документ
© Технологика
12
- 17. Enum
.h
.m
© Технологика
16
- 23. Трансляция стандартной библиотеки
1) typedef для имен классов;
интерфейс адаптируется при
помощи «категорий»
2) В java вводим классы из
Objective-C
© Технологика
22
- 26. Выводы
+ Низкая цена
отказа
+ Проекты с
большим
сроком жизни
+ И таки да, оно - Сырость проработанности
работает use cases
- Слабая [offline] поддержка
- «Птичий язык»
© Технологика
25
- 27. Спасибо за внимание!
Денис Гладкий
generalgda@gmail.com Большие проекты
Татьяна Лях Сложные задачи
tanyaluach@gmail.com
Интересные люди
© Технологика
26