Live coding

Il live coding,[1] a volte indicato anche con i termini on-the-fly programming,[2] just in time programming e conversational programming, è una tecnica che rende l'attività di programmazione parte integrante del programma in esecuzione.[3]

A Study in Keith è una performance musicale di live coding con il software Impromptu eguita da Andrew Sorensen.

Il live coding è maggiormente praticato come forma d'arte performativa e tecnica creativa. L'attività è caratterizzata dalla scrittura del codice sorgente dal vivo e sull'uso della programmazione interattiva in modo improvvisato. Il live coding viene spesso impiegato per creare media digitali basati su suoni e immagini, nonché per gestire sistemi di illuminazione, danza e poesia[4][5]. Tuttavia, è maggiormente diffuso per la creazione di computer music o musica informatica a carattere improvvisativo, anche se possiamo trovarlo impiegato anche in combinazione con la composizione algoritmica .[6] Tipicamente, il processo di scrittura del codice sorgente è reso visibile proiettando lo schermo del computer nello spazio del pubblico, mostrando quindi l'attività di continua ricerca compiuta dal performer.[7] Le tecniche di live coding sono impiegate anche al di fuori della performance dal vivo, come nella produzione di colonne sonore per film[8] o lavori audiovisivi per installazioni artistiche interattive.[9] Inoltre, i computer dei performer possono essere interconnessi grazie a una rete creada ad-oc, rendendo possibile la realizzazione di performance collaborative e l'interazione in gruppo.

Il o la live coder è la persona che esegue l'atto del live coding, solitamente "artisti o artiste che vogliono imparare a programmare, e programmatori che vogliono esprimersi"[10] o, utilizzando i termini di Wang & Cook il "programmatore/esecutore/compositore" .[2]

Il live coding è anche una tecnica sempre più popolare nelle lezioni e nelle conferenze relative alla programmazione ed è stata descritta come una "buona pratica" per le lezioni di informatica da Mark Guzdial .[11]

TecnicheModifica

Il live coding viene praticato attraverso una serie di modalità che sono state sviluppate nel corso della sua storia.

Rappresentazione e manipolazione del tempoModifica

Le possibilità offerte dai media con un forte legame alla temporalità e l'interazione dal vivo con il codice hanno portato a tutta una serie di sviluppi innovativi nel campo dei linguaggi di programmazione. Attraverso l'incorporamento reciproco di sottosistemi imperativi e dichiarativi, all'interno del linguaggio di programmazione SuperCollider[12] è stata realizzata una libreria che consente di inserire dati ed istruzioni incomplete e provvisorie che possono essere poi riscritte e modificate in maniera processuale ovvero mentre sono in esecuzione.[13]

Il linguaggio di programmazione ChucK ha introdotto il concetto della programmazione "fortemente temporizzata" nel 2002, incorporando una precisa scansione dei tempi all'interno del flusso di controllo, grazie all'uso di una sintassi concisa.

"Ricorsività temporale" era un termine coniato inizialmente in relazione all'ambiente di programmazione Impromptu. Gli elementi tecnici all'interno di un ambiente di programmazione continuano a risolvere i problemi di tempo attraverso l'uso di compressori e soluzioni basate sulla ricorsività, ma la sincronizzazione e la scansione temporale rimane comunque un problema significativo. Mentre la forma generale di una ripetizione, essendo qualsiasi ricorsività di funzione asincrona nel tempo, è disponibile per qualsiasi sistema guidato da eventi, Impromptu ha posto un'enfasi speciale su questo particolare modello di progettazione,[14] rendendolo il pezzo centrale dell'architettura della concorrenza su quella piattaforma. La ricorsività temporale è stata ripetutamente utilizzata in SuperCollider e da allora è stata implementata anche nell'ambiente Fluxus .

Un altro approccio funzionale alla rappresentazione del tempo è mostrato nel caso del DSL Tidal,[15] che rappresenta gli schemi temporali come combinatori che operano attraverso funzioni del tempo, simili alle tecniche di programmazione reattiva funzionale .[16]

Programmazione multiutente e memoria condivisaModifica

