SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Trace-and-replay: Bringing Time Travel to TouchDevelop
                      MSR Internsip Experience


                               Марат Ахин

     Санкт-Петербургский государственный политехнический университет


                                 2012




         Марат Ахин (СПбГПУ)                    TouchDevelop       2012   1 / 37
Стажировка в MSR


Содержание

1   Стажировка в MSR

2   TouchDevelop

3   Time Travel

4   Applications

5   Резюме

6   Questions & Answers




              Марат Ахин (СПбГПУ)           TouchDevelop   2012   2 / 37
Стажировка в MSR


Стажировка в MSR




        Марат Ахин (СПбГПУ)           TouchDevelop   2012   3 / 37
Стажировка в MSR


Стажировка в MSR

В двух словах...
    Длительность: 12 недель
        Достаточно для того, чтобы разработать законченный проект
        Слишком мало времени, чтобы успеть потерять интерес
    Работа в одной из ведущих R&D лабораторий мира
        Статус интерна ≈ статусу FTE (Full-Time Employee)
        Доступ ко всем ресурсам MSR
        Полный пакет всевозможных Benefits
        Соответствующая доля ответственности
    Возможность посмотреть на Microsoft изнутри
        «Империя зла» – правда или вымысел?
        Как работает крупнейшая компания по разработке ПО?




           Марат Ахин (СПбГПУ)                TouchDevelop   2012   4 / 37
Стажировка в MSR


Стажировка в MSR
Research or Development?




            Марат Ахин (СПбГПУ)           TouchDevelop   2012   5 / 37
TouchDevelop


Содержание
1   Стажировка в MSR

2   TouchDevelop
      Что?
      Зачем?
      Как?

3   Time Travel

4   Applications

5   Резюме

6   Questions & Answers

              Марат Ахин (СПбГПУ)            TouchDevelop   2012   6 / 37
TouchDevelop   Что?


Что?




       Марат Ахин (СПбГПУ)                   TouchDevelop   2012   7 / 37
TouchDevelop   Что?


Что?


IDE для вашего Windows Phone
    Язык программирования со строгой статической типизацией
    Контекстно-зависимый редактор кода
    Доступ практически ко всей периферии телефона
    Хранение всех ваших данных в облаке

IDE для вашего устройства...
               ...если оно поддерживает HTML5 + JS




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   8 / 37
TouchDevelop   Что?


Что?


IDE для вашего Windows Phone
    Язык программирования со строгой статической типизацией
    Контекстно-зависимый редактор кода
    Доступ практически ко всей периферии телефона
    Хранение всех ваших данных в облаке

IDE для вашего устройства...
               ...если оно поддерживает HTML5 + JS




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   8 / 37
TouchDevelop   Зачем?


Зачем?



Обучение программированию
    Простота
    Более тесное вовлечение студента/ученика в процесс
    Независимость от десктопа

Программирование-для-всех
                 Нужен dice roller – сделай его сам!




           Марат Ахин (СПбГПУ)                     TouchDevelop   2012   9 / 37
TouchDevelop   Как?


Как?




       Марат Ахин (СПбГПУ)                   TouchDevelop   2012   10 / 37
Time Travel


Содержание
1   Стажировка в MSR

2   TouchDevelop

3   Time Travel
      Что?
      Зачем?
      Как?

4   Applications

5   Резюме

6   Questions & Answers

              Марат Ахин (СПбГПУ)            TouchDevelop   2012   11 / 37
Time Travel   Что?


Что?

В повседневной жизни




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   12 / 37
Time Travel   Что?


Что?

В программной инженерии




          Марат Ахин (СПбГПУ)                   TouchDevelop   2012   13 / 37
Time Travel   Что?


Time-traveling debugging




   Возможность свободно перемещаться во времени при отладке
                  ПО (команда «Step Back»)

                  В TouchDevelop нет отладчика...




          Марат Ахин (СПбГПУ)                   TouchDevelop   2012   14 / 37
Time Travel   Что?


Trace-and-replay




  Возможность записать трассу выполнения и проиграть ее позднее

                 В TouchDevelop нет записи трасс...




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   15 / 37
Time Travel   Зачем?


