Live Coding is a topic raised when software developers talk about the tools they like to use, or might like to use in the future.   The main idea behind live coding is to allow a software developer to illustrate the state of variables and other data in the code as coding is carried out.  Some might even extend it to suggesting that coding should take place in a ‘playbox’ that allows immediate simulation of results.

The motivation for live coding seems to be to avoid the need to wait to compile the code, or even to run a script, before obtaining some feedback.  It is orientated around programming as a manual, humanistic art.   Those in favour of live coding want to be able to visualise and anticipate the consequences of their code at the point it is written; to obtain the benefits of computing at the stage when design and restraints are being written.

Many people have contributed to ideas for how to achieve live coding.  One of those is Bret Victor, an independent designer and former Apple employee/consultant has presented many influential talks outlining his principles as a software designer.

One of the questions we might ask about live coding is what current technology helps to illustrate or build the concept?  In some ways it is a bit like Russian dolls – in order to achieve abstraction for software developers, we have to write some lower-level code.   Bret Victor himself has often demonstrated his vision, but not always explained the code in which his utility itself has been written.    The code snippets in his videos suggest ActionScript (associated with Flash technology) or a scripting language similar to JavaScript.

A specific application of the live coding environment (IDE) is COLT software, the ‘Code Orchestra Live Coding’ tool.

A similar idea has been implemented in the LightTable code editing environment.  A talk by Chris Granger, one of the developers, in late 2012, suggested that the tool was implemented in ClojureScript and uses the design pattern of a Component Entity System.

Leave a Reply

Your email address will not be published. Required fields are marked *