It's alive! continuous feedback in UI programming

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 execution, 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.

[1]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[2]  Sean McDirmid,et al.  Living it up with a live programming language , 2007, OOPSLA.

[3]  Eelco Visser,et al.  Declaratively programming the mobile web with Mobl , 2011, OOPSLA '11.

[4]  Mitchel Resnick,et al.  Real-time programming and the big ideas of computational literacy , 2003 .

[5]  Donald A. Norman,et al.  User Centered System Design: New Perspectives on Human-Computer Interaction , 1988 .

[6]  Jan Gulliksen,et al.  User-centered System Design , 2011 .

[7]  Nikolai Tillmann,et al.  TouchDevelop: programming cloud-connected mobile devices via touchscreen , 2011, Onward! 2011.

[8]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[9]  Ben Shneiderman,et al.  Direct Manipulation: A Step Beyond Programming Languages , 1983, Computer.

[10]  S Puckette Miller,et al.  Pure Data : another integrated computer music environment , 1996 .

[11]  Jeffrey S. Foster,et al.  Kitsune: efficient, general-purpose dynamic software updating for C , 2012, OOPSLA '12.

[12]  Joe Armstrong,et al.  ERLANG - an experimental telephony programming language , 1990, International Symposium on Switching.

[13]  Margaret Burnett,et al.  The Scaling-up Problem for Visual Programming Languages , 1994 .

[14]  Margaret M. Burnett,et al.  Implementing level 4 liveness in declarative visual programming languages , 1998, Proceedings. 1998 IEEE Symposium on Visual Languages (Cat. No.98TB100254).

[15]  Umut A. Acar Self-adjusting computation: (an overview) , 2009, PEPM '09.

[16]  Erik Sandewall,et al.  Programming in an Interactive Environment: the ``Lisp'' Experience , 1978, CSUR.

[17]  Robert S. Fabry,et al.  How to design a system in which modules can be changed on the fly , 1976, ICSE '76.

[18]  Alan F. Blackwell,et al.  Direct Manipulation , 2009, Encyclopedia of Database Systems.

[19]  Henry Lieberman,et al.  Bridging the gulf between code and behavior in programming , 1995, CHI '95.

[20]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[21]  Randall B. Smith,et al.  Directness and liveness in the morphic user interface construction environment , 1995, UIST '95.

[22]  Jonathan Edwards,et al.  Subtext: uncovering the simplicity of programming , 2005, OOPSLA '05.