Зачем?



   Легковесная запись видео
   Удаленная отладка
   Выполнение кода «on-the-fly» во время редактирования
   Дифференциальное тестирование

   It’s just awesome! c




           Марат Ахин (СПбГПУ)                     TouchDevelop   2012   16 / 37
Time Travel   Как?


Трассировка



   Необходимо трассировать недетерминированные события
       Пользовательский ввод
       Данные с сенсоров
       Случайные события
       Различное окружение

   Необходимо сохранять информацию о тайминге событий




          Марат Ахин (СПбГПУ)                   TouchDevelop   2012   17 / 37
Time Travel   Как?


Трассировка




   Все – это вызовы определенного API
   Некоторые API являются недетерминированными – их нужно
   трассировать

                      Но есть одна проблема...




          Марат Ахин (СПбГПУ)                   TouchDevelop   2012   18 / 37
Time Travel   Как?


Трассировка




   Часть API являются асинхронными
      Приостанавливают выполнение скрипта и запускают его позднее
      Выполняются в отдельном потоке




          Марат Ахин (СПбГПУ)                   TouchDevelop   2012   19 / 37
Time Travel   Как?


Проблемы


   Интерпретатор TouchDevelop является многопоточным
   Строгой синхронизации нет
   Недостаточно просто упорядочить события по времени

Решение
   Отдельные трассы для каждого потока
   При воспроизведении «привязываем» трассы к соответствующим
   потокам




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   20 / 37
Time Travel   Как?


Проблемы



   У скриптов в TouchDevelop есть global mutable state (GMS)
   Что много хуже – GMS может влиять на выполнение скрипта

Решение
   Запись GMS при трассировке
   При воспроизведении заменяем текущее GMS на состояние из
   трассы




           Марат Ахин (СПбГПУ)                   TouchDevelop   2012   21 / 37
Time Travel   Как?


Воспроизведение




         Марат Ахин (СПбГПУ)                   TouchDevelop   2012   22 / 37
Applications


Содержание
1   Стажировка в MSR

2   TouchDevelop

3   Time Travel

4   Applications
      Запись видео
      Удаленная отладка
      Дифференциальное тестирование

5   Резюме

6   Questions & Answers

             Марат Ахин (СПбГПУ)             TouchDevelop   2012   23 / 37
Applications   Запись видео


Запись видео




   Легковесная запись видео
   Позволяет пользователям создавать демо своих приложений
   Демо можно свободно обмениваться

   It’s just awesome! c




           Марат Ахин (СПбГПУ)                            TouchDevelop   2012   24 / 37
Applications   Удаленная отладка


Удаленная отладка




   Если у какого-либо пользователя TouchDevelop упал ваш скрипт,
   как воспроизвести ошибку наиболее простым способом?
   Записать трассу на одном устройстве и воспроизвести на другом

         Один из немногих способов отладки в облаке




          Марат Ахин (СПбГПУ)                          TouchDevelop   2012   25 / 37
Applications   Дифференциальное тестирование


Дифференциальное тестирование



Если вспомнить самое начало презентации...
    Две версии TouchDevelop – для Windows Phone и для HTML5/JS
    Обе версии должны соответствовать одной и той же
    спецификации

    Можно взять трассу с одной версии и проиграть ее на другой
    Все должно работать одинаково...




           Марат Ахин (СПбГПУ)                         TouchDevelop        2012   26 / 37
Applications   Дифференциальное тестирование


Дифференциальное тестирование




   На одной трассе было найдено 5 ошибок в реализации
   спецификации для HTML5/JS версии
   Для анализа использовались текстовый редактор и дебаггер

Отличный способ регрессионного и дифференциального тестирования




           Марат Ахин (СПбГПУ)                         TouchDevelop        2012   27 / 37
Резюме


Содержание

1   Стажировка в MSR

2   TouchDevelop

3   Time Travel

4   Applications

5   Резюме

6   Questions & Answers




              Марат Ахин (СПбГПУ)            TouchDevelop   2012   28 / 37
Резюме


Резюме

   Реализация Trace-and-replay для двух версий TouchDevelop
   Много потенциальных направлений дальнейшего развития




          Марат Ахин (СПбГПУ)             TouchDevelop   2012   29 / 37
Questions & Answers


Содержание

1   Стажировка в MSR

2   TouchDevelop

3   Time Travel

