MATERIAL DOCENTE

Programación Creativa

Programación Creativa (PC) o Creative Coding es un enfoque emergente de la programación que busca desarrollar objetos digitales interactivos como una forma de expresión con sentido artístico. En esencia, se trata de crear proyectos que sean más expresivos que funcionales. La PC se utiliza para crear imágenes en vivo, muestras de diseño y arte visual, entretenimiento, mapping, arte sonoro, publicidad, prototipos de productos y muchas más variantes. 

En las prácticas de computación creativa entendemos al desarrollo de software como un artefacto cultural. Algo no neutro, que nos permite comunicar nuestras emociones. La computadora, en términos descritos por Lev Manovich, se convierte en un metamedio, que nos permite expandir los medios existentes y por ende nuestra obra. Así, los programas que se generan son vistos como software cultural (Manovich incluye en esa categoría a Photoshop, Illustrator, Premiere, Maya, entre otras).

   
Bolas  Diseño generativo I Pared de colores

A medida que la computación se desarrolló y se hizo un producto popular de consumo distintos artistas se dedicaron a explorar sus posibilidades ligadas al arte y la expresión. Así, personas y grupos en centros de investigación empezaron a formarse en saberes relacionados con aspectos técnicos de la computación, que puedan darles un nivel importante fluidez para poder controlar y dirigir sus nuevas herramientas digitales. De esta manera, surgieron denominaciones a este espacio emergente, como arte electrónico, arte interactivo o arte con nuevos medios. Más allá de ser solo una moda pasajera, el arte digital vino para quedarse en nuestra sociedad, dado que se está consolidando como una dimensión del arte contemporáneo.

 

Fachada digital interactiva. Medialab Prado, Madrid

Una contribución importante al desarrollo del área fue realizada por el MIT Media Lab, un laboratorio de investigación donde la tecnología, la ciencia, el arte y el diseño se entrelazan en proyectos de vanguardia. El profesor John Maeda ha sido uno de los promotores de esta idea, que se basa en la integración entre la ingeniería y el diseño. En su laboratorio, Aesthetics + Computation Group, promovió la innovación en diseño, y escribió sus ideas en un libro seminal (publicado en el año 2004) llamado “Creative Code: Aesthetics + Computation”, donde se popularizó el término “Creative Coding” como el desarrollo de programas para fines estéticos.

 

Programación Creativa en lenguaje Processing

La evolución de las ideas de Maeda se plasmaron en un nuevo lenguaje llamado Processing, desarrollado por dos de sus ex estudiantes en el MIT Media Lab. Casey Reas y Benjamin Fry desarrollaron Processing en el año 2001 como un entorno de aprendizaje de la programación, con sentido artístico, que posibilitara que personas sin conocimientos previos de programación puedan empezar a aprender y a la vez crear sus obras. 

 Desde ya, para trabajar en el área de PC, tenemos que saber el ABC de la programación tradicional. En principio, para empezar a crear no hace falta una inmersión profunda en el aprendizaje de las técnicas de programación, alcanza solo con manejar, de manera fluida, conceptos básicos como: variable, secuencia de instrucciones, operadores básicos, expresiones, estructura condicional, ciclos  y funciones del usuario. Pero lo bueno es que estos conceptos se pueden aprender en un entorno de computación creativa. Por otro lado, más allá de consumir software, como productos cerrados, opacos en su estructura y con acuerdos de uso asimétrico, está la posibilidad de desarrollar nuestros propios programas, ya sea para placer o como mercancía para comercializar.

 

   
¡Ordenarse! Bajar la pared Universos

 Para el desarrollo de la programación creativa hoy existen una amplia gama de herramientas de programación. Esta diversidad se da en, por un lado, existen muchas ramas artísticas a cubrir: composiciones sonoras en tiempo real, animaciones, muros multimedia, performances interactivas, entre las principales, y por otro lado, que hay diferentes maneras de abordar los proyectos de programación creativa. En este abanico de herramientas, que nace en Processing, podemos citar como ejemplos las siguientes:

  • P5.js. Es un entorno y librería de Javascript orientada programación creativa, que permite crear lienzos virtuales que pueden contener: visualizaciones de datos, animaciones, expresiones interactivas en la pantalla de un navegador web. Los proyectos, al basarse en Javascript son universalmente accesibles vía web, sin depender de sistemas operativos ni de instalaciones previas especiales. P5.js fue desarrollado Lauren McCarthy (una artista) en el año 2014, en esencia se basa en una reinterpretación del lenguaje Processing adaptado a la web.
  • D3.js es otra herramienta que permite integrar la visualización de datos en páginas web es D3.js. Se pueden crear visualizaciones de datos interactivas con sentido artístico. Hoy, se utiliza ampliamente en sitios web con el objetivo de integrar gráficos y mapas interactivos en sitios web de periodismo
  • OpenFrameworks es un software de código abierto creado y lanzado en el año 2005 por el artista Zachary Lieberman. El lenguaje continua desarrollándose por una importante comunidad de programadores y diseñadores. openFrameworks se basa en herramientas desarrolladas en lenguaje C++ que se combinan con otros recursos. Tales como: FreeType (manejo de tipografía), OpenGL (para el desarrollo de gráficos), FreeImage (manejo imágenes), Quicktime (gestión de vídeo) y OpenCV (visión artificial) entre las principales. El ambiente de trabajo promueve la creación colectiva de proyectos, en base a facilitar la colaboración.
  • MaxMSP y PureData son herramientas de la programación creativa creadas por Miller Puckette para asistir al desarrollo de proyectos de música creada en computadoras. Max/MSP y Pure Data permiten al usuario procesar señales de audio y vídeo en tiempo real, posibilitando la conexión de diversas herramientas externas.

