Interactive programming
Encyclopedia
Interactive programming is the procedure of writing parts of a program while it is already active. This focuses on the program text as the main interface
for a running process, rather than an interactive application
, where the program is designed in development cycles and used thereafter (usually by a so-called "user", in distinction to the "developer"). Consequently, here, the activity of writing a program becomes part of the program itself.
It thus forms a specific instance of interactive computation
as an extreme opposite to batch processing
, where neither writing the program nor its use happens in an interactive way. The principle of rapid feedback in Extreme Programming
is radicalized and becomes more explicit.
Synonyms: live coding, on-the-fly-programming, just in time programming, conversational programming
Interactive programming has also been used in applications that need to be rewritten without stopping them, a feature which the computer language Smalltalk
is famous for. Generally, dynamic programming language
s provide the environment for such an interaction, so that typically prototyping
and iterative and incremental development
is done while other parts of the program are running.
As this feature is an apparent need in sound design and algorithmic composition, it has evolved significantly there. More recently, researchers have been using this method to develop sonification
algorithms.
Using dynamic programming languages for sound and graphics, interactive programming is also used as an improvisational performance style live coding
, mainly in algorithmic music and video.
User interface
The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...
for a running process, rather than an interactive application
Interactive computing
In computer science, interactive computing refers to software which accepts input from humans — for example, data or commands. Interactive software includes most popular programs, such as word processors or spreadsheet applications. By comparison, noninteractive programs operate without human...
, where the program is designed in development cycles and used thereafter (usually by a so-called "user", in distinction to the "developer"). Consequently, here, the activity of writing a program becomes part of the program itself.
It thus forms a specific instance of interactive computation
Interactive computation
In computer science, interactive computation is a mathematical model for computation that involves communication with the external world during the computation...
as an extreme opposite to batch processing
Batch processing
Batch processing is execution of a series of programs on a computer without manual intervention.Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters...
, where neither writing the program nor its use happens in an interactive way. The principle of rapid feedback in Extreme Programming
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...
is radicalized and becomes more explicit.
Synonyms: live coding, on-the-fly-programming, just in time programming, conversational programming
Application fields
Interactive programming techniques are especially useful in cases where no clear specification of the problem that is to be solved can be given in advance. In such situations (which are not unusual in research), the formal language provides the necessary environment for the development of an appropriate question or problem formulation.Interactive programming has also been used in applications that need to be rewritten without stopping them, a feature which the computer language Smalltalk
Smalltalk
Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...
is famous for. Generally, dynamic programming language
Dynamic programming language
Dynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all...
s provide the environment for such an interaction, so that typically prototyping
Software prototyping
*Software prototyping, refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed...
and iterative and incremental development
Iterative and incremental development
Iterative and Incremental development is at the liver of a cyclic software development process developed in response to the weaknesses of the waterfall model...
is done while other parts of the program are running.
As this feature is an apparent need in sound design and algorithmic composition, it has evolved significantly there. More recently, researchers have been using this method to develop sonification
Sonification
Sonification, a form of auditory display, is the use of non-speech audio to convey information or perceptualize data. Auditory perception has high temporal and pressure resolution, which opens up possibilities for it as an alternative or complement to visualization techniques.For example, the...
algorithms.
Using dynamic programming languages for sound and graphics, interactive programming is also used as an improvisational performance style live coding
Live coding
Live coding is a performance practice centred upon the use of improvised interactive programming and real-time computing in creating sound and image based digital media. Live coding is particularly prevalent in computer music, combining algorithmic composition with improvisation...
, mainly in algorithmic music and video.
Example code
- An example of some code in the dynamic programming language SuperColliderSupercolliderA Supercollider is a high energy particle accelerator. The term may refer to:* Superconducting Super Collider, planned 80 km project in Texas, canceled in 1993...
is available here. - Another example, written in ChucKChucKChucK is a concurrent, strongly timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, Microsoft Windows, and iPhone/iPad. It is designed to favor readability and flexibility for the programmer over other considerations such...
is available here - Live coding of graphics with fluxus: a screenshot
- impromptuImpromptu (programming environment)Impromptu is a Mac OS X programming environment for live coding. Impromptu is built around the Scheme language, which is a member of the Lisp family of languages...
- An example of livecoding in English with Quoth