4   Applications

5   Резюме

6   Questions & Answers




              Марат Ахин (СПбГПУ)             TouchDevelop   2012   30 / 37
Questions & Answers


Questions & Answers




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   31 / 37
Самые яркие впечатления


Самые яркие впечатления




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   32 / 37
Самые яркие впечатления


От MSR




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   33 / 37
Самые яркие впечатления


От США




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   34 / 37
Самые яркие впечатления


От ивентов




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   35 / 37
Самые яркие впечатления


От ивентов




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   36 / 37
Самые яркие впечатления


От удивления




         Марат Ахин (СПбГПУ)             TouchDevelop   2012   37 / 37

Weitere ähnliche Inhalte

Andere mochten auch

20080420 machine learning_nikolenko_lecture11
20080420 machine learning_nikolenko_lecture1120080420 machine learning_nikolenko_lecture11
20080420 machine learning_nikolenko_lecture11Computer Science Club
 
Unidad educativa municipal quitumbe
Unidad educativa municipal  quitumbeUnidad educativa municipal  quitumbe
Unidad educativa municipal quitumbeSteven Lalvay
 
Mobiilioppiminen on kokemuksellista
Mobiilioppiminen on kokemuksellistaMobiilioppiminen on kokemuksellista
Mobiilioppiminen on kokemuksellistaPauliina Venho
 
هل ستيفين ساكر مقدم برنامج "هارد توك" متحيز بلغة جسده ضد خالد مشعل؟؟
هل ستيفين ساكر مقدم برنامج "هارد توك"  متحيز بلغة جسده ضد خالد مشعل؟؟هل ستيفين ساكر مقدم برنامج "هارد توك"  متحيز بلغة جسده ضد خالد مشعل؟؟
هل ستيفين ساكر مقدم برنامج "هارد توك" متحيز بلغة جسده ضد خالد مشعل؟؟اسماء الشرباتي
 
20081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture1220081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture12Computer Science Club
 
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro Il cloud per l’accelerazione del business delle PMI: il progetto Icaro
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro Paolo Nesi
 
Coffee talk ~ pemuda indonesia foundation
Coffee talk ~ pemuda indonesia foundationCoffee talk ~ pemuda indonesia foundation
Coffee talk ~ pemuda indonesia foundationRizky Faisal
 
20081104 auctions nikolenko_lecture06
20081104 auctions nikolenko_lecture0620081104 auctions nikolenko_lecture06
20081104 auctions nikolenko_lecture06Computer Science Club
 
Overview of Distributed Systems course by Paolo Nesi
Overview of Distributed Systems course by Paolo NesiOverview of Distributed Systems course by Paolo Nesi
Overview of Distributed Systems course by Paolo NesiPaolo Nesi
 
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011Pauliina Venho
 
Cum ne racim cu america
Cum ne racim cu americaCum ne racim cu america
Cum ne racim cu americaClaudiu D
 

Andere mochten auch (20)

20080420 machine learning_nikolenko_lecture11
20080420 machine learning_nikolenko_lecture1120080420 machine learning_nikolenko_lecture11
20080420 machine learning_nikolenko_lecture11
 
Unidad educativa municipal quitumbe
Unidad educativa municipal  quitumbeUnidad educativa municipal  quitumbe
Unidad educativa municipal quitumbe
 
Mobiilioppiminen on kokemuksellista
Mobiilioppiminen on kokemuksellistaMobiilioppiminen on kokemuksellista
Mobiilioppiminen on kokemuksellista
 
هل ستيفين ساكر مقدم برنامج "هارد توك" متحيز بلغة جسده ضد خالد مشعل؟؟
هل ستيفين ساكر مقدم برنامج "هارد توك"  متحيز بلغة جسده ضد خالد مشعل؟؟هل ستيفين ساكر مقدم برنامج "هارد توك"  متحيز بلغة جسده ضد خالد مشعل؟؟
هل ستيفين ساكر مقدم برنامج "هارد توك" متحيز بلغة جسده ضد خالد مشعل؟؟
 
20081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture1220081130 auctions nikolenko_lecture12
20081130 auctions nikolenko_lecture12
 
Hong1212
Hong1212Hong1212
Hong1212
 
title
titletitle
title
 
