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 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.
- TouchDevelop website and web application (Microsoft Research).texttthttp://www.touchdevelop.com.Google Scholar
- U. A. Acar. Self-adjusting computation: (an overview). In Proc. of Partial Evaluation and Program Manipulation (PEPM), pages 1--6, 2009. Google Scholar
Digital Library
- J. L. Armstrong and S. R. Virding. Erlang - an experimental telephony programming language. In Proc. of International Switching Symposium, pages 2--7, 1990.Google Scholar
Cross Ref
- B. Atkinson. Hypercard. Apple Computer, 1987.Google Scholar
- M. M. Burnett, J. W. Atwood Jr, and Z. T. Welch. Implementing level 4 liveness in declarative visual programming languages. In Proc. of the IEEE Symposium on Visual Languages, pages 126--134, 1998. Google Scholar
Digital Library
- M. M. Burnett, M. J. Baker, C. Bohus, P. Carlson, P. J. V. Zee, and S. Yang. The scaling-up problem for visual programming languages. Technical report, Oregon State University, 1994. Google Scholar
Digital Library
- J. Edwards. Subtext: uncovering the simplicity of programming. In Proc. of OOPSLA Onward!, pages 505--518, 2005. Google Scholar
Digital Library
- R. S. Fabry. How to design a system in which modules can be changed on the fly. In Proc. of ICSE, pages 470--476, 1976. Google Scholar
Digital Library
- A. Goldberg and D. Robson. Smalltalk-80: the language and its implementation. Addison-Wesley Longman Publishing Co., Inc., 1983. Google Scholar
Digital Library
- C. Granger. Light Table - a reactive work surface for programming.texttthttp://www.kickstarter.com/projects/ibdknox/-light-table, 2012.Google Scholar
- C. M. Hancock. Real-time programming and the big ideas of computational literacy. PhD thesis, Massachusetts Institute of Technology, 2003. AAI0805688. Google Scholar
Digital Library
- C. M. Hayden, E. K. Smith, M. Denchev, M. Hicks, and J. S. Foster. Kitsune: efficient, general-purpose dynamic software updating for C. In Proc. of OOPSLA, Oct. 2012. Google Scholar
Digital Library
- Z. Hemel and E. Visser. Declaratively programming the mobile web with mobl. In Object oriented programming systems languages and applications (OOPSLA), pages 695--712. ACM, 2011. Google Scholar
Digital Library
- H. Lieberman and C. Fry. Bridging the gulf between code and behavior in programming. In Proc. of CHI, pages 480--486, 1995. Google Scholar
Digital Library
- J. M. Lucassen and D. K. Gifford. Polymorphic effect systems. In In Principles of Programming Languages (POPL, pages 47--57. ACM Press, 1988. Google Scholar
Digital Library
- J. H. Maloney and R. B. Smith. Directness and liveness in the Morphic user interface construction environment. In Proc. of UIST, pages 21--28, nov 1995. Google Scholar
Digital Library
- S. McDirmid. Living it up with a live programming language. In Proc. of OOPSLA Onward!, pages 623--638, October 2007. Google Scholar
Digital Library
- C. Muratori. Immediate-mode graphical user interfaces.textttwww.molly-rocket.com/861, 2005.Google Scholar
- D. A. Norman and S. W. Draper. User Centered System Design; New Perspectives on Human-Computer Interaction. L. Erlbaum Associates Inc., 1986. Google Scholar
Digital Library
- M. Puckette. Pure Data: another integrated computer music environment. In Proc. of International Computer Music Conference, pages 37--41, 1996.Google Scholar
- T. Reenskaug. Thing-model-view-editor an example from a planningsystem,texttthttp://heim.ifi.uio.no/~trygver/1979. Technical report, Xerox PARC, 1979.Google Scholar
- J. Resig. Khan Academy - computer science.texttthttp://www.khan-academy.org/cs.Google Scholar
- E. Sandewall. Programming in an interactive environment: the "LISP" experience. ACM Computing Surveys, 10(1):35--71, Mar. 1978. Google Scholar
Digital Library
- B. Shneiderman. Direct manipulation. a step beyond programming languages. IEEE Transactions on Computers, 16(8):57--69, August 1983. Google Scholar
Digital Library
- N. Tillmann, M. Moskal, J. de Halleux, and M. Fahndrich. TouchDevelop - programming cloud-connected mobile devices via touchscreen. In Proc. of SPLASH Onward!, 2011. Google Scholar
Digital Library
- D. Ungar and R. B. Smith. Self: the power of simplicity. In Proc. of OOPSLA, pages 227--242, December 1987. Google Scholar
Digital Library
- B. Victor. Inventing on principle. Invited talk at the Canadian University Software Engineering Conference (CUSEC), Jan. 2012.Google Scholar
Index Terms
It's alive! continuous feedback in UI programming
Recommendations
Small-Step Live Programming by Example
UIST '20: Proceedings of the 33rd Annual ACM Symposium on User Interface Software and TechnologyLive programming is a paradigm in which the programming environment continually displays runtime values. Program synthesis is a technique that can generate programs or program snippets from examples. \deltextThis paper presents a new programming ...
It's alive! continuous feedback in UI programming
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationLive 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, ...
Live Programming By Example
CHI EA '19: Extended Abstracts of the 2019 CHI Conference on Human Factors in Computing SystemsLive programming is a novel approach for programming practice. Programmers are given real-time feedback when writing code, traditionally via a graphical user interface. Despite live programming's practical values, such as providing an easier overview of ...







Comments