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]  Donald A. Norman,et al.  User Centered System Design: New Perspectives on Human-Computer Interaction , 1988 .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[21]  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).

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