Fotos de pernos
Fotos de pernosFotos de pernos
Fotos de pernos
 
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro Il cloud per l’accelerazione del business delle PMI: il progetto Icaro
Il cloud per l’accelerazione del business delle PMI: il progetto Icaro
 
Coffee talk ~ pemuda indonesia foundation
Coffee talk ~ pemuda indonesia foundationCoffee talk ~ pemuda indonesia foundation
Coffee talk ~ pemuda indonesia foundation
 
Día de la tierra
Día de la tierraDía de la tierra
Día de la tierra
 
20081104 auctions nikolenko_lecture06
20081104 auctions nikolenko_lecture0620081104 auctions nikolenko_lecture06
20081104 auctions nikolenko_lecture06
 
Libre
LibreLibre
Libre
 
Fitxa tasca el sistema limfàtic
Fitxa tasca el sistema limfàticFitxa tasca el sistema limfàtic
Fitxa tasca el sistema limfàtic
 
Overview of Distributed Systems course by Paolo Nesi
Overview of Distributed Systems course by Paolo NesiOverview of Distributed Systems course by Paolo Nesi
Overview of Distributed Systems course by Paolo Nesi
 
Proposta de examen
Proposta de examenProposta de examen
Proposta de examen
 
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011
Mobiilioppimisen toteutuksia InnoOmniassa, syksy2011
 
20111012202555
2011101220255520111012202555
20111012202555
 
Cum ne racim cu america
Cum ne racim cu americaCum ne racim cu america
Cum ne racim cu america
 
Philippines
PhilippinesPhilippines
Philippines
 

Ähnlich wie 20121028 seminar msr_marat-akhin

Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpgeekfamilyrussia
 
"C# vs JS" by Maxim Goncharuk
"C# vs JS" by Maxim Goncharuk"C# vs JS" by Maxim Goncharuk
"C# vs JS" by Maxim GoncharukBinary Studio
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpGoSharp
 
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Nata_Churda
 
Microsoft Case Competition Mango >> Основная информация
Microsoft Case Competition Mango >> Основная информацияMicrosoft Case Competition Mango >> Основная информация
Microsoft Case Competition Mango >> Основная информацияChangellenge >> Capital
 
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...Andrey Shumakov
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovMaxim Tsepkov
 
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...CodeFest
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanAlexander Byndyu
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодCUSTIS
 
Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Anton Vidishchev
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаMSU GML VideoGroup
 
Полезные сервисы для менеджеров
Полезные сервисы для менеджеровПолезные сервисы для менеджеров
Полезные сервисы для менеджеровTechart Marketing Group
 
лекция типовые ошибки
лекция типовые ошибкилекция типовые ошибки
лекция типовые ошибкиYury Zelensky
 
Организация эффективных процессов
Организация эффективных процессовОрганизация эффективных процессов
Организация эффективных процессовVladimir Melnikov
 
Гадания на тайлах
Гадания на тайлахГадания на тайлах
Гадания на тайлахJulia Suvorova
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практикеAlexander Byndyu
 
PingFest321 final 29112012
PingFest321 final 29112012PingFest321 final 29112012
PingFest321 final 29112012Sergey Bush
 
Дизайнеры и программисты: путь примирения
Дизайнеры и программисты: путь примиренияДизайнеры и программисты: путь примирения
Дизайнеры и программисты: путь примиренияSQALab
 

Ähnlich wie 20121028 seminar msr_marat-akhin (20)

Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
"C# vs JS" by Maxim Goncharuk
"C# vs JS" by Maxim Goncharuk"C# vs JS" by Maxim Goncharuk
"C# vs JS" by Maxim Goncharuk
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
Александра Алябьева "Поиск IT-специалистов. Шагнем за рамки привычного?"
 
Microsoft Case Competition Mango >> Основная информация
Microsoft Case Competition Mango >> Основная информацияMicrosoft Case Competition Mango >> Основная информация
Microsoft Case Competition Mango >> Основная информация
 
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...
Объединение систем моделирования и исполнения бизнес-процессов в единой инфор...
 
Ddd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkovDdd softwarepeople-2013-tsepkov
Ddd softwarepeople-2013-tsepkov
 
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
DDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в кодDDD: проблемы и решения при отражении модели предметной области в код
DDD: проблемы и решения при отражении модели предметной области в код
 
Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010Тестирование приложений с помощью Visual studio 2010
Тестирование приложений с помощью Visual studio 2010
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кода
 
