# Live coding

Le Live coding (parfois appelé « programmation à la volée », ou « programmation juste-à-temps ») est une technique de programmation basée sur l'utilisation de programmation interactive improvisée. Le Live coding est souvent utilisé pour créer des médias digitaux basés sur des sons et des images, et est particulièrement représenté en musique assistée par ordinateur. Il combine musique algorithmique et improvisation. Typiquement, le processus d'écriture est rendu visible par projection de l'écran d'ordinateur dans l'audience, avec des moyens de visualisation du code, et une aire de recherche active. Il existe aussi des approches de live coding humain dans la danse. Les techniques de live coding sont également employées hors audience, comme pour produire des bandes son ou des œuvres audiovisuelles pour des installations d'art interactif
Le live coding est également une technique de plus en plus populaire dans les cours et conférences ayant trait à la programmation, et a été décrit comme une bonne pratique pour les cours d'informatique par Mark Guzdial.

## Techniques de live coding

Différentes techniques ont été développées et adaptées pour les besoins du live coding.

### Représentation et manipulation du temps

Les pressions sur les médias basés sur le temps et l'interaction en temps réel avec le code ont conduit à beaucoup de nouveaux développements et usages dans la conception des langages de programmation. Le langage ChucK a introduit le concept de programmation « à tempo strict » (en anglais : « strongly timed ») en 2002, incluant un timing de précision dans le contrôle de flux, au moyen d'une syntaxe simple et directe.
La « récursivité temporelle » est un terme employé initialement en relation avec l'environnement de programmation Impromptu. Alors que la forme générale d'une récursivité temporelle, fonction asynchrone de récursivité à travers le temps, est utilisable pour tout système événementiel, Impromptu a mis spécialement l'accent sur cet aspect, en faisant la pièce centrale de l'architecture concurrentielle de cette plate-forme. Depuis, la récursivité temporelle a été implémentée dans l'environnement Fluxus, Overtone et le langage de programmation Extempore.

### Programmation multi-utilisateurs et mémoire partagée

La programmation multi-utilisateurs s'est développée dans le contexte de la création de musique en groupe, à travers la longue évolution du système Republic créé et utilisé par les membres du groupe réseau PowerBooks Unplugged. Republic est développé en SuperCollider, et permet aux participants d'écrire en temps réel et de façon collaborative du code qui est distribué sur le réseau d'ordinateurs. Il y a eu des efforts similaires dans d'autres langages, comme l'espace tuple distribué utilisé par le langage Impromptu. De plus, Overtone, Impromptu et Extempore permettent des sessions multi-utilisateurs, dans lesquelles un nombre quelconque de programmeurs peut intervenir en réseau dans un processus d'exécution donné.

## Organisations

TOPLAP (The (Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming) est une organisation informelle constituée en février 2004 pour rassembler diverses communautés qui s'étaient formées autour des environnements de live coding. Le manifeste TOPLAP définit plusieurs contraintes pour une représentation conforme TOPLAP, en particulier le fait que les écrans des interprètes doivent être projetés et non cachés. TOPLAP a organisé de nombreux événements, en particulier le « LOSS Livecode festival » à l'Access Space en 2007, et elle a reçu en 2009 une subvention de la PRS Foundation pour ses activités au Royaume-Uni.
La recherche académique sur le live coding est en cours dans de nombreuses institutions, y compris le Princeton Sound Lab, l'université de Cologne, l'université de technologie du Queensland, l'université Griffith, le centre inter-disciplinaire pour la recherche scientifique en musique à l'université de Leeds, et les studios digitaux de Goldsmiths, University of London. Cependant, les environnements de développement de live coding sont en général des initiatives logicielles libres / open source, et sont donc en partie ou complètement développés par des pratiquants indépendants.

## Groupes notoires

* (en) Slub
* (en) Benoît and the Mandelbrots
* Meta-eX
* Repl Electric
* Exoterrism

## Environnements notoires

* SuperCollider
* ChucK
* COLT (en)
* Impromptu (en)
* Pure Data
* Max
* LiveCode
* TidalCycles (en)
* Fluxus (Environnement de programmation) (en)
* Overtone
* Bonzomatic
* Liste d'environnements de Live Coding sur toplap.org.
* Hydra
* Sardine