Live Coding
- aka: on-the-fly programming, just in time programming, conversational programming
- different_from: Interactive Programming
Representation and manipulation of time
The specific affordances of time-based media and live interaction with code has led to a number of novel developments and uses in programming language design. Through mutual embedding of imperative and declarative subsystems, the programming language SuperCollider[12] permitted to build a library that allows incomplete and provisional specifications which can be rewritten at runtime.[13]
The ChucK language introduced an approach to "strongly timed" programming in 2002, embedding precision timing into control flow through a concise syntax.
"Temporal recursion" was a term initially coined in relation to the Impromptu programming environment. Technical elements within a programming environment continue to locate compressors and recursion solutions, but timing had been a major issue. While the general form of a temporal recursion, being any asynchronous function recursion through time, is available to any event driven system, Impromptu has placed a special emphasis on this particular design pattern,[14] making it the centre piece of the concurrency architecture on that platform. Temporal recursion had repeatedly been used in SuperCollider and has since been implemented in the Fluxus environment.
Another functional approach to the representation of time is shown in the Tidal pattern DSL,[15] which represents patterns as combinators operating over functions of time, similar to techniques in functional reactive programming.[16]
Implementations
References
- https://github.com/toplap/awesome-livecoding/
- https://clojure.org/guides/repl/annex_community_resources
Backlinks