Полезные сервисы для менеджеров
Полезные сервисы для менеджеровПолезные сервисы для менеджеров
Полезные сервисы для менеджеров
 
лекция типовые ошибки
лекция типовые ошибкилекция типовые ошибки
лекция типовые ошибки
 
Организация эффективных процессов
Организация эффективных процессовОрганизация эффективных процессов
Организация эффективных процессов
 
Гадания на тайлах
Гадания на тайлахГадания на тайлах
Гадания на тайлах
 
Impact Mapping на практике
Impact Mapping на практикеImpact Mapping на практике
Impact Mapping на практике
 
PingFest321 final 29112012
PingFest321 final 29112012PingFest321 final 29112012
PingFest321 final 29112012
 
Дизайнеры и программисты: путь примирения
Дизайнеры и программисты: путь примиренияДизайнеры и программисты: путь примирения
Дизайнеры и программисты: путь примирения
 

Mehr von Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mehr von Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20121028 seminar msr_marat-akhin

  • 1. Trace-and-replay: Bringing Time Travel to TouchDevelop MSR Internsip Experience Марат Ахин Санкт-Петербургский государственный политехнический университет 2012 Марат Ахин (СПбГПУ) TouchDevelop 2012 1 / 37
  • 2. Стажировка в MSR Содержание 1 Стажировка в MSR 2 TouchDevelop 3 Time Travel 4 Applications 5 Резюме 6 Questions & Answers Марат Ахин (СПбГПУ) TouchDevelop 2012 2 / 37
  • 3. Стажировка в MSR Стажировка в MSR Марат Ахин (СПбГПУ) TouchDevelop 2012 3 / 37
  • 4. Стажировка в MSR Стажировка в MSR В двух словах... Длительность: 12 недель Достаточно для того, чтобы разработать законченный проект Слишком мало времени, чтобы успеть потерять интерес Работа в одной из ведущих R&D лабораторий мира Статус интерна ≈ статусу FTE (Full-Time Employee) Доступ ко всем ресурсам MSR Полный пакет всевозможных Benefits Соответствующая доля ответственности Возможность посмотреть на Microsoft изнутри «Империя зла» – правда или вымысел? Как работает крупнейшая компания по разработке ПО? Марат Ахин (СПбГПУ) TouchDevelop 2012 4 / 37
  • 5. Стажировка в MSR Стажировка в MSR Research or Development? Марат Ахин (СПбГПУ) TouchDevelop 2012 5 / 37
  • 6. TouchDevelop Содержание 1 Стажировка в MSR 2 TouchDevelop Что? Зачем? Как? 3 Time Travel 4 Applications 5 Резюме 6 Questions & Answers Марат Ахин (СПбГПУ) TouchDevelop 2012 6 / 37
  • 7. TouchDevelop Что? Что? Марат Ахин (СПбГПУ) TouchDevelop 2012 7 / 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
  • 11. TouchDevelop Как? Как? Марат Ахин (СПбГПУ) TouchDevelop 2012 10 / 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
  • 23. Time Travel Как? Воспроизведение Марат Ахин (СПбГПУ) TouchDevelop 2012 22 / 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
  • 32. Questions & Answers Questions & Answers Марат Ахин (СПбГПУ) TouchDevelop 2012 31 / 37
  • 33. Самые яркие впечатления Самые яркие впечатления Марат Ахин (СПбГПУ) TouchDevelop 2012 32 / 37
  • 34. Самые яркие впечатления От MSR Марат Ахин (СПбГПУ) TouchDevelop 2012 33 / 37
  • 35. Самые яркие впечатления От США Марат Ахин (СПбГПУ) TouchDevelop 2012 34 / 37
  • 36. Самые яркие впечатления От ивентов Марат Ахин (СПбГПУ) TouchDevelop 2012 35 / 37
  • 37. Самые яркие впечатления От ивентов Марат Ахин (СПбГПУ) TouchDevelop 2012 36 / 37
  • 38. Самые яркие впечатления От удивления Марат Ахин (СПбГПУ) TouchDevelop 2012 37 / 37