It's Alive! (TouchDevelop)
Continuous Feedback in UI Programming

2012-2013
PLDI '13
Keywords: Live, IDE

The live programming feature proposed in the paper is already shipped with the curent version of TouchDevelop. Test it in your web browser!

Unfortunately, Microsoft retired the TouchDevelop platform in June 2019. Its live programming techniques have been adopted by subsequent projects such as Microsoft MakeCode and have impacted programming experience design of various projects such as TextAlive.

Abstract

Live programming allows programmers to edit the code of a running program and immediately see the effect of the code changes. This tightening of the traditional edit-compile-run cycle reduces the cognitive gap between program code and behavior, improving the learning experience of beginning programmers while boosting the productivity of seasoned ones. Unfortunately, live programming is difficult to realize in practice as imperative languages lack well-defined abstraction boundaries that make live programming responsive or its feedback comprehensible.

This paper enables live programming for user interface programming by cleanly separating the rendering and non-rendering aspects of a UI program, allowing the display to be refreshed on a code change without restarting the program. A type and effect system formalizes this separation and provides an evaluation model that incorporates the code update step. By putting live programming on a more formal footing, we hope to enable critical and technical discussion of live programming systems.

This work was done during my internship at Microsoft Research Redmond TouchDevelop team of RiSE Group.

Presentation materials

PLDI 2013 Demo Video

Experimental UI

Publications

Cite this!2013PLDI '13

It's Alive! Continuous Feedback in UI Programming

Sebastian Burckhardt, Manuel Fahndrich, Peli de Halleux, Sean McDirmid, Michal Moskal, Nikolai Tillmann, Jun Kato
Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp.95-104
Copy to the clipboard