La codificación en vivo , [1] a veces denominada programación sobre la marcha , [2] programación justo a tiempo y programación conversacional , hace que la programación sea una parte integral del programa en ejecución. [3]
Es más prominente como una forma de arte escénico y una técnica de creatividad centrada en la escritura de código fuente y el uso de programación interactiva de forma improvisada . La codificación en vivo se utiliza a menudo para crear medios digitales basados en sonido e imagen , así como sistemas de iluminación, danza improvisada y poesía, [4] [5] aunque es particularmente frecuente en la música por computadora , generalmente como improvisación, aunque podría combinarse con la composición algorítmica . [6] Normalmente, el proceso de escritura del código fuente se hace visible proyectando la pantalla de la computadora en el espacio de la audiencia, y las formas de visualizar el código son un área de investigación activa. [7] Las técnicas de codificación en vivo también se emplean fuera de la actuación, como en la producción de sonido para películas [8] o trabajo audiovisual para instalaciones de arte interactivo. [9] Además, la interconexión entre computadoras hace posible realizar esta práctica en red en grupo.
La figura del live coder es la de quien realiza el acto de codificar en vivo, normalmente “artistas que quieren aprender a codificar, y codificadores que quieren expresarse” [10] o en términos de Wang & Cook el “programador/intérprete/compositor”. [2]
La codificación en vivo también es una técnica cada vez más popular en conferencias y presentaciones relacionadas con la programación, y Mark Guzdial la ha descrito como una "mejor práctica" para las conferencias de informática . [11]
Se han desarrollado y apropiado una variedad de técnicas para fines de codificación en vivo.
Las posibilidades específicas de los medios basados en el tiempo y la interacción en vivo con el código han dado lugar a una serie de desarrollos y usos novedosos en el diseño de lenguajes de programación. A través de la integración mutua de subsistemas imperativos y declarativos, el lenguaje de programación SuperCollider [12] permitió construir una biblioteca que permite especificaciones incompletas y provisionales que se pueden reescribir en tiempo de ejecución. [13]
El lenguaje ChucK introdujo un enfoque de programación "fuertemente temporizada" en 2002, incorporando temporización de precisión en el flujo de control a través de una sintaxis concisa.
"Recursión temporal" fue un término acuñado inicialmente en relación con el entorno de programación Impromptu . Los elementos técnicos dentro de un entorno de programación siguen ubicando compresores y soluciones de recursión, pero el tiempo ha sido un problema importante. Si bien la forma general de una recursión temporal, que es cualquier recursión de función asincrónica a través del tiempo, está disponible para cualquier sistema controlado por eventos, Impromptu ha puesto un énfasis especial en este patrón de diseño en particular, [14] convirtiéndolo en la pieza central de la arquitectura de concurrencia en esa plataforma. La recursión temporal se ha utilizado repetidamente en SuperCollider y desde entonces se ha implementado en el entorno Fluxus .
Otro enfoque funcional para la representación del tiempo se muestra en el DSL de patrón de marea , [15] que representa patrones como combinadores que operan sobre funciones de tiempo, similares a las técnicas de programación reactiva funcional . [16]
La programación multiusuario se ha desarrollado en el contexto de la creación musical en grupo, a través del largo desarrollo del sistema Republic desarrollado y empleado por miembros de la banda en red PowerBooks Unplugged . [17] Republic está integrado en el lenguaje SuperCollider y permite a los participantes escribir de forma colaborativa código en vivo que se distribuye a través de la red de computadoras. Existen esfuerzos similares en otros lenguajes, como el espacio de tuplas distribuidas utilizado en el lenguaje Impromptu. [18] Además, Overtone, Impromptu y Extempore admiten sesiones multiusuario, en las que cualquier número de programadores puede intervenir a través de la red en un proceso de tiempo de ejecución determinado. [19] La práctica de escribir código en grupo se puede realizar en la misma habitación a través de una red local o desde lugares remotos accediendo a un servidor común. Términos como banda portátil, orquesta portátil, codificación colaborativa en vivo o codificación colectiva en vivo se utilizan para enmarcar una práctica de codificación en vivo en red tanto de forma local como remota.
TOPLAP (La Organización (Temporal|Transnacional|Terrestre|Transdimensional) para la (Promoción|Proliferación|Permanencia|Pureza) de la Programación (Algoritmo|Audio|Arte|Artística) en Vivo) es una organización informal formada en febrero de 2004 para reunir a las diversas comunidades que se habían formado en torno a los entornos de codificación en vivo. [20] El manifiesto de TOPLAP afirma varios requisitos para una actuación que cumpla con TOPLAP, en particular que las pantallas de los artistas deben proyectarse y no ocultarse. [21]
On-the-fly promueve la práctica de codificación en vivo desde 2020. Este es un proyecto cofinanciado por el programa Creative European y se lleva a cabo en Hangar, ZKM, Ljudmila y Creative Code Utrecht. [22]
Se han creado varios proyectos y grupos de investigación para explorar la codificación en vivo, a menudo adoptando enfoques interdisciplinarios que unen las humanidades y las ciencias. Los primeros esfuerzos para desarrollar sistemas de codificación en vivo e integrar el campo emergente en un contexto teórico más amplio ocurrieron en el proyecto de investigación Interactividad artística en redes híbridas de 2005 a 2008, financiado por la Fundación de Investigación Alemana . [23]
Además, la Red de Investigación de Codificación en Vivo fue financiada por el Consejo de Investigación de Artes y Humanidades del Reino Unido durante dos años a partir de febrero de 2014, apoyando una variedad de actividades que incluyen simposios, talleres y una conferencia internacional anual llamada Conferencia Internacional sobre Codificación en Vivo (ICLC). [24]
{{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace )