ABSTRACT
Live programs can be modified while the program is executing in order to provide a more reactive experience for the programmer. In demanding applications, such programs traditionally utilise pre-defined function calls to compiled libraries. We present a system that enables demanding live programs to be built where the supporting stack of libraries is, itself, live. In such situations, the top level code might be thought of as a simple ``live environment'' that can be created live and that encapsulates code that has ``bubbled-up'' from the supporting libraries. Our system enables this bubbling up to be achieved in an ad-hoc way and with minimal performance penalty. The deep, systems-level liveness that it exhibits is described and compared with other approaches to Live Coding and liveness generally.
The work described here has its origins in the artistic Live Coding of computer music and multimedia. We also discuss its wider uses including the development of interactive multimedia installations and the harnessing of scientific simulation.
- 2017. LLVM Website. http://llvm.org . (2017).Google Scholar
- Samuel Aaron and Alan F Blackwell. 2013. From sonic Pi to overtone: creative musical experiences with domain-specific and functional languages. In Proceedings of the first ACM SIGPLAN workshop on Functional art, music, modeling & design. ACM, 35–46.Google ScholarDigital Library
- Harold Abelson and Gerald Jay Sussman. 1983. Structure and interpretation of computer programs. MIT Press.Google Scholar
- Andrei Alexandrescu. 2010. The D programming language. AddisonWesley Professional.Google Scholar
- Jean-Philippe Bernardy, Patrik Jansson, Marcin Zalewski, Sibylle Schupp, and Andreas Priesnitz. 2008. A comparison of C++ concepts and Haskell type classes. In Proceedings of the ACM SIGPLAN workshop on Generic programming. ACM, 37–48.Google ScholarDigital Library
- Hank Bromley, H Bromley, and Richard Lamson. 1987. LISP Lore: A Guide to Programming the LISP Machine Second Edition. Springer.Google Scholar
- Luke Church, Chris Nash, and Alan F Blackwell. 2010. Liveness in notation use: From music to programming. Proceedings of PPIG 2010 (2010), 2–11.Google Scholar
- Viktor K Decyk. 2017. Skeleton Codes Website UCLA. http: //picksc.idre.ucla.edu/software/skeleton-code/ . (2017).Google Scholar
- Jonathan Edwards. 2005. Subtext: uncovering the simplicity of programming. In ACM SIGPLAN Notices, Vol. 40. ACM, 505–518. Google ScholarDigital Library
- D Griffiths. 2014. Fluxus. URL http://www.pawfal.org/fluxus (2014).Google Scholar
- Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. 1997. Back to the future: the story of Squeak, a practical Smalltalk written in itself. In ACM SIGPLAN Notices, Vol. 32. ACM, 318–326. Google ScholarDigital Library
- Trevor Jim, Greg Morrisett, Dan Grossman, Michael Hicks, James Cheney, and Yanling Wang. 2002. Cyclone: A safe dialect of C. In USENIX Annual Technical Conference, Vol. 90.Google Scholar
- McCarthy John. 1996. The implementation of LISP. http: //www-formal.stanford.edu/jmc/history/lisp/node3.html . (1996).Google Scholar
- Stefan Kaes. 1988. Parametric overloading in polymorphic programming languages. In European Symposium on Programming. Springer, 131–144. Google ScholarCross Ref
- Glenn Krasner. 1983. Smalltalk-80: Bits of History. Words of Advice (1983).Google Scholar
- Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In Code Generation and Optimization, 2004. CGO 2004. International Symposium on. IEEE, 75–86.Google ScholarCross Ref
- Nicholas D Matsakis and Felix S Klock II. 2014. The rust language. In ACM SIGAda Ada Letters, Vol. 34. ACM, 103–104.Google ScholarDigital Library
- Sean McDirmid. 2007. Living it up with a live programming language. In ACM SIGPLAN Notices, Vol. 42. ACM, 623–638.Google ScholarDigital Library
- Sean McDirmid. 2013. Usable live programming. In Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software. ACM, 53–62.Google ScholarDigital Library
- Floréal Morandat, Brandon Hill, Leo Osvald, and Jan Vitek. 2012. Evaluating the design of the R language. ECOOP 2012–Object-Oriented Programming (2012), 104–131.Google ScholarDigital Library
- Roland Perera. 2013. Interactive functional programming. Ph.D. Dissertation. University of Birmingham.Google Scholar
- Alan J. Perlis. 1982. Epigrams on programming. SIgPLAN Notices 17, 9 (1982), 7–13. Google ScholarDigital Library
- Benjamin C Pierce and David N Turner. 2000. Local type inference. ACM Transactions on Programming Languages and Systems (TOPLAS) 22, 1 (2000), 1–44. Google ScholarDigital Library
- Brett Viktor presentation at CUSEC. 2012. Designing on Principle. https://vimeo.com/36579366 . (2012).Google Scholar
- Kuchera-Morin J Roberts C. 2012. Gibber: Live Coding Audio In The Browser. In In Proceedings of the International Computer Music Conference (ICMC) Ljubljana, Slovenia. ICMC.Google Scholar
- Erik Sandewall. 1978. Programming in an interactive environment: the LISP experience. Comput. Surveys 10, 1 (1978), 35–71. Google ScholarDigital Library
- SciPy. 2017. SciPy. https://www.scipy.org/ . (2017).Google Scholar
- Jonathan Shapiro. 2006. Programming language challenges in systems codes: why systems programmers still use C, and what to do about it. In Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems. ACM, 9.Google ScholarDigital Library
- A.C. Sorensen. 2005. Impromptu: An interactive programming environment for composition and performance. In Proceedings of the Australasian Computer Music Conference 2005. Australasian Computer Music Association.Google Scholar
- A. Sorensen and H. Gardner. 2010. Programming with time: cyberphysical programming with impromptu. In ACM SIGPLAN Notices, Vol. 45. ACM, 822–834. Google ScholarDigital Library
- Dimitrios Souflis. 2016. TinyScheme. (Apr 2016). http://tinyscheme. sourceforge.net/Google Scholar
- Ben Swift, Andrew Sorensen, Henry Gardner, Peter Davis, and Viktor K Decyk. 2016. Live Programming in Scientific Simulation. Supercomputing frontiers and innovations 2, 4 (2016), 4–15.Google Scholar
- Ben Swift, Andrew Sorensen, Henry Gardner, and John Hosking. 2013. Visual code annotations for cyberphysical programming. In Proceedings of the 1st International Workshop on Live Programming. IEEE Press, 27–30.Google ScholarDigital Library
- Steven L Tanimoto. 1990. VIVA: A visual language for image processing. Journal of Visual Languages & Computing 1, 2 (1990), 127–139.Google ScholarDigital Library
- Steven L Tanimoto. 2013. A perspective on the evolution of live programming. In Live Programming (LIVE), 2013 1st International Workshop on. IEEE, 31–34.Google ScholarCross Ref
- Mads Tofte and Jean-Pierre Talpin. 1997. Region-based memory management. Information and computation 132, 2 (1997), 109–176. Google ScholarDigital Library
- G. Wakefield, W. Smith, and C. Roberts. 2010. LuaAV: Extensibility and Heterogeneity for Audiovisual Computing. In Proceedings of the Linux Audio Conference.Google Scholar
- Janet H Walker, David A Moon, Daniel L Weinreb, and Mike McMahon. 1987. The symbolics Genera programming environment. IEEE Software 4, 6 (1987), 36.Google ScholarDigital Library
Index Terms
- Systems level liveness with extempore
Recommendations
A perspective on the evolution of live programming
LIVE '13: Proceedings of the 1st International Workshop on Live ProgrammingLiveness in programming environments generally refers to the ability to modify a running program. Liveness is one form of a more general class of behaviors by a programming environment that provide information to programmers about what they are ...
Watch Me Code: Programming Mentorship Communities on Twitch.tv
Live streaming-an emerging practice of broadcasting video of oneself in real time to an online audience-is often used by people to portray themselves engaged in a craft such as programming. Viewers of these 'creative streams' gather to watch the ...
Human-in-the-loop program synthesis for live coding
FARM 2021: Proceedings of the 9th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and DesignLive Coding is a creative coding practice, where the act of programming itself constitutes a performance. The code written during a Live Coding performance often generates media, for example a continuous stream of music or video. One of the challenges ...
Comments