Live programming is the idea of getting immediate feedback while you’re writing your code, allowing you to get an early idea of what you program will be doing and how it works, or even to see what its potential problems are.
I first became aware of this idea by watching a video from Bret Victor, entitled “Inventing on Principle”. If you haven’t seen it, definitely worth a look. Later, other projects based on these ideas came along. Most notably LightTable, and more recently Uxebu’s Orbit. Of course, “programming” in Excel works much the same way (you change a cell, and every cell that depends on it updates immediately).
(Live programming environment as shows by Bret Victor)
We always dreamed of adding support for this type of development in Cloud9, but didn’t get around to it. Adding live support for programming works great for very specific domains, such as drawing and animation, but is harder to apply more generally. It does generally work better for declarative languages, which is why we’re looking into it at LogicBlox as well.
I have been asked to join the program committee of LIVE, a workshop at ICSE 2013 conference, probably the biggest conference on software engineering in the world. Being in the programming committee means I will review submissions and partially decide if it’s interesting enough to be presented at the workshop.
You can find the call for papers on the LIVE 2013 website:
The workshop will be in the format of an unconference, with topics decided by the interests of the attendees. Below are examples of some, but by far not all (as organizers we do not want to limit the scope of the workshop with our own notion of live programming!) questions that we hope to discuss in the duration of the workshop.
I think this is a super interesting area. If you do too, consider submitting something! The deadline for research papers is Feb 7th and other submissions (tool demos, live coding performances — whatever those may entail) is April 4th. The workshop itself is held May 19th.
More examples of Live programming: