Definição??
Live coding is the interactive control of algorithmic processes through programming activity (Collins 2011; Ward et al. 2004; Brown 2007).
Live coding is by custom projected for an audience to see and also typically includes improvisation (Collins et al. 2003). The style of music is not fixed, meaning live coding is a performance method rather than a genre (Brown and Sorensen 2009).
Outros termos…
- Live programming ¤
- Interactive programming ¤
- On-the-fly programming ¤
- Performative programming
Um pouco de história.
En rigor, el nacimiento del live coding guarda relacion con el surgimiento de la posibilidad de programar las computadoras y por ende con la historia de los trabajos de Alan Turing . No obstante es posible encontrar antecedentes primigenios en cuanto al concepto mismo de poder motidificar estructuras del lenguaje en tiempo real en diversas manifestaciones culturales. En este sentido y a modo general, toda improvisacion performatica (musical, visual, literaria) podria ser considerada como un proceso de codificacion en vivo. Se suele argumentar tambien que en cierta medida los debates son instancias performaticas en donde se improvisa sobre una serie argumentos segun alguna retorica. En este mismo sentido representativo, suele atribuirse la primera codificacion en vivo a la contienda entre los matematicos XXXX, para de manera continua iterar un problema …………………..
El lenguaje de las maquinas.
Los lenguajes de programación un sistema estructurado de simbolos que permiten la creación de programas informáticos. Los programas, a su vez, son un conjunto de instrucciones que le permiten a una maquina computar secuencias u algoritmos para llevar a cabo alguna determinada funcion. El principio subyacente de un programa es básicamente permitir la comunicacion entre el usuario y la maquina (comunicacione hombre-maquina) y/0 entre el mecanismo mismo ( comunicacion Maquina- Maquina). El lenguaje de máquina es específico de la arquitectura de cada maquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas.
En terminos informaticos, los lenguajes se jerarquizan en niveles segun cuan cerca del lenguaje de la maquina el desarrollador se encuentre. Mientras mas cercano a la maquina, mas bajo el nivel del lenguaje de programacion.
El lenguaje de las maquinas tiene que ver con los estados posibles del sustrato fisico de sus componenetes. En este sentido, la evolucion de los diodos se condice con la re-evolucion de la computacion.
Los primeros diodos eran válvulas o tubos de vacío, también llamados válvulas termoiónicas constituidos por dos electrodos rodeados de vacío en un tubo de cristal, con un aspecto similar al de las lámparas incandescentes. El invento fue desarrollado en 1904 por John Ambrose Fleming, empleado de la empresa Marconi, basándose en observaciones realizadas por Thomas Alva Edison.
Al igual que las lámparas incandescentes, los tubos de vacío tienen un filamento (el cátodo) a través del cual circula la corriente, calentándolo por efecto Joule. El filamento está tratado con óxido de bario, de modo que al calentarse emite electrones al vacío circundante los cuales son conducidos electrostáticamentehacia una placa, curvada por un muelle doble, cargada positivamente (el ánodo), produciéndose así la conducción. Evidentemente, si el cátodo no se calienta, no podrá ceder electrones. Por esa razón, los circuitos que utilizaban válvulas de vacío requerían un tiempo para que las válvulas se calentaran antes de poder funcionar y las válvulas se quemaban con mucha facilidad.
Dos años después de la invención del diodo de vacío, el físico estadounidense Lee De Forest le agregó una rejilla para regular la tensión entre ánodo y cátodo, inventando el triodo, el primer dispositivo amplificador de la historia. Más tarde se le añadió un electrodo más, llamando a esa nueva válvula tetrodo, para finalizar en el pentodo de cinco electrodos. Los últimos dos son los que se pueden encontrar más frecuentemente en circuitos eléctricos.
El científico indio Jagdish Chandra Bose fue el primero en usar un cristal semiconductor para detectar ondas de radio en 1894. El detector de cristal semiconductor fue desarrollado en un dispositivo práctico para la recepción de señales inalámbricas por Greenleaf Whittier Pickard, quién inventó un detector de cristal de silicio en 1903 y recibió una patente de ello el 20 de noviembre de 1906. Otros experimentos probaron con gran variedad de sustancias, de las cuales se usó ampliamente el mineral galena. Otras sustancias ofrecieron un rendimiento ligeramente mayor, pero el galena fue el que más se usó porque tenía la ventaja de ser barato y fácil de obtener. Al principio de la era de la radio, el detector de cristal semiconductor consistía de un cable ajustable (el muy nombrado bigote de gato) el cual se podía mover manualmente a través del cristal para así obtener una señal óptima. Este dispositivo problemático fue rápidamente superado por los diodos termoiónicos, aunque el detector de cristal semiconductor volvió a usarse frecuentemente con la llegada de los económicos diodos de germanio en la década de 1950.
Cicuito Flip-flop
……
Y basicamente el sustrato es la arena…
En los diodos y transitores, el silicio es dopado con el fin de generan componentes que permitan reaccionar de manera distinta, dependiendo del esti. En un material tipo-n las moleculas son dopodas con el fin de tener exceso de electrones (por eso n, de negativo) y un material con electrones extraídos se llama tipo-p (de positivo).
Un diodo se crea juntando estos dos materiales complementarios PN.
Aternando estos meteriales de la forma NPN o PNP obtenemos los transistores. Estos componentes son fundamentales puestos permiten crear interruptores y puertas logicas que permitiran computar el lenguaje
Asi, en este proceso, el silicio dopado, utilizado como sustrado, es preparado para propiciar que su dualidad electrica (semiconductores tipo N y tipo P) permita la construccion de un lenguaje electronico. Este lenguaje es en su encencia una combinacion de interuptores en un marco logico que en su nivel fisico corresponde a poder conmutar estados de una senal, pero en su nivel abstracto corresponde a dos estados distintos cualquieras. Estos dos estados pueden utilizarse como base para estructurar un lenguaje binario.
La misma logica del sustrato electrico (silicio dopado para generar materiales simiconductores, como el transistor) que puede constituirse desde el lenguaje desde una posibilidad para computar, tiene su homologo magnetico. Los imanes son un sustrto perfecto para almcenar informacion. El lenguaje magnetico tambien es intrsicamente binario.
El lenguaje de las maquinas es un lenguaje binario en cuanto, consideran la posibilidad de establecer dos niveles de tension, con la cual los transistores (integrados en chip, integrados en procesadores, integrados) operaran para computar determinadas funciones .
Hay electricidad 1
No hay electricidad 0
Dichos niveles, por abstracción, se simbolizan con los números 0 y 1, por eso el lenguaje de máquina solo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación.
Claude Elwood Shannon, en su libro Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del álgebra de Boole a las redes de conmutación. Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos. Shannon utilizaba el relé como dispositivo físico de conmutación en sus redes, dado que el relé, a igual que una lámpara eléctrica, posee dos estados: activado (encendido) o desactivado (apagado).
El desarrollo tecnológico ha permitido evolucionar desde las redes de relés electromagnéticos a circuitos con tubos de vacío, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados, en cuya cúspide se encuentran los circuitos microprogramados.
Assembler
El lenguaje ensamblador o assembly (en inglés: assembly language) es un lenguaje de programacion de bajo nivel desarrallodo desde 1950. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar segun la arquitectura de un determinado procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador.
high-level programming language
Fortran
Fortran (The IBM Mathematical Formula Translating System) es un lenguaje de programación de alto nivel de propósito general desarrollado originalmente para el equipo IBM 704.
A finales de 1953, John W. Backus propuso una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704.
draft specification for The IBM Mathematical Formula Translating System was completed by November 1954.[9]:71 The first manual for FORTRAN appeared in October 1956,[9]:72 with the first FORTRAN compiler delivered in April 1957.[9]:75
Fortran redujo en 20 veces el número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. Durante una entrevista en 1979 con Think, John Backus, dijo: “Mucho de mi trabajo surgió por ser perezoso. No me gustaba escribir programas y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comencé a trabajar en un sistema de programación para hacer más fácil escribir programas”.6
Lisp machines
Una maquina de LISP es una m’aquina de uso general destinada a ejecutar eficientemente programas escritos en Lisp.
Lisp (históricamente LISP) es una familia de lenguajes de programación de computadora de tipo multiparadigma con larga historia y una inconfundible y útil sintaxis homoicónica basada en la notación polaca.
Desarrollado originalmente en 1958 por John McCarthy y sus colaboradores en el Instituto Tecnológico de Massachusetts, Lisp es el segundo lenguaje de programación de alto nivel de mayor antigüedad; apareció un año después de FORTRAN y uno antes que COBOL.
LOGO
Logo es un lenguaje de programación de alto nivel, en parte funcional, en parte estructurado; de muy fácil aprendizaje, razón por la cual suele ser el lenguaje de programación preferido para trabajar con niños y jóvenes. Fue diseñado con fines didácticos por Danny Bobrow, Wally Feurzeig, Seymour Papert y Cynthia Solomon, los cuales se basaron en las características del lenguaje Lisp.
Papert desarrolló un enfoque basado en su experiencia con Piaget a principios de los sesenta. Fundamentalmente consiste en presentar a los niños retos intelectuales que puedan ser resueltos mediante el desarrollo de programas en Logo. El proceso de revisión manual de los errores contribuye a que el niño desarrolle habilidades metacognitivas al poner en práctica procesos de autocorrección. Es conocido por poder manejar con facilidad gráficas tortuga, listas, archivos y recursividad.
Working at Bell Labs, Mathews wrote MUSIC, the first widely used program for sound generation, in 1957.
FORTH 1965 —– Smalltalk 1980,
MUSIC I (and II, III, …)
The CARL System
Cmix, CLM, and Csound
RTcmix is a real-time software “language” for doing digital sound synthesis and signal-processing. It is written in C/C++, and is distributed open-source, free of charge. In certain respects, it is similar in function to other extant unit-generator-based software languages such as CSOUND, SuperCollider and (to a lesser extent) JSyn and Max/MSP — they do share a common heritage, after all. There are some differences, however, between all these languages… and variety is of course the spice of life!
THE COMPUTER AGE (PART II) : REAL–TIME SYSTEMS
Graphical Music Programming: Max/MSP + Pure Data
SuperCollider: Synthesis Language Redefined
SuperCollider is a text-based audio synthesis language and environment. SuperCollider, like languages before it, supports the notion of unit generators for signal processing (audio and control). However, there is no longer a distinction between the orchestra (sound synthesis) and the score (musical events): both can be implemented in the same framework
Graphical vs. Text–based
THE COMPUTER AGE (PART III) : NEW LANGUAGE EXPLORATIONS
Asi Ron Kuivila, Water Surface (1985) es la primera obra (de la cual se tiene solo es testimonio de Curtis Road) que aplica el codiho en vivo con el fin controlar los recursos sonoros en tiempo real.
The HUB 1986.
The Hub is a computer music band whose members are all designers and builders of their own hardware and software instruments. The group electronically coordinates the activity of their individual systems through a central micro-computer, The Hub itself, as well as manually through ears, eyes, and hands.
https://composerprogrammer.com/toplap1.html
ChucK: Strongly–timed and On–the–fly Programming Language
Custom Music Programming Software
FLOSS
- Libertad de usar el programa bajo cualquier proposito.
- Libertad de estudiar y modificar los codigo fuentes.
- Libertad para compartir y redistruir el programa.
- Libertad para mejorar y liberar nuevas versiones.
Show me your screen
Hacklabs & Hackmeets
Representation
Tal como en la musica, el codigo en vivo permite la indeterminacion y la improvisacion. De hecho, el termino free jazz era un termino revindicado por Coleman y otros musicos que renegaban el termino improvisar, por considerar que no era solo salir de los lenguajes , sino que una completamente nueva y libre.
Representation deals with the elegant mapping of audio concepts to syntactical and semantic constructs in the language. An effective representation should also be straightforward to reason about and maintain.
El codigo como poesia
Perl Poetry
Language and Situated Simulation LASS
Language and Situated Simulation (LASS) theory is a recent development of Dual Coding theory introduced by Barsalou et al. (2008).
According to LASS, the linguistic system is superficial, acting as lile more than a
control mechanism for the simulation system, which is responsible for deep conceptual structure grounded in experience.
Metaphor
Metaphor is oen considered to be a form of poetic wordplay, a window dressing on language. In introducing their Conceptual Metaphor theory, Lakoff and Johnson (1980) argue on
the contrary that metaphor is of central importance to language.
Arguementos codigo funcinal v/s no funcional,,,,, (Cayley
Critical Code Studies
Mark Marino proposes that we should analyze and explicate code as a text like any other, ‘a sign system with its own rhetoric’ and cultural embeddedness.
Pensemos por ejemplo en el concepto detrás de un HOLA MUNDO.
Los programadores suelen como primer acercamiento a un nuevo lenguaje de programacion, imprimir en el terminal la expresion HOLA MUNDO, con el fin de comprobar y celebrar haber establecido de forma correcta la comunicacion entre el hombre y la maquina.
Por lo general en un lenguaje de programacion, para llevar a cabo dicha accion sera necesario hacer definiciones y solicitudes.
DEFINIR texto
IMPRIMIR texto
De este modo, el lenguaje es inherentemente dual, por una parte comunica la operacion y por otra los datos. “Hello” and “World” have significance, just as the function name “print” has a significance that goes far beyond its instructions to the computer and gestures toward a material culture of ink and writing surfaces.
Caley (“Hypertalk”) vs Raley (mesangelle)
In his posting on the electronic book review, “The Code is Not the Text (unless it is the text),” John Cayley argues against a common notion in new media scholarship, that computer code is the text that we, as humanities scholars, study. According to Cayley, the figure of “the code-as-text,” or computer code as the object of interpretation, is “more in the way of decoration or rhetorical flourish, the baroque euphuism of new media.”
Cayley’s chief complaint is that the analyzed “code” in many of the celebrated codeworks exists merely on the surface of the work, output. By this analysis, critics who discuss representations of coding symbols do so without interpreting code as executable instructions or underlying processes.
In his essay, he offers an example of a poem he wrote in a high-level language, “Hypertalk”. The piece can be interpreted by humans and processed, or compiled, by computers. It is “working code,” which is the only kind of code Cayley considers real.
The case of Talon Memmott and Mez (Mary-Anne Breeze), who has created a poetic language (mesangelle)
However, executability of the code is not a prerequisite. In response, Rita Raley’s “Interferences: [Net.Writing] and the Practice of Codework” refutes these unnecessary limitations. She compares Cayley’s privileging of the code (over the output) to Adorno’s “remarks about music as merely a consequence of the score.” As she explains, “codework does not suggest, nor does it need to, that code – the algorithmic score, the instructions that govern and produce the system – itself should be privileged.”Thus Mez’s works are valid codeworks because they play with the structures of code on the display level of the text.
And yet for Raley, the use of coding elements on surface text serves to disrupt our reading (and processing) practices, by means of defamiliarization. Such practice also follows what Raley characterizes as a radical political praxis in codework.
Despite their disagreement over the genre of codework, both Raley and Cayley suggest that code is “a special type of language” that is worthy of the attention of literary scholars.
Florian Cramer in Words Made Flesh: Code, Culture, Imagination, offers another formulation of this debate, opening the definition of software to include even non-functioning code.
I would like to propose that we no longer speak of the code as a text in metaphorical terms, but that we begin to analyze and explicate code as a text, as a sign system with its own rhetoric, as verbal communication that possesses significance in excess of its functional utility
In effect, I am proposing that we can read and explicate code the way we might explicate a work of literature in a new field of inquiry that I call Critical Code Studies (CCS).
The focus of CCS is not literature made of code or code that is literature, although these may benefit from its techniques. Rather, I propose that code itself is a cultural text worthy of analysis and rich with possibilities for interpretation. Of course, some code will yield more opportunities for interpretation than others, but that can also be a product of the critics themselves.
Critical Code Studies (CCS) is an approach that applies critical hermeneutics to the interpretation of computer code, program architecture, and documentation within a socio-historical context. CCS holds that lines of code are not value-neutral and can be analyzed using the theoretical approaches applied to other semiotic systems in addition to particular interpretive methods developed particularly for the discussions of programs.
If as Wendy Hui Kyong Chun has announced, “software is ideology” we might also say computer code is ideology, yet an ideology that is doubly hidden by our illiteracy and by the very screens on which its output delights and distracts (“Stroking” 207).
While open source embodies a particular ideology that makes code accessible for analysis, CCS will analyze more than open source programs. CCS will look broadly at choices in paradigms (such as object-oriented approaches) and closely to specific lines of code.
In his essay, Cayley recognizes multiple audiences for the code. At first glance, the only audience appears to be the machine itself, but as mentioned, there are humans as well. First, the programmer must read the code even while compositing it. Second, other programmers may read the code. Third, non-programmers, such as project managers or audiences of interdisciplinary conferences, may read the code. The code may also end up in the hands of hackers. Even the machine on which the computer runs may prove to be multiple audiences, as parts of the code are passed to other processes and other parts of the machine.
Code (most of it) is not poetry
Loss Pequeño Glazier’s article, “Code as Language” argues that “if language is defined as written symbols organized into combinations and patterns to express and communicate thoughts and feelings – language that executes – then coding is language” (1)
Regarded as more than mere utilitarian commands utilitarian commands, code presents signs of “humor, innovation, irony, double meanings, and a concentration on the play of language.
If code is language, does that make programs poetry? In “The Aesthetics of Generative Code,” Geoff Cox, Alex McClean, and Adrian Ward compare code to poetry, as they develop some techniques for interpreting it. In their words, “Evidently, code works like poetry in that it plays with structures of language itself, as well as our corresponding perceptions” (Cox, McLean, and Ward).
Like Cayley and others, they argue that code’s meaning is bound up with its execution.
Excluding the few art-objects written as poetry, most code is worlds away from literature, film, and visual art and more similar to legal code, inasmuch as the text is functional.
Unlike legal code, however, computer code is typically presumed to be unseen by human eyes.
Nonetheless, except in cases in which the computer generates code that its programmers and users never see, computer code is often seen by other programmers who must rework it. Further, even if the code is only seen by its programmer, like a diary locked away or letters never sent, it is still a semiotic expression.
More importantly, and I hope this is not too vague, there are implications in the way a code tries to perform a function that bear the imprint of epistemologies, cultural assumptions about gender, race and sexuality; economic philosophies; and political paradigms.
(PDF) The Aesthetics of Generative Code | Geoff Cox – Academia.edu
Poetry at the point of its execution (reading and hearing), produces meaning in multitudinousways, and can be performed with endless variations of stress, pronunciation, tempo and style.
Evidently, code works like poetry in that it plays with structures of language itself, as well as ourcorresponding perceptions. In this sense, all poetry might be seen to be generative in that it isalways in the process of becoming.
Code is a notation of an internal structure that thecomputer is executing, expressing ideas, logic, and decisions that operate as an extension of theauthor’s intentions. The written form is merely a computer-readable notation of logic, and is arepresentation of this process.
Code itself is clearly not poetry as such, Like poetry, the aesthetic value of code lies in its execution, not simply its written form.
Current Practitioners of Critical Code Studies
Critics have already set the stage for this analytical project. Notably, Cayley and Glazier have declared that “programming is writing” (Hayles 2004: 80) and more recently that “encoding is writing” (Glazier 2006: 4). Cramer has written, “I believe it is a common mistake to claim that machine language would be only readable to machines and hence irrelevant for human art and literature and, vice versa, literature and art would be unrelated to formal languages” (2001). Although these scholars primarily focus on the relationship of code to literary objects, their statements certainly anticipate, incite, and inspire CCS.
Further, Mateas and Montfort make an intervention in discussions of code aesthetics, by analyzing “weird languages” (“esoteric programming languages” ) and obfuscated code that cannot be explained by elegance or functionality.
Most notably, they introduce “double coding,” a practice which produces source code that can be compiled or read in multiple contexts, for example, a program that can be compiled in multiple languages. Double coding becomes a means for describing the multiple meanings inherent in code-just as it is inherent in natural language-adding the computational realm as another milieu of signification.
Returning to their notion that all programs are “double coded,” we find that all programs present the possibility and opportunity for (de)constructive interpretation. Even so, these objects that purposely play with the conventions of code are particularly rich subjects of analysis.
Addressed were questions of the status of code as language, how programming languages modulate intention, and how programming mediates language. Further, the often contradictory interdependence of language and encoding, the duality of code as notation and instruction, the “otherness” of the executable work, the relevance of particular languages to specific tasks, and the machine/human language border were interrogated.