Per quanto riguarda il live coding, la programmazione multiutente si è sviluppata nel contesto della produzione musicale di gruppo, attraverso il lungo sviluppo del software Republic sviluppato e impiegato dai membri della band PowerBooks Unplugged, un gruppo che si riunisce ed esibisce attraverso l'uso di una rete informatica.[17] Republic è stato integrato all'interno del linguaggio SuperCollider e consente ai partecipanti di scrivere un codice in maniera collaborativa e dal vivo, attraverso una rete informatica. Sono stati fatti altri tentativi con linguaggi di programmazione diversi, come lo spazio di tuple distribuito utilizzato nel linguaggio Impromptu.[18] Inoltre, i linguaggi Overtone, Impromptu ed Extempore supportano sessioni multiutente, in cui un numero qualsiasi di live coder può intervenire sul codice durante una determinata fase del processo di runtime.[19] La scrittura di codice in maniera condivisa può avvenire anche nella stessa stanza, attraverso una rete locale, oppure anche da postazioni remote accedendo, attraverso Internet, ad un server condiviso. Termini come laptop band, laptop orchestra, live coding collaborativo o live coding collettivo vengono utilizzati per inquadrare una pratica di programmazione dal vivo in rete sia attraverso un network locale sia da remoto attraverso l'uso di Internet.

Organizzazioni collettive di live coderModifica

TOPLAP è il nome dell'organizzazione informale costituita nel febbraio 2004 allo scopo di riunire le comunità che si erano formate in diverse parti del mondo attorno alla pratica del live coding. Il nome deriva da un acronimo derivante da termini variabili, ma sempre con le stesse lettere iniziali. Di seguito una lista dei termini più impiegati per comporre l'acronimo: (The|Temporary|Transnational|Terrestrial|Transdimensional) Organization for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming)).[20] L'organizzazione si è dotata anche di un manifesto, ovvero una dichiarazione di intenti dove si affermano alcuni principi che stanno alla base di una performance di live coding. In particolare, uno degli enunciati del manifesto afferma che i o le performer dovrebbero mostrare al pubblico gli schermi dei propri computer durante la loro esibizione. Questo enunciato afferma un principio di trasparenza della performance: ogni membro del pubblico deve essere consapevole che la performance alla quale sta assistendo avviene dal vivo e che il prodotto artistico è creato dal o dalla performer e non dal computer autonomamente.[21]

Ricerca sul live codingModifica

Diversi progetti e gruppi di ricerca sono stati creati per esplorare la tecnica del live coding, spesso adottando approcci interdisciplinari, creando ponti tra l'ambito umanistico e quello scientifico. Le prime esperienze di questo tipo, sia per potenziare lo sviluppo della tecnica sia per collocarla all'interno di uno schema teorico coerente, si sono avute dal 2005 al 2008 con il progetto chiamato "Interactivity in Hybrid Networks", finanziato dalla Fondazione tedesca per la ricerca .

Un'altra esperienza di ricerca è stata quella del Live Coding Research Network, supportato dai finanziamenti dell'Arts and Humanities Research Council del Regno Unito. Per due anni, a partire dal febbraio 2014, questo progetto ha organizzato una serie di attività come simposi e laboratori ed una conferenza internazionale, con cadenza annuale, chiamata International Conference on Live Coding (ICLC).[22]

A ottobre 2020 ha preso il via il progetto di ricerca On-The-Fly, finanziato con risorse del programma Creative Europe dell'Unione Europea e condotto da alcuni centri culturali basati in diverse città europee come: Hangar di Barcellona, Spagna; Cretive Coding Utrecht, Paesi Bassi; Ljudmila, Lubiana, Slovenia; ZKM, Karlsruhe, Germania. Lo scopo del progetto è promuovere la pratica del live coding, diffondere la filosofia del software open-source, stimolare la ricerca scientifica nell'ambito del live coding e allargare il pubblico che assiste agli spettacoli o che fruisce di arte creata attraverso il live coding.

