touch develop a mobile ide in the cloud michał moskal, nikolai tillmann, peli de halleux, tom ball,...

30
touch develo p a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research PEPM Workshop San Diego, January 20, 2014

Upload: wilfrid-gardner

Post on 26-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

touchdevelop

a mobile IDE in the cloud

Michał Moskal, Nikolai Tillmann, Peli de Halleux,

Tom Ball, Sebastian Burckhardt, Manuel

Fähndrich*

Microsoft Research

PEPM WorkshopSan Diego, January 20, 2014

first, most personal, and sometimes only computing device

can you really program on such a tiny screen?

interfaces having always been changing

?

web app (2012)

iOS, Android, Windows PhoneWindows, Mac, Linux

touchdevelop: a touch-first IDE

Windows Phone app(2011)

core editing

demotouchdevelop

touchdevelop.com

typed language + semi-structured editor

typed, imperative, procedural,data-structures, lambda expressions, module system

expressions edited as token sequences

auto-completion by crowd-sourcing

high-level abstractions

language + editor

mission: democratize programming

touchdevelop: BASIC for all devices and the web(or Bourne Shell, AppleScript, VBA, Excel Macros, …)

app-creators to be

students & teachers

enthusiasts

developers who want to prototype

goal: anyone with a computing device

who are our users

publishing, hubcrowd-sourced crashes, coverage, profiles

Electronic Constructor, Rex, Buddy and the Bones

demotouchdevelop

touchdevelop.com

future of programming: devices+cloud+social

Devices: phones, tablets, laptops, desktops, ...Works on all devices, keyboard or not -> editing ASTsEasy access to on-device media and sensorsScripts synchronized across all your devices

Cloud-powered: platform and user scriptsCrowd-sourced crash logging, profiling, coverage collectionCloud data and (soon) executionPlugins in the cloud

Social: user-generated contentScripts, libraries – come with source for tweakingComments, likes, tags, followers, ...Pictures and sounds – searchable Scripts as docs (especially libraries), tutorials (teaching)

touchdevelop.com

400,000+ app downloads

160,000+registered users

70,000+published scripts

700+apps in stores

script ::= meta-info decl*decl ::= action | page | event | global | library | recordaction ::= private? sync? action sig stmt*event ::= event sig stmt*page ::= private? page sig init stmt* display stmt*sig ::= id (id : type)* returns (id : type)*global ::= var id : type flag*record ::= cloud? (object | table | index | decorator) keys (id : type)* values (id : type)*stmt ::= expr | // comment | if expr then stmt* else stmt* | loop do stmt* | boxed stmt*loop ::= while expr | for id < expr | for each id in exprexpr ::= token* (where sig stmt*)*token ::= “...” | true | false | 0 | 1 | ... | ( | ) | , | + | * | ... | async | id |  → id

abstract syntax

Manipulating TouchDevelop programs with TouchDevelop

demotouchdevelop

touchdevelop.com

REST-based service APIs at http://touchdevelop.com/api/...

opportunity: data mining

lists properties

/api/scripts

/api/users

/api/comments

/api/screenshots

/api/reviews

/api/tags

/api/art

...

/api/[id]/api/[scriptid]/text/api/[scriptid]/ast/api/[scriptid]/successors/api/[scriptid]/base/api/[userid]/scripts/api/[scriptid]/comments/api/[scriptid]/screenshots /api/[scriptid]/reviews /api/[userid]/picture… touchdevelop.com/help/cloudservices

high-velocity research platform

IDE powered by the clouddata mining: 1,000+ active user every day, 3,000,000+ program snapshotssocial features (sharing, attribution, discussions, …)information-flow analysis to deal with privacy concernscrowd-sourced profiling, code coverage, crash reportingranking of code by noveltylive programmingcloud-based code synthesis from keywordscloud statecoming soon: collaborative coding, adaptive tutorials, cloud execution, “apps”, …

touchdevelop + education

1st App Day in May 2013, 500+ students. Many follow-up events, and 1500 students planned this year.130,000+ students doing TouchDevelop tutorials in Hour of Code.

Interactive tutorials based on AST diff

demotouchdevelop

touchdevelop.com

sharing data in the cloudmakes apps more social, fun, and convenient.examples: games, settings,chat, favorites, ratings, comments, grocery list…

just tag your data as ‘cloud’,we synchronize and merge

cloud state

cloud state

putting parts of scripts in the cloudmakes mobile apps more efficient and enriches functionalitysupporting non-blockingexecution using distributed state

just tag your code as ‘cloud’, we do the rest…

coming soon: mobile cloud computing

cloudexecution

Cloud chat

demotouchdevelop

touchdevelop.com

try it yourself: touchdevelop.com

questions?touchdevelop

building touchdevelop

backup slidestouchdevelop

.ts

architecture

touchdevelop.com

.js

152,000 lines of C#

12,000 lines of XAML

130,000 lines of C#(plus 10,000 lines of tools in C#)

the scale of things

60,000 lines of TypeScript

4,000 lines of CSS

TypeScript JavaScript – types are great!TypeScript is JavaScript+type annotationsTypeScript compiler erases type annotations

reality check: HTML5 is still work in processno effective standard for storageno effective standard for sensor accessno effective standard for data accesstons of quirks in all engines

reflections after building web app

touchdevelop.com/help/platforms

PC – legacy development model

Android: AIDE, App Inventor, …

iOS: Codea

mobile development environments are becoming popular on all platformsonly touchdevelop embraces new devices(touchscreen, editor, language, social)

related approaches: mobile IDEs

code + run scripts on all devices

highlights

Structured/token split editing TD plugins in TD operating on ASTs

Lint, C++ export, JSON schema generator, decamelizer, localizer, regex explorer, claudifier, many more possible!

Multiple refactorings extract to local, simplify, extract to parameter, promote to global/field, demote to

local, extract action, extract to library, surround with …

Wealth of data in the cloud Language research platform Tutorial – diff

TouchDevelop (www.touchdevelop.com) is…

a simple statically-typed safe programming language

a browser-based programming environment

a set of high-level APIs for sensors, data, services, …

a cloud of programmers, scripts, users, data, bugs, …

computing devices everywhere

smartphones, tablets – mobile, touchscreens

cloud-connected (intermittent)

social communities, crowd-sourcing

education

why do we care?