Введение

Интеграция программирования как части работающей программы

Живое программирование, также известное как программирование на лету, программирование в реальном времени и разговорное программирование, делает программирование неотъемлемой частью выполняемой программы. Оно наиболее ярко проявляется как форма исполнительского искусства и творческий метод, основанный на написании исходного кода и использовании интерактивного программирования в импровизационной манере. Живое кодирование часто применяется для создания цифровых медиа на основе звука и изображения, а также световых инсталляций, импровизированного танца и поэзии, хотя особенно распространено в компьютерной музыке, как правило, в форме импровизации, хотя может сочетаться и с алгоритмической композицией. Обычно процесс написания исходного кода визуализируется путем проецирования экрана компьютера в зрительном пространстве, а способы визуализации кода являются областью активных исследований. Методы живого кодирования также используются за пределами выступлений, например, при создании звукового сопровождения для фильмов или аудиовизуальных работ для интерактивных художественных инсталляций. Кроме того, сетевое взаимодействие компьютеров позволяет реализовывать эту практику в группе. Живой кодер – это человек, выполняющий живое кодирование, как правило, «художники, желающие научиться программировать, и программисты, стремящиеся к самовыражению», или, по терминологии Wang & Cook, «программист/исполнитель/композитор».

Техника

Для живого кодирования был разработан и адаптирован ряд техник.

Представление и манипулирование временем

Специфические возможности временных медиа и непосредственного взаимодействия с кодом привели к ряду новых разработок и применений в области разработки языков программирования. Благодаря взаимному встраиванию императивных и декларативных подсистем, язык программирования SuperCollider позволил создать библиотеку, обеспечивающую возможность создания неполных и предварительных спецификаций, которые могут быть переопределены во время выполнения. Язык ChucK в 2002 году представил подход к "строго синхронизированному" программированию, интегрируя точное время в управляющий поток посредством лаконичного синтаксиса. Термин "временная рекурсия" был впервые введен в связи со средой программирования Impromptu. Технические элементы в среде программирования продолжают предлагать решения для компрессии и рекурсии, однако работа со временем оставалась важной проблемой. Хотя общая форма временной рекурсии, представляющая собой любую асинхронную рекурсию функции во времени, доступна в любой событийно-ориентированной системе, Impromptu придает особое значение этому конкретному шаблону проектирования, делая его центральным элементом архитектуры параллелизма на этой платформе. Временная рекурсия неоднократно использовалась в SuperCollider и впоследствии была реализована в среде Fluxus. Другой функциональный подход к представлению времени демонстрируется в Tidal pattern DSL, который представляет шаблоны как комбинаторы, оперирующие функциями времени, подобно методам функционального реактивного программирования.

Многопользовательское программирование и совместная память

Многопользовательское программирование развивалось в контексте совместного создания музыки, благодаря длительной разработке системы Republic, созданной и используемой участниками сетевой группы PowerBooks Unplugged. Republic встроена в язык SuperCollider и позволяет участникам совместно писать живой код, который распределяется по сети компьютеров. Аналогичные разработки существуют и для других языков, например, распределенное пространство кортежей, используемое в языке Impromptu. Кроме того, Overtone, Impromptu и Extempore поддерживают многопользовательские сеансы, в которых любое количество программистов может взаимодействовать с процессом выполнения программы по сети. Практика написания кода совместно может осуществляться в одном помещении через локальную сеть или удаленно, с доступом к общему серверу. Термины, такие как "группа ноутбуков", "оркестр ноутбуков", "совместное живое кодирование" или "коллективное живое кодирование", используются для описания сетевой практики живого кодирования, осуществляемой как локально, так и удаленно.

Организации

TOPLAP (The (Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming) – это неформальная организация, основанная в феврале 2004 года с целью объединения различных сообществ, возникших вокруг сред живого кодирования. Манифест TOPLAP определяет несколько требований к выступлению, соответствующему стандартам TOPLAP, в частности, экраны исполнителей должны проецироваться, а не скрываться. On the fly поддерживает практику живого кодирования с 2020 года. Это проект, финансируемый в рамках программы «Креативная Европа» и реализуемый в Hangar, ZKM, Ljudmila и Creative Code Utrecht.

Исследования

Для изучения живого кодирования было создано несколько исследовательских проектов и групп, часто использующих междисциплинарные подходы, объединяющие гуманитарные и естественные науки. Первые усилия по разработке систем живого кодирования и включению этой новой области в более широкий теоретический контекст были предприняты в рамках исследовательского проекта «Артистическая интерактивность в гибридных сетях», финансируемого Немецким исследовательским обществом с 2005 по 2008 год. Кроме того, исследовательская сеть Live Coding получила финансирование от Совета по исследованиям в области искусств и гуманитарных наук Великобритании на два года, начиная с февраля 2014 года, для поддержки различных мероприятий, включая симпозиумы, семинары и ежегодную международную конференцию под названием Международная конференция по живому кодированию (ICLC).