La codificació en directe (live coding en anglès),[1] a vegades anomenada programació instantània[2] o programació conversacional, fa que la programació sigui una part integral del programa en execució.[3]
És més destacat com a forma d'arts escèniques i com a tècnica de creativitat centrada en l'escriptura de codi font i l'ús de programació interactiva d'una manera improvisada. La codificació en viu s'utilitza sovint per crear mitjans digitals basats en el so i la imatge, així com sistemes de llum, dansa improvisada i poesia,[4][5] encara que és particularment freqüent en la música per ordinador generalment com a improvisació, tot i que es pot combinar amb la composició algorítmica.[6] Normalment, el procés d'escriptura del codi font es fa visible projectant la pantalla de l'ordinador a l'espai de públic, amb formes de visualitzar el codi en una àrea d'investigació activa.[7] Les tècniques de codificació en directe també s’utilitzen fora de la performance, com per exemple en la producció de so per a pel·lícules [8] o treballs audiovisuals per a instal·lacions artístiques interactives.[9] A més, la interconnexió entre ordinadors permet realitzar aquesta pràctica en xarxa en grup.
La figura del codificador en viu és qui realitza l'acte de codificació en directe, generalment "artistes que volen aprendre a codificar i codificadors que volen expressar-se" [10] o en termes de Wang & Cook el "programador / intèrpret / compositor".[2]
La codificació viva és també una tècnica cada cop més popular dins programació-va relacionar conferències i presentacions de conferència, i ha estat descrit com a "pràctica millor" per conferències d'informàtica per Mark Guzdial.[11]
Tècniques
S'han desenvolupat i apropiat una sèrie de tècniques per a la codificació en viu.
Representació i manipulació de temps
Les possibilitats específiques dels mitjans basats en el temps i la interacció en directe amb el codi han conduït a una sèrie de novetats i usos en el disseny del llenguatge de programació. Mitjançant la inserció mútua de subsistemes imperatius i declaratius, el llenguatge de programació SuperCollider [12] permetre construir una biblioteca que permeti especificacions incompletes i provisionals que es puguin reescriure en temps d'execució.[13]
El llenguatge ChucK va introduir un enfocament a la programació "fortament temporitzada" el 2002, incorporant el temps de precisió al flux de control a través d'una sintaxi concisa.
"Recursió temporal" va ser un terme inicialment encunyat en relació amb l'entorn de programació Impromptu. Els elements tècnics d'un entorn de programació continuen localitzant compressors i solucions de recursivitat, però el temps havia estat un problema important. Tot i que la forma general d'una recursió temporal, sent qualsevol recursió de funció asíncrona a través del temps, està disponible per a qualsevol sistema basat en esdeveniments, Impromptu ha posat un èmfasi especial en aquest patró de disseny particular,[14] convertint-lo en la peça central de l'arquitectura de simultaneïtat a aquesta plataforma. La recursivitat temporal s'havia utilitzat repetidament a SuperCollider i des de llavors s'ha implementat a l'entorn Fluxus .
Un altre enfocament funcional de la representació del temps es mostra al patró de TidalDSL,[15] que representa els patrons com a combinadors que operen en funcions del temps, de manera similar a les tècniques de programació reactiva funcional.[16]
Multi-Programació d'usuari i memòria compartida
La programació multiusuari s'ha desenvolupat en el context de la creació de música en grup, a través del llarg desenvolupament del sistema Republic desenvolupat i emprat per membres de la banda de xarxa PowerBooks Unplugged.[17] Republic està integrat en el llenguatge SuperCollider i permet als participants escriure de forma col·laborativa codi en viu que es distribueix per la xarxa d'ordinadors. Hi ha esforços similars en altres idiomes, com ara l'espai de tupla distribuït que s’utilitza en l'idioma Impromptu.[18] A més, Overtone, Impromptu i Extempore admeten sessions multiusuari, en què qualsevol programador pot intervenir a través de la xarxa en un procés d'execució determinat.[19] La pràctica d'escriure codi en grup es pot fer a la mateixa sala a través d'una xarxa local o des de llocs remots que accedeixen a un servidor comú. Termes com a banda de portàtils, orquestra de portàtils, codificació en viu col·laborativa o codificació en directe col·lectiva s’utilitzen per emmarcar una pràctica de codificació en directe en xarxa, de manera local o remota.
Organitzacions
TOPLAP (Organització (Temporal | Transnacional | Terrestre | Transdimensional) per a la (Promoció | Proliferació | Permanència | Puresa) de la programació en viu (algorisme | Àudio | Art | Artístic)) és una organització informal creada el febrer del 2004 per reunir els diversos comunitats que s’havien format al voltant d'entorns de codificació en viu, basat a Barcelona.[20] El manifest TOPLAP afirma diversos requisits per a un rendiment compatible amb TOPLAP, en particular que les pantalles dels intèrprets s'hagin de projectar i no amagar.[21]
Recerca
S'han creat diversos projectes de recerca i grups de recerca per explorar la codificació en viu, sovint adoptant enfocaments interdisciplinaris que relacionen les ciències i les humanitats. Els primers esforços tant per desenvolupar sistemes de codificació en viu com per incorporar el camp emergent en el context teòric més ampli es van produir en el projecte de recerca Artistic Interactivity in Hybrid Networks del 2005 al 2008, finançat per la German Research Foundation.[22]
Més enllà, la Xarxa de Recerca de Codificació Viva va ser finançada pels Arts de Regne Unit i Humanities Consell de Recerca per dos anys de febrer 2014, donant suport una gamma d'activitats incloent-hi symposia, els tallers i una conferència internacional anual van cridar Conferència Internacional en Codificació Viva (ICLC).[23]
↑Alan Blackwell, Alex McLean, James Noble, Jochen Otto, and Julian Rohrhuber, "Collaboration and learning through live coding (Dagstuhl Seminar 13382)", Dagstuhl Reports 3 (2014), no. 9, 130–168.
↑James McCartney (1996), SuperCollider: a new real time synthesis language, ICMC Proceedings, 1996.
↑Julian Rohrhuber, Alberto de Campo, and Renate Wieser (2005), Algorithms today - Notes on Language Design for Just In Time Programming, Proceedings of International Computer Music Conference (Barcelona), ICMC, 2005, pp. 455–458.