4. Стажировка в MSR
Стажировка в MSR
В двух словах...
Длительность: 12 недель
Достаточно для того, чтобы разработать законченный проект
Слишком мало времени, чтобы успеть потерять интерес
Работа в одной из ведущих R&D лабораторий мира
Статус интерна ≈ статусу FTE (Full-Time Employee)
Доступ ко всем ресурсам MSR
Полный пакет всевозможных Benefits
Соответствующая доля ответственности
Возможность посмотреть на Microsoft изнутри
«Империя зла» – правда или вымысел?
Как работает крупнейшая компания по разработке ПО?
Марат Ахин (СПбГПУ) TouchDevelop 2012 4 / 37
8. TouchDevelop Что?
Что?
IDE для вашего Windows Phone
Язык программирования со строгой статической типизацией
Контекстно-зависимый редактор кода
Доступ практически ко всей периферии телефона
Хранение всех ваших данных в облаке
IDE для вашего устройства...
...если оно поддерживает HTML5 + JS
Марат Ахин (СПбГПУ) TouchDevelop 2012 8 / 37
9. TouchDevelop Что?
Что?
IDE для вашего Windows Phone
Язык программирования со строгой статической типизацией
Контекстно-зависимый редактор кода
Доступ практически ко всей периферии телефона
Хранение всех ваших данных в облаке
IDE для вашего устройства...
...если оно поддерживает HTML5 + JS
Марат Ахин (СПбГПУ) TouchDevelop 2012 8 / 37
10. TouchDevelop Зачем?
Зачем?
Обучение программированию
Простота
Более тесное вовлечение студента/ученика в процесс
Независимость от десктопа
Программирование-для-всех
Нужен dice roller – сделай его сам!
Марат Ахин (СПбГПУ) TouchDevelop 2012 9 / 37
12. Time Travel
Содержание
1 Стажировка в MSR
2 TouchDevelop
3 Time Travel
Что?
Зачем?
Как?
4 Applications
5 Резюме
6 Questions & Answers
Марат Ахин (СПбГПУ) TouchDevelop 2012 11 / 37
13. Time Travel Что?
Что?
В повседневной жизни
Марат Ахин (СПбГПУ) TouchDevelop 2012 12 / 37
14. Time Travel Что?
Что?
В программной инженерии
Марат Ахин (СПбГПУ) TouchDevelop 2012 13 / 37
15. Time Travel Что?
Time-traveling debugging
Возможность свободно перемещаться во времени при отладке
ПО (команда «Step Back»)
В TouchDevelop нет отладчика...
Марат Ахин (СПбГПУ) TouchDevelop 2012 14 / 37
16. Time Travel Что?
Trace-and-replay
Возможность записать трассу выполнения и проиграть ее позднее
В TouchDevelop нет записи трасс...
Марат Ахин (СПбГПУ) TouchDevelop 2012 15 / 37
17. Time Travel Зачем?
Зачем?
Легковесная запись видео
Удаленная отладка
Выполнение кода «on-the-fly» во время редактирования
Дифференциальное тестирование
It’s just awesome! c
Марат Ахин (СПбГПУ) TouchDevelop 2012 16 / 37
18. Time Travel Как?
Трассировка
Необходимо трассировать недетерминированные события
Пользовательский ввод
Данные с сенсоров
Случайные события
Различное окружение
Необходимо сохранять информацию о тайминге событий
Марат Ахин (СПбГПУ) TouchDevelop 2012 17 / 37
19. Time Travel Как?
Трассировка
Все – это вызовы определенного API
Некоторые API являются недетерминированными – их нужно
трассировать
Но есть одна проблема...
Марат Ахин (СПбГПУ) TouchDevelop 2012 18 / 37
20. Time Travel Как?
Трассировка
Часть API являются асинхронными
Приостанавливают выполнение скрипта и запускают его позднее
Выполняются в отдельном потоке
Марат Ахин (СПбГПУ) TouchDevelop 2012 19 / 37
21. Time Travel Как?
Проблемы
Интерпретатор TouchDevelop является многопоточным
Строгой синхронизации нет
Недостаточно просто упорядочить события по времени
Решение
Отдельные трассы для каждого потока
При воспроизведении «привязываем» трассы к соответствующим
потокам
Марат Ахин (СПбГПУ) TouchDevelop 2012 20 / 37
22. Time Travel Как?
Проблемы
У скриптов в TouchDevelop есть global mutable state (GMS)
Что много хуже – GMS может влиять на выполнение скрипта
Решение
Запись GMS при трассировке
При воспроизведении заменяем текущее GMS на состояние из
трассы
Марат Ахин (СПбГПУ) TouchDevelop 2012 21 / 37
24. Applications
Содержание
1 Стажировка в MSR
2 TouchDevelop
3 Time Travel
4 Applications
Запись видео
Удаленная отладка
Дифференциальное тестирование
5 Резюме
6 Questions & Answers
Марат Ахин (СПбГПУ) TouchDevelop 2012 23 / 37
25. Applications Запись видео
Запись видео
Легковесная запись видео
Позволяет пользователям создавать демо своих приложений
Демо можно свободно обмениваться
It’s just awesome! c
Марат Ахин (СПбГПУ) TouchDevelop 2012 24 / 37
26. Applications Удаленная отладка
Удаленная отладка
Если у какого-либо пользователя TouchDevelop упал ваш скрипт,
как воспроизвести ошибку наиболее простым способом?
Записать трассу на одном устройстве и воспроизвести на другом
Один из немногих способов отладки в облаке
Марат Ахин (СПбГПУ) TouchDevelop 2012 25 / 37
27. Applications Дифференциальное тестирование
Дифференциальное тестирование
Если вспомнить самое начало презентации...
Две версии TouchDevelop – для Windows Phone и для HTML5/JS
Обе версии должны соответствовать одной и той же
спецификации
Можно взять трассу с одной версии и проиграть ее на другой
Все должно работать одинаково...
Марат Ахин (СПбГПУ) TouchDevelop 2012 26 / 37
28. Applications Дифференциальное тестирование
Дифференциальное тестирование
На одной трассе было найдено 5 ошибок в реализации
спецификации для HTML5/JS версии
Для анализа использовались текстовый редактор и дебаггер
Отличный способ регрессионного и дифференциального тестирования
Марат Ахин (СПбГПУ) TouchDevelop 2012 27 / 37
29. Резюме
Содержание
1 Стажировка в MSR
2 TouchDevelop
3 Time Travel
4 Applications
5 Резюме
6 Questions & Answers
Марат Ахин (СПбГПУ) TouchDevelop 2012 28 / 37
30. Резюме
Резюме
Реализация Trace-and-replay для двух версий TouchDevelop
Много потенциальных направлений дальнейшего развития
Марат Ахин (СПбГПУ) TouchDevelop 2012 29 / 37
31. Questions & Answers
Содержание
1 Стажировка в MSR
2 TouchDevelop
3 Time Travel
4 Applications
5 Резюме
6 Questions & Answers
Марат Ахин (СПбГПУ) TouchDevelop 2012 30 / 37