LIVE 2013 will start with a bang, featuring three speakers with deep roots in the history of live programming.
Steve Tanimoto will be revisiting his framework on "liveness" and thoughts on new levels and directions. David Ungar and Randy Smith will be jointly talking about the hugely inspirational systems ARK and Self. Thor Magnusson will be speaking about the history of the live coding music scene and his newest live coding system.
Steve Tanimoto Revisits Liveness
Liveness in programming environments generally
refers to the ability to modify a running program. It can be
considered as a form of a more general class of behaviors that are
various forms of 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.
Conception is a programmer's playground that blends ideas from systems such as Code Bubbles and Self, allowing a programmer to manipulate source code, execution, output,
and many other programming artifacts, such as diffs and gists. Even at an early stage, Conception has many neat ideas. Watch the video!
CodeHint is an excellent example of how ideas from live programming can be extended into mainstream programming environments.
CodeHint supports predictive programming, which Tanimoto describes as a "fifth-level" of liveness.
CodeHint does this by simultaneously executing different possible API calls, allowing a programmer to interactively select which new changes to encorporate into the program.
The video is best viewed in full-screen with audio.
urMus is a collaborative live coding system, which produces a live instrument manipulated by a performer. The prototype system offers an interesting perspective on
the production of live coding, as well as opening up interesting possibilities for a collobrative team of programmers to bring something to life.
The history of live programming stretches back to the earliest days of computing, assuming several different names, and manifesting in different forms: from interactive interpreters to live art performances.
In the past year of 2012, the concept of “live programming” has
received broad interest among professional software developers
and software engineering researchers. In February,
Bret Victor’s CUSEC keynote talk "Inventing on Principle" received over 400,000 views. Victor’s compelling
demonstrations of live programming concepts spurred
widespread interest, discussions, and followup experiments.
In April, Chris Granger’s Light Table project raised $316,720
from 8,000 people through a crowd-funded Kickstarter campaign,
and subsequently entered the Y Combinator program.
In August, John Resig (jQuery creator) announced that Khan Academy had redesigned their introductory computer science materials to use live programming-like techniques to increase learner engagement.
But where did these ideas come from and where are we headed?
We review some of the history and give a list of useful resources and citations at the end.
Classic Era - Interactive Programming
Live programming is an idea espoused by programming
environments from the earliest days of computing, such as
Lisp machines, Logo, Hypercard, and Smalltalk. In common with all these systems was liveness: Feedback is nearly instantaneous and evaluation is always accessible. For example, any part of the SmallTalk environment could be modified at any time and reflected instantly.
Likewise, in HyperCard, the state of any object was considered to be live and editable at any time.