Abstract
A dynamic language promotes ease of use through flexible typing, a focus on high-level programming, and by streamlining the edit-compile-debug cycle. Live languages go beyond dynamic languages with more ease of use features. A live language supports live programming that provides programmers with responsive and continuous feedback about how their edits affect program execution. A live language is also based on high-level constructs such as declarative rules so that programmers can write less code. A live language could also provide programmers with responsive semantic feedback to enable time-saving services such as code completion. This paper describes the design of a textual live language that is based on reactive data-flow values known as signals and dynamic inheritance. Our language, SuperGlue, supports live programming with responsive semantic feedback, which we demonstrate with a working prototype.
- J. L. Armstrong and R. Virding. An experimental telephony switching language. In Proc. of Interantation Switching Symposium, May 1991.Google Scholar
- A. Benveniste, P. L. Geurnic, and C. Jacquemot. Synchronous programming with events and relations: the Signal language and its semantics. In Science of Computer Programming, 1991. Google Scholar
Digital Library
- M. Burnett, J. Atwood, R. Walpole, H. Gottfried, J. Reichwein, and S. Yang. Forms/3: A first-order visual language to explore the boundaries of the spreadsheet paradigm. In Journal of Functional Programming, pages 155--206, Mar. 2001. Google Scholar
Digital Library
- M. M. Burnett, M. J. Baker, C. Bohus, P. Carlson, S. Yang, and P. van Zee. Scaling up visual programming languages. In IEEE Computer, pages 45--54, Mar. 1995. Google Scholar
Digital Library
- P. Caspi, D. Pilaud, N. Halbwachs, and J. A. Plaice. LUSTRE: a declarative language for programming synchronous systems. In Proc. of POPL, 1987. Google Scholar
Digital Library
- C. Chambers. Object-Oriented multi-methods in Cecil. In Proc. of ECOOP, pages 33--56, June 1992. Google Scholar
Digital Library
- C. Chambers. Predicate classes. In Proc. of ECOOP, pages 268--296, July 1993. Google Scholar
Digital Library
- G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In Proc. of of ESOP, 2006. Google Scholar
Digital Library
- J. Edwards. Subtext: Uncovering the simplicity of program. In Proc. of OOPSLA Onward, 2005. Google Scholar
Digital Library
- C. Elliott and P. Hudak. Functional reactive animation. In Proc. of ICFP, volume 32 (8) of SIGPLAN Notices, pages 263--273. ACM, 1997. Google Scholar
Digital Library
- R. W. Floyd. Syntactic analysis and operator precedence. In Journal of the ACM, volume 10 (3), pages 316--333, 1963. Google Scholar
Digital Library
- A. Goldberg and D. Robson. SmallTalk-80: The Language and its Implementation. Addison Wesley, Boston, MA, USA, 1983. Google Scholar
Digital Library
- C. M. Hancock. Real-time Programming and the Big Ideas of Computational Literacy. PhD thesis, Massachusetts Institute of Technology, Sept. 2003. Google Scholar
Digital Library
- P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. In Advanced Functional Programming, volume 2638 of Lecture Notes in Computer Science, pages 159--187. Springer, 2002.Google Scholar
- D. Ingalls, S. Wallace, Y.-Y. Chow, F. Ludolph, and K. Doyle. Fabrik, a visual programming environment. In Proc. of OOPSLA, pages 176--190, Nov. 1988. Google Scholar
Digital Library
- R. M. Karp and R. E. Miller. Properties of a model for parallel computations: Determinacy, termination queueing. SIAM Journal for Applied Mathemetics, 14(6):1390--1410, Nov. 1966.Google Scholar
Cross Ref
- P. O. Latour. Quartz Composer. Apple Computer, 2005. http://developer.apple.com/graphicsimaging/quartz/-quartzcomposer.html.Google Scholar
- J. H. Maloney and R. B. Smith. Directness and liveness in the Morphic user interface construction environment. In ACM Symposium on User Interface Software and Technology, pages 21--28. ACM, 1995. Google Scholar
Digital Library
- Y. Matsumoto. Ruby: Programmers' Best Friend. http://www-.ruby-lang.org/en/.Google Scholar
- S. McDirmid and W. C. Hsieh. SuperGlue: Component programming with Object-Oriented signals. In Proc. of ECOOP, June 2006. Google Scholar
Digital Library
- National Instruments Corporation. LabVIEW User Manual, 1990.Google Scholar
- M. Odersky and et. al. The Scala language specification. Technical report, EPFL, Lausanne, Switzerland, 2007. http://scala.epfl.ch.Google Scholar
- M. Petre. Why looking isn't always seeing: Readership skills and graphical programming. Comm. of the ACM, pages 33--44, June 1995. Google Scholar
Digital Library
- A. Repenning. AgentSheets: an interactive simulation environment with end-user programmable agents. In Proc. of Interaction, 2000.Google Scholar
- E. Sandewall. Programming in an interactive environment: the lisp experience. Computing Surveys, 10(1), Mar. 1978. Google Scholar
Digital Library
- O. Shivers. The semantics of Scheme control-flow analysis. In Proc. of PEMP, pages 190--198, June 1991. Google Scholar
Digital Library
- I. B. Sutherland. SKETCHPAD, a man-machine graphical communication system. In Proc. of the Spring Joint Computer Conference, pages 329--346, 1963.Google Scholar
- T. Teitelbaum and T. W. Reps. The Cornell program synthesizer: A syntax-directed programming environment. Communications of the ACM, 24(9):563--573, 1981. Google Scholar
Digital Library
- D. Ungar and R. B. Smith. Self: the power of simplicity. In Proc. of OOPSLA, pages 227--242, Oct. 1987. Google Scholar
Digital Library
- D. Ungar and R. B. Smith. Programming as an experience: the inspiration for Self. In Proc. of ECOOP, pages 227--242, Aug. 1995. Google Scholar
Digital Library
- G. van Rossum and F. L. Drake. The Python Language Reference Manual, Sept. 2003. Google Scholar
Digital Library
- W. W. Wadge and E. A. Ashcroft. Lucid, the Dataflow Programming Language. Academic Press, 1985. Google Scholar
Digital Library
Index Terms
Living it up with a live programming language
Recommendations
Example-based live programming for everyone: building language-agnostic tools for live programming with LSP and GraalVM
Onward! 2020: Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and SoftwareOur community has explored various approaches to improve the programming experience. Although many of them, such as Example-Based Live Programming (ELP), have shown to be effective, they are still not widespread in conventional programming environments. ...
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 ...
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