1. Programación creativa

1.5. Lenguajes y entornos para la programación creativa

A la hora de programar, según la tarea que vayamos a realizar, podemos usar un tipo de lenguaje u otro. Al mismo tiempo, muchos lenguajes son capaces de realizar tareas muy diversas, por lo que la elección de un lenguaje u otro puede ser compleja.

Figura 7. El algoritmo de conversión de Celsius a Fahrenheit desarrollado en el lenguaje Python
Fuente: elaboración propia.

En el mundo de la programación creativa también tenemos múltiples opciones. A continuación, haremos un repaso por varias de las más populares.

Lenguajes y librerías

  • Processing. Es uno de los primeros proyectos pensados desde su origen para acercar la programación a artistas, diseñadores e interesados sin conocimientos previos. Es un lenguaje basado en Java y que, con el tiempo, ha ido también adaptándose a otros lenguajes, como Python con Processing.py o Javascript con Processing.js o P5.js.
  • P5.js. Proyecto acogido por la fundación Processing y con su misma meta: hacer accesible la programación a artistas y diseñadores con un enfoque muy didáctico. P5.js es una librería (pensemos en ello como una extensión) de JavaScript y está pensada para la web. Es el entorno en el que programaremos a lo largo de la asignatura. Al estar basado en la web, nos facilita la tarea de aprender, ya que no necesitamos descargar nada ni utilizar un editor de texto, sino que podemos hacerlo todo en línea.
  • Openframeworks. Implementado en C++, lenguaje compilado, lo que implica un gran rendimiento a costa de cierta complejidad si queremos aprovechar todas sus capacidades.
  • Cinder. También implementado en C++, más minoritario que Openframeworks pero similar en sus capacidades.

Entornos gráficos de programación

Un tipo de lenguajes que pueden resultar atractivos para quienes se inician en la programación son los que se engloban dentro del paradigma de los entornos gráficos de programación. En estos, en lugar de escribir el código en un editor de texto, disponemos de elementos gráficos que redistribuimos y conectamos entre sí para generar los programas. Muchos están pensados como herramientas didácticas para la enseñanza de la programación, pero otros son usados en entornos profesionales. En muchas ocasiones, también permiten escribir código, combinando una capacidad de prototipado rápido utilizando elementos visuales con un control más fino mediante el código que nosotros creemos.

  • Max-MSP. Se trata de un entorno con más de treinta años de historia, muy enfocado al mundo sonoro pero que cuenta también con grandes capacidades gráficas. Desde hace varios años está integrado como extra en el software de producción musical Ableton Live.
Figura 8. El algoritmo de conversión de Celsius a Fahrenheit desarrollado en Max-MSP
Fuente: elaboración propia.
  • Pure Data. Se trata de una escisión de código abierto de Max-MSP (cualquiera puede descargar y modificar el software). Comparte muchas funcionalidades y la manera de trabajar de Max-MSP, con el atractivo de que su licencia es gratuita al tratarse de un proyecto de código abierto.
  • VVVV. Kit de herramientas multipropósito enfocado en el tratamiento de vídeo en tiempo real e instalaciones multimedia.
  • Touchdesinger. Nacido a partir del software de creación 3D Houdini como solución para trabajar con geometrías tridimensionales en tiempo real, se ha convertido en una herramienta muy completa para la creación digital.

Computación física

Muchas veces en nuestros proyectos podemos querer implementar sensores, luces, motores u otros elementos que interactúen o reaccionen a nuestros programas. Por ello también disponemos de herramientas que nos permiten «salir de la pantalla» y crear interacciones con elementos físicos.

  • Arduino. Nació con el mismo espíritu de Processing de acercar la programación a personas con perfiles creativos, pero en este caso aplicado a la electrónica. Con Arduino resulta muy sencillo crear proyectos de electrónica creativa o implementar sensores y actuadores que agreguen interactividad a nuestros programas.
  • Raspberry Pi. Proyecto cuya meta es hacer la computación accesible a todo el mundo. Por unos 30 € ofrecen un ordenador completamente funcional en el que podemos ejecutar nuestros programas.

Motores de videojuegos

Otra categoría que podemos destacar es la de los entornos para creación de videojuegos. Podemos pensar en un videojuego como la aplicación interactiva total (gráficos y sonidos generados en tiempo real, interacción a través del teclado, ratón u otros dispositivos, etc.), por lo que podemos aprovechar todo lo que nos ofrecen y aplicarlo de manera creativa, creando experiencias que vayan más allá que un simple juego. Estos entornos también suelen venir preparados para muchas tareas que en otros lenguajes u entornos pueden resultar tediosas de realizar, como podrían ser la realidad virtual o aumentada. Podemos pensar en estos como en editores de 3D (Cinema4D, 3D Studio, Blender, etc.) que nos permiten trabajar en tiempo real e incluir programas que controlen los comportamientos de los distintos elementos.

  • Unity 3D. Entorno de creación de videojuegos con multitud de adeptos, desde estudios independientes a grandes compañías. Tiene una gran comunidad detrás y muchos recursos de aprendizaje disponibles. Dentro de Unity podemos programar tanto en Javascript como en C#.
  • Unreal Engine. Otro entorno con gran popularidad, pero con una curva de aprendizaje algo más compleja. En Unreal Engine podemos programar con C++.