Ambienti di live codingModifica

  • Chuck
  • Extempore
  • Fluxus
  • Foxdot
  • Hydra
  • Impromptu
  • ixi lang
  • LiveCode
  • Lua
  • Max
  • Orca
  • Pharo
  • Pure Data
  • Scratch
  • Sonic Pi
  • SuperCollider
  • TidalCycles
  • Wolfram Language

Live coder internazionaliModifica

  • Joanne Armitage
  • Renick Bell
  • Benoît and the Mandelbrots
  • Alexandra Cardenas
  • Nick Collins
  • Shelly Knotts
  • Ron Kuivila
  • Alex McLean
  • Kate Sicchio
  • Slub
  • Ge Wang
  • Adrian Ward
  • Matthew Yee-King
  • Libertad Figueroa
  • Antonio Roberts

NoteModifica

  1. ^ Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), "Live Coding in Laptop Performance", Organised Sound 8(3): 321–30. DOI10.1017/S135577180300030X
  2. ^ a b Wang G. & Cook P. (2004) "On-the-fly Programming: Using Code as an Expressive Musical Instrument", In Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME) (New York: NIME, 2004).
  3. ^ 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.
  4. ^ Magnusson, T. (2013). The Threnoscope. A Musical Work for Live Coding Performance. In Live 2013. First International Workshop on Live Programming.
  5. ^ Tech Know: Programming, meet music, BBC News, 28 agosto 2009. URL consultato il 25 marzo 2010.
  6. ^ Collins, N. (2003) "Generative Music and Laptop Performance Archiviato il 14 maggio 2014 in Internet Archive.", Contemporary Music Review 22(4):67–79.
  7. ^ McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). Visualisation of live code. In Electronic Visualisation and the Arts London 2010.
  8. ^ Julian Rohrhuber, Artificial, Natural, Historical in Transdisciplinary Digital Art. Sound, Vision and the New Screen (PDF), Springer Berlin Heidelberg, 2008, pp. 60–70. URL consultato il 1º agosto 2021 (archiviato dall'url originale l'11 agosto 2011).
  9. ^ creativeapplications.net, http://www.creativeapplications.net/scripts/communion-cinder-scripts-events-special/.
  10. ^ britishscienceassociation.org, http://www.britishscienceassociation.org/blog/live-coding-brings-programming-to-life-an-interview-with-alex-mac.
  11. ^ computinged.wordpress.com, http://computinged.wordpress.com/2011/08/01/what-students-get-wrong-when-building-computational-physics-models-in-python-cabellero-thesis-part-2/.
  12. ^ James McCartney (1996), SuperCollider: a new real time synthesis language, ICMC Proceedings, 1996.
  13. ^ 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.
  14. ^ Sorensen, A & Gardner, H (2010) "Programming With Time: Cyberphysical Programming In Impromptu, In proceedings of the ACM Splash Conference 2010"
  15. ^ Alex McLean, Making programming languages to dance to: Live Coding with Tidal, in In proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design, Gothenburg, 2014.
  16. ^ yaxu.org, https://yaxu.org/tidal/.
  17. ^ Rohrhuber, J., A. de Campo, R. Wieser, J.-K. van Kampen, E. Ho, and H. Hölzl (2007). Purloined letters and distributed persons Archiviato il 3 marzo 2016 in Internet Archive.. In Music in the Global Village Conference 2007.
  18. ^ Sorensen, A. (2010). A distributed memory for networked livecoding performance. In Proceedings of International Computer Music Conference 2010.
  19. ^ Sorensen, A. (2005). Impromptu : an interactive programming environment for composition and performance, In proceedings of the Australasian Computer Music Conference 2005
  20. ^ Ward, A., Rohrhuber, J., Olofsson, F., McLean, A., Griffiths, D., Collins, N., and Alexander, A. (2004). Live algorithm programming and a temporary organisation for its promotion. In Goriunova, O. and Shulgin, A., editors, read_me - Software Art and Cultures.
  21. ^ Toplap.org, http://toplap.org/wiki/ManifestoDraft.
  22. ^ Gtr.ukri.org, https://gtr.ukri.org/projects?ref=AH%2FL007266%2F1.

BibliografiaModifica

Voci correlateModifica

Altri progettiModifica

Collegamenti esterniModifica