{"title":"A perspective on the evolution of live programming","authors":"S. Tanimoto","doi":"10.1109/LIVE.2013.6617346","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617346","url":null,"abstract":"Liveness 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 constructing. This paper gives a brief historical perspective on liveness and proposes an extension of a hierarchy given in 1990, to now account for even more powerful execution-oriented tools for programmers. In addition, while liveness concerns the timeliness of execution feedback, considering a broader array of forms of feedback is helpful both in better understanding liveness and in designing ever more powerful development tools.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123331248","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Live logic programming","authors":"S. Rugaber, Z. Hemel, R. Stirewalt","doi":"10.1109/LIVE.2013.6617343","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617343","url":null,"abstract":"Logic programming languages are today used to build applications accessing large database systems. This raises the possibility of building live development environments for them. Of particular interest is how specific language features such as level of abstraction, transactions, etc. affect the design of such an environment. In this paper, we explore this question for a specific logic language, Datalog, contrast traditional and live approaches for its tooling and discuss issues that arise.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"1225 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126356808","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Euclase: A live development environment with constraints and FSMs","authors":"Stephen Oney, B. Myers, Joel Brandt","doi":"10.1109/LIVE.2013.6617342","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617342","url":null,"abstract":"Euclase is a live development environment focused on creating interactive web applications. It uses a programming model that combines constraints and finite state machines to specify interactive behaviors. Euclase is “live” in the sense that while the user is developing code, their program is always executing. Changes made to the source of the program are reflected immediately in the running program. We identify some of the implementation and design challenges of making our development environment live, including performance issues, ensuring predictability, dealing with errors in the source, and handling edge cases such as the removal of code that is currently running. We also discuss how Euclase's use of finite state machines and constraints can help alleviate these difficulties.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116100999","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"SOMETHINGit: A prototyping library for live and sound improvisation","authors":"T. Oda, K. Nakakoji, Yasuhiro Yamamoto","doi":"10.1109/LIVE.2013.6617341","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617341","url":null,"abstract":"Live programming can be considered an interaction with incomplete code. Dynamic languages embrace the similar style of programming, such as pair programming and prototyping in a review session. Static languages require a certain degree of completeness of code, such as type safety and namespace resolution. SOMETHINGit is a Smalltalk library that combines dynamic Smalltalk and static Haskell and VDM-SL. SOMETHINGit enables programmers to write incomplete but yet partially mathematically sound programs by five levels of bridging mechanisms.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126480387","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Co-evolution as the key for live programming","authors":"R. Lemma, Michele Lanza","doi":"10.1109/LIVE.2013.6617340","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617340","url":null,"abstract":"The promise of live programming is to shorten or even break the infamous edit-compile-run cycle, providing live feedback on a program's envisioned behavior while it is being written. Several live programming languages and environments exist, from venerable examples (Smalltalk, LISP) to more recent efforts like Ruby. In most cases either the IDE comes as an afterthought, after the language is designed, or novel languages are made to fit into existing IDEs. We pursue a middle ground by co-evolving both a language and its IDE: we are developing a novel live programming language, called Moon, from scratch, and are concurrently building its IDE. We illustrate our efforts so far and discuss our overall vision.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124460468","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Live mashup tools: Challenges and opportunities","authors":"S. Aghaee, C. Pautasso","doi":"10.1109/LIVE.2013.6617338","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617338","url":null,"abstract":"Live programming is a programming style in which the repetitive task of compiling and running the software being programmed is managed automatically. This style can be a helpful practice in End-User Development (EUD) where the nonprofessional end-users are to be supported through techniques and tools that empower them to create or modify software artifacts. Mashups a form of lightweight Web applications composing reusable content and functionalities available on the Web are a popular target for EUD activities on the Web. EUD for mashups is enabled by intuitive composition environments, called mashup tools. In this paper, we introduce live mashup tools, a new class of mashup tools based on the live programming style. We give a comprehensive definition and classification of live mashup tools, giving examples of how well existing tools fit in this category and discuss open research challenges and opportunities.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129218288","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Live feedback on behavioral changes","authors":"Gustavo Soares, E. Murphy-Hill, Rohit Gheyi","doi":"10.1109/LIVE.2013.6617344","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617344","url":null,"abstract":"The costs to find and fix bugs grows over time, to the point where fixing a bug after release may cost as much as 100 times more than before release. To help programmers find bugs as soon as they are introduced, we sketch a plugin for an integrated development environment that provides live feedback about behavioral changes to Java programs by continuously generating tests, running the tests on the current and previous versions of the program, and comparing the results. Such a tool would allow programmers to better understand how their changes affect the behavior of their programs. As a proof of concept, we developed a prototype that found a bug that remained undetected by pair programmers working on JHotDraw in a previous study. Had the programmers performed this change with our plugin, they would have been notified about the bug as soon as they introduced it.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116148438","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Introducing Circa: A dataflow-based language for live coding","authors":"Andrew Fischer","doi":"10.1109/LIVE.2013.6617339","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617339","url":null,"abstract":"In a live programming environment, the state of the running program is available during the editing process. An ideal live programming system should be able to harness the live program to offer improved abilities for code creation and manipulation. We introduce Circa, a language and platform designed to address this need. We argue in favor of a dataflow-based model of computation, and we show how this format enables useful methods of code inspection and manipulation. We present a framework based on the backpropogation algorithm that allows the user to manipulate their program by expressing a desire against the program's result. We discuss how these code editing abilities can combine to produce a highly effective environment.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"563 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121001373","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Ben Swift, Andrew Sorensen, H. Gardner, J. Hosking
{"title":"Visual code annotations for cyberphysical programming","authors":"Ben Swift, Andrew Sorensen, H. Gardner, J. Hosking","doi":"10.1109/LIVE.2013.6617345","DOIUrl":"https://doi.org/10.1109/LIVE.2013.6617345","url":null,"abstract":"User interfaces for source code editing are a crucial component in any software development environment, and in many editors visual annotations (overlaid on the textual source code) are used to provide important contextual information to the programmer. This paper focuses on the real-time programming activity of `cyberphysical' programming, and considers the type of visual annotations which may be helpful in this programming context.","PeriodicalId":137461,"journal":{"name":"2013 1st International Workshop on Live Programming (LIVE)","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123798476","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}