Живое кодирование: Программирование как часть исполняемой программы
Live coding
Живое кодирование: интеграция программирования в исполнение. Создание музыки, визуальных эффектов и перформансов в реальном времени. Искусство и техника.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Интеграция программирования как части работающей программы
Integration of programming as part of running program
Живое программирование, также известное как программирование на лету, программирование в реальном времени и разговорное программирование, делает программирование неотъемлемой частью выполняемой программы. Оно наиболее ярко проявляется как форма исполнительского искусства и творческий метод, основанный на написании исходного кода и использовании интерактивного программирования в импровизационной манере. Живое кодирование часто применяется для создания цифровых медиа на основе звука и изображения, а также световых инсталляций, импровизированного танца и поэзии, хотя особенно распространено в компьютерной музыке, как правило, в форме импровизации, хотя может сочетаться и с алгоритмической композицией. Обычно процесс написания исходного кода визуализируется путем проецирования экрана компьютера в зрительном пространстве, а способы визуализации кода являются областью активных исследований. Методы живого кодирования также используются за пределами выступлений, например, при создании звукового сопровождения для фильмов или аудиовизуальных работ для интерактивных художественных инсталляций. Кроме того, сетевое взаимодействие компьютеров позволяет реализовывать эту практику в группе. Живой кодер – это человек, выполняющий живое кодирование, как правило, «художники, желающие научиться программировать, и программисты, стремящиеся к самовыражению», или, по терминологии Wang & Cook, «программист/исполнитель/композитор».
Live coding, sometimes referred to as on the fly programming, just in time programming and conversational programming, makes programming an integral part of the running program. It is most prominent as a performing arts form and a creativity technique centred upon the writing of source code and the use of interactive programming in an improvised way. Live coding is often used to create sound and image based digital media, as well as light systems, improvised dance and poetry, though is particularly prevalent in computer music usually as improvisation, although it could be combined with algorithmic composition. Typically, the process of writing source code is made visible by projecting the computer screen in the audience space, with ways of visualising the code an area of active research. Live coding techniques are also employed outside of performance, such as in producing sound for film or audiovisual work for interactive art installations. Also, the interconnection between computers makes possible to realize this practice networked in group. The figure of live coder is who performs the act of live coding, usually "artists who want to learn to code, and coders who want to express themselves" or in terms of Wang & Cook the "programmer/performer/composer".
Техника
Для живого кодирования был разработан и адаптирован ряд техник.
A range of techniques have been developed and appropriated for the purposes of live coding.
Представление и манипулирование временем
Специфические возможности временных медиа и непосредственного взаимодействия с кодом привели к ряду новых разработок и применений в области разработки языков программирования. Благодаря взаимному встраиванию императивных и декларативных подсистем, язык программирования SuperCollider позволил создать библиотеку, обеспечивающую возможность создания неполных и предварительных спецификаций, которые могут быть переопределены во время выполнения. Язык ChucK в 2002 году представил подход к "строго синхронизированному" программированию, интегрируя точное время в управляющий поток посредством лаконичного синтаксиса. Термин "временная рекурсия" был впервые введен в связи со средой программирования Impromptu. Технические элементы в среде программирования продолжают предлагать решения для компрессии и рекурсии, однако работа со временем оставалась важной проблемой. Хотя общая форма временной рекурсии, представляющая собой любую асинхронную рекурсию функции во времени, доступна в любой событийно-ориентированной системе, Impromptu придает особое значение этому конкретному шаблону проектирования, делая его центральным элементом архитектуры параллелизма на этой платформе. Временная рекурсия неоднократно использовалась в SuperCollider и впоследствии была реализована в среде Fluxus. Другой функциональный подход к представлению времени демонстрируется в Tidal pattern DSL, который представляет шаблоны как комбинаторы, оперирующие функциями времени, подобно методам функционального реактивного программирования.
The specific affordances of time based media and live interaction with code has led to a number of novel developments and uses in programming language design. Through mutual embedding of imperative and declarative subsystems, the programming language SuperCollider permitted to build a library that allows incomplete and provisional specifications which can be rewritten at runtime. The ChucK language introduced an approach to "strongly timed" programming in 2002, embedding precision timing into control flow through a concise syntax. "Temporal recursion" was a term initially coined in relation to the Impromptu programming environment. Technical elements within a programming environment continue to locate compressors and recursion solutions, but timing had been a major issue. While the general form of a temporal recursion, being any asynchronous function recursion through time, is available to any event driven system, Impromptu has placed a special emphasis on this particular design pattern, making it the centre piece of the concurrency architecture on that platform. Temporal recursion had repeatedly been used in SuperCollider and has since been implemented in the Fluxus environment. Another functional approach to the representation of time is shown in the Tidal pattern DSL, which represents patterns as combinators operating over functions of time, similar to techniques in functional reactive programming.
Многопользовательское программирование и совместная память
Многопользовательское программирование развивалось в контексте совместного создания музыки, благодаря длительной разработке системы Republic, созданной и используемой участниками сетевой группы PowerBooks Unplugged. Republic встроена в язык SuperCollider и позволяет участникам совместно писать живой код, который распределяется по сети компьютеров. Аналогичные разработки существуют и для других языков, например, распределенное пространство кортежей, используемое в языке Impromptu. Кроме того, Overtone, Impromptu и Extempore поддерживают многопользовательские сеансы, в которых любое количество программистов может взаимодействовать с процессом выполнения программы по сети. Практика написания кода совместно может осуществляться в одном помещении через локальную сеть или удаленно, с доступом к общему серверу. Термины, такие как "группа ноутбуков", "оркестр ноутбуков", "совместное живое кодирование" или "коллективное живое кодирование", используются для описания сетевой практики живого кодирования, осуществляемой как локально, так и удаленно.
Multi user programming has developed in the context of group music making, through the long development of the Republic system developed and employed by members of the network band PowerBooks Unplugged. Republic is built into the SuperCollider language, and allows participants to collaboratively write live code that is distributed across the network of computers. There are similar efforts in other languages, such as the distributed tuple space used in the Impromptu language. Additionally Overtone, Impromptu and Extempore support multi user sessions, in which any number of programmers can intervene across the network in a given runtime process. The practice of writing code in group can be done in the same room through a local network or from remote places accessing a common server. Terms like laptop band, laptop orchestra, collaborative live coding or collective live coding are used to frame a networked live coding practice both in a local or remote way.
Организации
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.
TOPLAP (The (Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming) is an informal organization formed in February 2004 to bring together the various communities that had formed around live coding environments. The TOPLAP manifesto asserts several requirements for a TOPLAP compliant performance, in particular that performers' screens should be projected and not hidden. On the fly promotes live coding practice since 2020. This is a project co funded by the Creative European program and run in Hangar, ZKM, Ljudmila and Creative Code Utrecht.
Исследования
Для изучения живого кодирования было создано несколько исследовательских проектов и групп, часто использующих междисциплинарные подходы, объединяющие гуманитарные и естественные науки. Первые усилия по разработке систем живого кодирования и включению этой новой области в более широкий теоретический контекст были предприняты в рамках исследовательского проекта «Артистическая интерактивность в гибридных сетях», финансируемого Немецким исследовательским обществом с 2005 по 2008 год. Кроме того, исследовательская сеть Live Coding получила финансирование от Совета по исследованиям в области искусств и гуманитарных наук Великобритании на два года, начиная с февраля 2014 года, для поддержки различных мероприятий, включая симпозиумы, семинары и ежегодную международную конференцию под названием Международная конференция по живому кодированию (ICLC).
A number of research projects and research groups have been created to explore live coding, often taking interdisciplinary approaches bridging the humanities and sciences. First efforts to both develop live coding systems and embed the emerging field in the broader theoretical context happened in the research project Artistic Interactivity in Hybrid Networks from 2005 to 2008, funded by the German Research Foundation. Further, the Live Coding Research Network was funded by the UK Arts and Humanities Research Council for two years from February 2014, supporting a range of activities including symposia, workshops and an annual international conference called International Conference on Live Coding (ICLC).