Arte interactivo, muestra "The Diana Foundation"

La programación creativa también, en ciertas ocasiones, suele incluir objetos tangibles (especialmente componentes de hardware) a sus creaciones. De esta manera puede capturar datos e interactuar con el entorno, como también manejar otras posibilidades de salida. Entre los componentes tangibles más usuales se tienen: placas Arduino o Raspberry, cámaras digitales 2D y 3D, micrófonos, sensores de todo tipo, MIDI, luces LED, proyectores láser, entre los principales.

 

   
Solo en el espacio Me miran, me siguen Funciones vivas

 

¿Por qué la programación creativa en la escuela?

Hoy, existe cierto consenso sobre la enseñanza de contenidos de computación en la educación básica obligatoria. En este contexto, se hace necesario contar con una caja de herramientas amplia que pueda contemplar los distintos gustos y estilos de aprendizaje de los estudiantes. Entendemos que la programación creativa debe sumarse a la mencionada caja como una alternativa, porque permite ofrecer a los estudiantes un nuevo enfoque tanto en las prácticas como en la variedad proyectos que pueden trabajar.

Así como para algunos estudiantes puede resultar interesante trabajar con programas de perfil más administrativo, que se vinculen con bases de datos y cálculos e informase, para otros puede resultar más interesante vincularse con elementos de multimedia con fines expresivos, ya sea para realizar juegos, contar historias o simplemente generar piezas con sentido estético.

Hay experiencias en el mundo donde educadores ya se han interesado por la programación creativa como método para enseñar a programar. Existen ofertas de cursos para el nivel secundario y el grado universitario, no solo en carreras orientadas al arte o al diseño.

Para los jóvenes, los medios de comunicación son parte de sus intereses tecnológicos y en este contexto, la programación multimedia se torna en una herramienta central y motivadora. Esto sucede en gran parte porque la programación creativa ofrece un piso bajo para empezar a aprender desarrollando prototipos y a la vez otorga un techo alto en la experiencia de crear.

Por otro lado, la programación creativa puede realizar un trabajo interdisciplinario integrando las distintas áreas escolares. En este contexto, entendemos que estas prácticas pueden ser una oportunidad para vincular de una forma diferente espacios que vayan de las matemáticas, la física, la ingeniería hasta el arte y las ciencias sociales.

Desde ya, para trabajar en el área, es necesario aprender los conceptos básicos de la programación. En principio, para empezar a crear no hace falta una inmersión profunda en el aprendizaje de las técnicas de programación, alcanza solo con manejar, de manera fluida, conceptos básicos como: variable, secuencia de instrucciones, operadores, expresiones, estructura condicional, ciclos y funciones del usuario. Lo interesante para la programación creativa, es que estos conceptos se pueden aprender en un entorno alternativo a los existentes en la educación, donde los proyectos a crear no derivan en un fin utilitario.

En síntesis, con esta propuesta de taller, queremos proporcionar un enfoque alternativo y complementario a la enseñanza de la programación para llegar a un público estudiantil más amplio. Al ofrecer alternativas a las prácticas tradicionales, pensando en entornos más lúdicos, multimediales y de carácter interactivo, creemos que podemos implicar en el aprendizaje de la programación a jóvenes con diferentes intereses (cercanos a proyectos más expresivos y artísticos).

 


 

Tutorial

"Introducción a la Programación Creativa en Actos"

Dr. Fernando Bordignon

 

Acto I: abran el telón y empecemos ...  
 Acto II: sobre blancos, negros y grises  
 Acto III: puntos, puntos y muchos más puntos  
Acto IV: esa sucesión de puntos llamada línea  
 Acto V: elipses, círculos, rectángulos y cuadrados  
 Acto VI: y llegó el color  
 Acto VII: a programar que se acaba el mundo  
Acto VIII: y si ocurre lo contrario ...  
Acto IX: repetir, iterar, es una cuestión de ciclos  
Acto X: Interacción con el mouse  
 Acto XI: Posiciones en el lienzo  
   

 

 Referencias

Galanter, Philip () What is Generative Art? Complexity Theory as a Context for Art Theory, Interactive Telecommunications Program, New York University, New York, USA

Boden, Margaret y Edmonds, Ernest (2009). «What is Generative Art?». Digital Creativity 20 (1/2): 21-46.

Grover, Shuchi (ed.) (2020) Computer Science in K-12: An A-To-Z Handbook on Teaching Programming. Palo Alto: Edfinity