Живое кодирование [1] , иногда называемое программированием «на лету» [2] , программированием «точно в срок» и диалоговым программированием , делает программирование неотъемлемой частью работающей программы. [3]
Он наиболее известен как форма исполнительского искусства и творческая техника , сосредоточенная на написании исходного кода и использовании интерактивного программирования импровизированным способом. Живое кодирование часто используется для создания цифровых медиа на основе звука и изображения , а также световых систем, импровизированного танца и поэзии, [4] [5] хотя особенно распространено в компьютерной музыке , как правило, как импровизация, хотя его можно сочетать с алгоритмической композицией . [6] Обычно процесс написания исходного кода становится видимым путем проецирования экрана компьютера в пространство аудитории, а способы визуализации кода являются областью активных исследований. [7] Методы живого кодирования также используются вне исполнения, например, при создании звука для фильмов [8] или аудиовизуальной работы для интерактивных художественных инсталляций. [9] Кроме того, взаимосвязь между компьютерами позволяет реализовать эту практику в сетевой группе.
Фигура живого кодера — это тот, кто выполняет акт живого кодирования, обычно это «художники, которые хотят научиться кодировать, и кодеры, которые хотят выразить себя» [10] или, в терминах Вана и Кука, «программист/исполнитель/композитор». [2]
Живое кодирование также становится все более популярной техникой в лекциях и презентациях на конференциях по программированию, и было описано Марком Гуздиалом как «лучшая практика» для лекций по компьютерным наукам . [11]
Для целей живого кодирования был разработан и адаптирован ряд методов.
Конкретные возможности временных медиа и живого взаимодействия с кодом привели к ряду новых разработок и применений в разработке языков программирования. Благодаря взаимному внедрению императивных и декларативных подсистем язык программирования SuperCollider [12] позволил построить библиотеку, которая допускает неполные и предварительные спецификации, которые могут быть переписаны во время выполнения. [13]
В 2002 году в языке ChucK был представлен подход к «строго синхронизированному» программированию, встраивающий точный синхронизм в поток управления с помощью краткого синтаксиса.
Термин «временная рекурсия» изначально был введен в отношении среды программирования Impromptu . Технические элементы в среде программирования продолжают находить компрессоры и решения рекурсии, но синхронизация была главной проблемой. В то время как общая форма временной рекурсии, являющаяся любой асинхронной рекурсией функции во времени, доступна для любой системы, управляемой событиями, Impromptu уделила особое внимание этому конкретному шаблону проектирования, [14] сделав его центральной частью архитектуры параллелизма на этой платформе. Временная рекурсия неоднократно использовалась в SuperCollider и с тех пор была реализована в среде Fluxus .
Другой функциональный подход к представлению времени показан в DSL- паттерне Tidal [ 15] , который представляет паттерны как комбинаторы, работающие над функциями времени, аналогично методам в функциональном реактивном программировании [16] .
Многопользовательское программирование развивалось в контексте группового музицирования, через долгое развитие системы Republic, разработанной и используемой членами сетевой группы PowerBooks Unplugged . [17] Republic встроен в язык SuperCollider и позволяет участникам совместно писать живой код, который распределяется по сети компьютеров. Аналогичные усилия предпринимаются и в других языках, например, в распределенном пространстве кортежей, используемом в языке Impromptu. [18] Кроме того, Overtone, Impromptu и Extempore поддерживают многопользовательские сеансы, в которых любое количество программистов может вмешиваться по сети в заданный процесс выполнения. [19] Практика написания кода в группе может осуществляться в одной комнате через локальную сеть или из удаленных мест, имеющих доступ к общему серверу. Такие термины, как группа ноутбуков, оркестр ноутбуков, совместное живое кодирование или коллективное живое кодирование, используются для обозначения сетевой практики живого кодирования как локально, так и удаленно.
TOPLAP ((Временная|Транснациональная|Наземная|Трансмерная) Организация по (Продвижению|Распространению|Постоянству|Чистоте) Живого (Алгоритмического|Аудио|Искусства|Художественного) Программирования) — неформальная организация, созданная в феврале 2004 года для объединения различных сообществ, сформировавшихся вокруг сред живого кодирования. [20] Манифест TOPLAP устанавливает несколько требований к выступлениям, соответствующим TOPLAP, в частности, что экраны исполнителей должны проецироваться, а не скрываться. [21]
On-the-fly продвигает практику живого кодирования с 2020 года. Это проект, совместно финансируемый программой Creative European и реализуемый в Hangar, ZKM, Ljudmila и Creative Code Utrecht. [22]
Было создано несколько исследовательских проектов и исследовательских групп для изучения живого кодирования, часто с использованием междисциплинарных подходов, объединяющих гуманитарные и естественные науки. Первые попытки как разработать системы живого кодирования, так и встроить новую область в более широкий теоретический контекст были предприняты в исследовательском проекте «Художественная интерактивность в гибридных сетях» с 2005 по 2008 год, финансируемом Немецким исследовательским фондом . [23]
Кроме того, Сеть исследований живого кодирования финансировалась Советом по исследованиям в области искусств и гуманитарных наук Великобритании в течение двух лет с февраля 2014 года, поддерживая ряд мероприятий, включая симпозиумы, семинары и ежегодную международную конференцию под названием Международная конференция по живому кодированию (ICLC). [24]
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )