Taller introducción a la programación creativa con Processing

¡Hola a todos!

Comenzamos una nueva aventura, un nuevo y flamante blog “Processing en Español”.

Processing es un lenguaje de programación fácil de aprender y fácil de utilizar. Especialmente diseñado para artistas y por artistas con infinidad de aplicaciones y muy divertido de aprender. Comenzaré desde el principio e iremos avanzando poco a poco, desde lo más fácil y básico hasta tocar conceptos algo más complicados. Intentaré ser todo lo didáctico que pueda, estoy abierto para resolver vuestras dudas a través del mail e intentaré contestar a vuestros comentarios.

Puedes ver algunos ejemplos de mis experimentos con Processing en mi canal de Tumblr. También estás invitado a conocer algunos de mis proyectos en mi laboratorio creativo: Estación Nómada.

Aprende programación creativa en Air room.
¡Saludos!

Comienza el Taller en el siguiente enlace:
Processing S.O.S.

Processing S.O.S.

Processing S.O.S

Las nuevas tecnologías irrumpieron en en nuestras vidas y las cambiaron para siempre. Por esta razón, dentro de estos nuevos entornos, los diseñadores, artistas, ilustradores, tenemos una amplia gama de ofertas entre las cuales elegir para utilizar como medio creativo.

Una de esas herramientas es Processing, un potente lenguaje de programación basado en Java.

En primer lugar, hay que tener en cuenta que lo crearon diseñadores y que nos permite aprender las bases de los lenguajes de programación, pero con una gran diferencia. Aprendes programación dibujando.

Entonces, ¿Processing qué es? Una respuesta rápida: Entorno de programación de código abierto, para gente creativa, y que no es necesario que sepan nada de programación.

Ya que el principal punto fuerte de Processing es su facilidad de uso, y permite a los creadores empezar rápidamente, generando sofisticadas aplicaciones gráficas e interactivas, al tiempo que minimiza la dificultad asociada a la compilación y generación de código.

Este software te introduce en los principios de la programación, utilizando formas visuales, movimiento e interacción. Además, es un sistema integrado de programación, lenguaje y aprendizaje.

Creado para enseñar los fundamentos de la programación computacional dentro de un contexto visual, servir como software sketch book, (bocetos de software) y como herramienta de producción.

Estudiantes, artistas, diseñadores usan Processing para aprender, crear prototipos y producir.


Enlaces de interés:


¿Por qué aprender programación?

¿Por qué aprender programación?

Los mercados laborales

Uno de los lugares donde más afectan las nuevas tecnologías es a los mercados laborales.

Mientras los diseñadores en los 90’s, pensábamos en carteles, tarjetas de visita, cartas, etc., en el cambio de siglo ya estábamos pensando en banners, webs, pantallas e interactivo. 

Los diseñadores, en su gran mayoría, hemos tenido que aprender a dominar nuevas tecnologías, nuevos medios y nuevas herramientas a medida que han ido apareciendo en nuestras vidas.

Los perfiles se difuminan, y hoy por hoy, ya existen programadores que diseñan y diseñadores que programan. Es muy posible que en el futuro, estas diferencias se difuminen aún más, y la programación y el diseño, se complementen, o conviertan en asignaturas formativas básicas. Es posible.

¿Por qué aprender programación

Las aplicaciones que solemos utilizar los diseñadores entienden lenguajes de programación.

Como Processing sigue las mismas estructuras que siguen otros lenguajes de programación, todo este aprendizaje, servirá cuando mañana queramos aplicar nuestros conocimientos en programación en After Effect, Photoshop, UNITY 3D, CINEMA 4D, etc. Todas nuestras aplicaciones comprenden y aceptan código.

¿Son los lenguajes de programación un medio creativo?

Sí, el lenguaje de programación es considerado un medio creativo. Como resultado, un poco más adelante, veremos que el MIT y el C3 son pioneros en considerar al lenguaje de programación como medio creativo, situando la programación a la altura de la música, la danza o la pintura.

Por lo tanto, debemos comenzar a ser conscientes del potencial en el ámbito creativo que nos proporciona la programación, además de la universalidad de estos lenguajes, que pueden ser entendidos como un nuevo esperanto, ya que siguen reglas y estándares internacionales. Como resultado, a día de hoy, podemos crear en cualquier parte del mundo, para cualquier parte del mundo.

Si nunca has programado, este es tu sitio.

En este Taller de Programación Creativa, veremos las bases de Processing. No necesitas tener ningún tipo de conocimiento anterior para seguirlo con facilidad. Vamos a ir realizando pequeños programas y explicando cómo funcionan. El temario que vamos a seguir es el siguiente:

  • 01. Introducción
  • 02. Processing
  • 03. Dibujo
  • 04. Variables
  • 05. Interactivo
  • 06. Medios
  • 07. Movimiento
  • 08. Funciones
  • 09. Objetos
  • 10. Arrays
  • 11. Extensiones

 

 
 
 
 
 
 
 

1.1 Teoría vs Práctica

Imagínate inscribirse en una clase para aprender un nuevo deporte, por ejemplo, tenis. (Este tipo de deporte implica una pelota y una raqueta.) Llegas a clase el primer día emocionado a sumergirse en esta exótica nueva actividad, sólo para ser confrontado por una larga conferencia sobre los fundamentos de la teórica sobre la física que se esconde detrás del lanzamiento. Durante las siguientes catorce semanas, el curso se desarrolla en una manera similar, con un par de ejercicios artificiales sobre el terreno para reforzar las conferencias.

No sé vosotros, pero después de unas semanas, ¿dónde queda aquella primera idea de jugar al tenis? Esto es lo que muchos estudiantes experimentan cuando toman su primera clase de informática.

Por supuesto, el aprendizaje de la teoría detrás del tenis podría proporcionarte información muy interesante y en última instancia valiosa, especialmente si tu objetivo es convertirse en un jugador de tenis internacional. Sin embargo, para la mayoría de nosotros, el buceo directamente en los aspectos teóricos de una actividad como el tenis, o ciencias de la computación, antes de conseguir una aproximación en qué la teoría en realidad podría ser útil, puede ser bastante difícil y desagradable (y muy pocos de nosotros estamos destinados para el Salón de la Fama del tenis) lo peor de todo, este enfoque puede conducir a ideas erróneas sociales más amplias, tales como: la informática es oscura, difícil, e incluso aburrida. 
Estas ideas erróneas también pueden convertirse en profecías auto-cumplidas, en última instancia, la atracción de sólo el tipo de estudiantes que cumplen con un patrón muy concreto, como buenos con las matemáticas, y con aspecto de empollones. Lo que lleva a una población de estudiantes y profesionales que carecen de la diversidad y variada perspectiva. 
En los últimos años, algunos científicos informáticos y otros profesionales de la informática, el autor de este blog incluido, han empezado a cuestionar el enfoque arraigado y estrecho con la enseñanza de la informática. Este blog aboga por una nueva manera de aproximación-codificación creativa, en la que podrás aprender haciendo. Con la construcción de bocetos de código creativo, aprenderás los principios detrás de la informática, pero en el contexto de la creación y el descubrimiento. Volviendo a la analogía del tenis, primero aprenderás cómo pegarle a la bola con la raqueta; a continuación, aprenderás la física que funciona detrás. O, para usar un poco la jerga informática, primero aprenderás a codificar una aplicación en frío, a continuación, aprenderás acerca de los principios fundamentales detrás de ella. No sólo esta manera de programar es más fácil y divertida para aprender, sino que hará que la parte teórica sea mucho más relevante y es de esperar incluso fascinante. 

En este capítulo se ofrece sólo un poco de contexto y los antecedentes para el resto del blog. Aprenderás acerca de la historia de la programación, incluyendo sus orígenes en el famoso MIT Media Lab. Vamos a discutir el enfoque de programación creativa en más detalle, incluyendo algunas investigaciones relevantes en su eficacia. 

1.2 Programación vs Ciencias de la Computación

La programación no es la informática. Pero, desde nuestra perspectiva, es a menudo la parte más divertida de la misma. Sin embargo, hay científicos de la computación que no hacen en realidad programas. Estos son los teóricos que ven el cálculo más como las matemáticas aplicadas que como aplicación práctica. Un teórico de este tipo podría estar interesado en probar algo acerca de la informática, con pruebas matemáticas. Sin embargo, para el usuario final promedio, programación a menudo se equipara con la informática.

Según Dictionary.com, la informática se define como:
“la ciencia que se ocupa de la teoría y los métodos de tratamiento de la información en las computadoras digitales, el diseño de hardware y software, y las aplicaciones de las computadoras.” 
La primera parte de la definición, la teoría y los métodos de tratamiento de la información, se refiere a los principios matemáticos más fundamentales detrás de la computación. Esta es quizás la parte científica más pura de la informática. La investigación en este área afecta a cosas como la velocidad, la eficiencia y fiabilidad de los equipos. Podría decirse que esta área de investigación proporciona la base para todos los demás aspectos y aplicaciones de la informática. Aunque la programación es una parte de esta rama de la ciencia de la computación, su papel es principalmente para probar y verificar la teoría. Esta área es la investigación de la informática.
La segunda parte de la definición dictionary.com, el diseño de hardware y software, es donde la ciencia da paso a la ingeniería y se aplica la teoría del diseño, creando sistemas tangibles. Una compañía como Apple gasta una gran cantidad de tiempo y recursos en investigar cómo los clientes utilizan y sienten su hardware y software, así como la funcionalidad en manos de sus usuarios. Otra forma de describir esta área podría ser: la relación entre los aspectos matemáticos y teóricos de la informática y las cosas increíbles que podemos hacer con ella. La programación es una gran parte de esta zona y se conoce comúnmente como ingeniería de software.

La última parte de la definición, aplicaciones de computadoras (que no debe confundirse con las aplicaciones informáticas) trata de cómo las computadoras (en realidad la programación) se puede aplicar en el mundo. Esta parte de la definición puede ser demasiado general, los ordenadores impactan en casi todos los aspectos de la vida, y es muy probable que este impacto sólo se incremente en el futuro. No es un salto tan grande a día de hoy, imaginar nuestros coches conduciéndose solos, nuestras paredes y encimeras actuando como pantallas táctiles inteligentes, y nuestros dispositivos de comunicación reduciéndose y consiguiendo estar aún más integrados, incluso, puede que en nuestros cuerpos físicos. La programación es muy relevante para esta parte de la informática, sobre todo en el desarrollo de software y hardware especializado de aplicaciones específicas. 
Google ha desarrollado y puesto para su libre descarga el Kit de desarrollo de software de Android, que incluye bibliotecas de código y aplicaciones de software para la creación de aplicaciones de Android personalizadas. Apple tiene su propia plataforma de desarrollo similar, al igual que muchas otras compañías. Estos entornos de desarrollo existen para que las personas puedan programar de manera eficiente sus propias aplicaciones, sin la necesidad de años de entrenamiento formal en informática.
Claramente, esta evolución en el desarrollo de software está desafiando las nociones que se tienen de los conocimientos técnicos necesarios. Hay estudiantes de secundaria que escriben aplicaciones móviles altamente exitosas, artistas que programan obras de arte interactivas y muchos otros “no expertos” creando de pequeñas empresas de software durante la noche. Así que no, la programación no es informática, pero al parecer, la informática tampoco se requiere necesariamente para programar. 

1.3 Arte + ciencia = código creativo



En la Universidad Metodista del Sur en Dallas hay un Centro de Cómputo Creativo (C3) que explora la programación como un medio creativo fundamental. C3 considera código de computadora (así como otros aspectos de la computación) de la misma forma en que un pintor piensa acerca de la pintura, o un músico en un sonido, o incluso cómo una bailarina piensa gesto. C3 está menos preocupado en si el código resuelve un problema específico y más interesado en la forma en que se resuelve, y lo más importante, ¿se podría resolver de una manera más interesante y novedosa?.


Sin embargo, a pesar de este enfoque creativo, C3 requiere que los estudiantes tomen cursos muy exigentes en ciencias de la computación, matemáticas y física. También requiere una cantidad igual de rigurosos cursos creativos. Esta integración de material cuantitativo con la práctica creativa puede ser un desafío de enormes proporciones para algunos estudiantes, especialmente aquellos que fueron etiquetados en una edad temprana: “el artista” o “geek”, pero puede que no tanto. 

C3 ha sido un éxito, han integrado material cuantitativo difícil con la práctica creativa en el aula y el laboratorio de investigación, utilizando un enfoque de “Programación creativa”.
Este enfoque fue desarrollado originalmente en el Instituto de Tecnología (MIT) Media Lab de Massachusetts, por el anterior director del laboratorio, John Maeda, de quien escucharás más acerca de él en breve.
La Programación creativa combina enfoques de la clase de artes, como las críticas, el desarrollo de portafolio y el énfasis en la estética y la expresión personal, con los principios fundamentales de la informática. La programación creativa utiliza código de computadora como medio creativo por el cual los estudiantes puedan desarrollar un cuerpo de arte, mientras que el desarrollo de competencias básicas en la programación aumenta. 
En 2010, investigadores de Bryn Mawr College y C3 en la Universidad Metodista del Sur recibieron una ayuda que la Fundación Nacional para la Ciencia (USA) concedió por explorar el uso de la introducción a la programación creativa en el aula de informática. Sobre la base de los resultados de investigación en el tiempo, el resultado es muy prometedor, los estudiantes aprenden el método de programación creativa y desarrollan significativamente un mayor interés personal por la programación, en comparación con los estudiantes en una clase de ciencias de la computación más tradicional.

Para ayudar a facilitar esta integración en el aula, el enfoque de programación creativa se basa en algunos lenguajes de programación innovadores y entornos de desarrollo, especialmente de Processing, que crecieron directamente del trabajo realizado en el Media Lab del MIT. 

1.4 MIT Media lab

El MIT Media Lab fue fundado por el profesor del MIT Nicholas Negroponte y el entonces presidente del MIT Jerome Wiesner en 1985. Su misión, como se indica en el sitio Media Lab (http://www.media.mit.edu/about), consiste en: prever el impacto de las nuevas tecnologías en la vida cotidiana, tecnologías que prometen transformar radicalmente nuestras nociones más básicas de las capacidades humanas.

Aunque es un laboratorio académico del MIT dentro de la Escuela de Arquitectura y Planificación, el Media Lab tiende siempre a irradiar disciplinas claramente cruzadas y borrosas entre la teoría y la aplicación, la academia y la industria, y la ciencia y el arte. Ha estado involucrado en los avances fundamentales de la era digital desde su fundación, incluyendo la World Wide Web y las redes inalámbricas. El laboratorio también ha sido pionero en la investigación innovadora y el desarrollo de maneras radicalmente nuevas en distintas áreas, tales como juguetes inteligentes, computación ubicua y la estética y la computación. 



El Grupo de Computación + Estética (ACG) en el MIT fue creado en 1996 por John Maeda, un científico de la computación entrenado formalmente y que además es diseñador gráfico. Maeda y ACG exploran nuevos enfoques con herramientas de software y el desarrollo de lenguajes, así como la práctica artística computacional. Uno de los proyectos desarrollados en el Media Lab fue un nuevo entorno de lenguaje de programación llamado “Design by Numbers” (DBN). DBN es un lenguaje de programación muy simplificado construido sobre Java (se explica un poco más adelante). DBN simplificaba el proceso de programación de gráficos en Java mediante la creación de una sintaxis más ligera del lenguaje (los comandos y las reglas utilizadas para el programa) y un entorno de desarrollo que permitió la creación de prototipos rápidos de patrones gráficos simples, arte, código y diseños. DBN nunca fue pensado como un lenguaje de programación con todas las funciones, sino más bien, como una prueba de concepto para un enfoque radicalmente nuevo de diseño del lenguaje; se probó principalmente en el aula diseño y arte para enseñar programación a los principiantes.


DBN como prueba de concepto fue un gran éxito, aunque como una lengua útil, no era mucho más que un ejercicio académico. Dos de los estudiantes de Maeda en el Media Lab, Ben Fry y Casey Reas, trabajaron en DBN. Después de terminar sus estudios en el Media Lab, Fry y Reas decidieron tomar las lecciones aprendidas en desarrollo DBN y construir un lenguaje más completo. Llamaron a su nuevo proyecto Processing, que se inició en en 2001. 

1.5 ¿Que es Processing?

En el sentido más simple, Processing es una aplicación de software que te permite escribir, editar, compilar (se explicará en breve), y ejecutar código Java. Sin embargo, antes sumergirnos en Processing , nos ayudará entender un poco acerca de Java, pero incluso antes de hablar de Java, tenemos que hablar brevemente acerca de la programación en general. (Ten en cuenta que este será uno de los pocos lugares en el blog donde tocamos un poco de teoría sin diversión, la actividad práctica.)

1.6 Bits y Bytes

Supongo que ya sabes que los ordenadores y los ceros y unos van de la mano. Pero puede que no esté tan claro cómo un montón de unos y ceros pueden crear películas animadas en 3D, o cuál es el sistema de operación de tu computadora, o cómo funciona Facebook. 

Realmente es increíble lo que se ha hecho con un montón de unos y ceros. Aunque en realidad, no es acerca de ceros y unos, sino más bien una cuestión de si un estado es verdadero o falso, o más exactamente, si algo está abierto o cerrado. Si alguna vez has mirado el interior del ordenador, en los misteriosos y hermosos tableros, tarjetas, chips, cables, etc., debería ser obvio que todo allí fundamentalmente depende de la electricidad. Sin embargo, la electricidad es una fuerza bastante misteriosa en sí misma, y será más sencillo para esta discusión pensar en la electricidad en una forma mucho más general, como una fuente de agua que fluye.

Usando la metáfora del agua, se puede pensar en las entrañas de nuestro ordenador como una serie de canales increíblemente complejos con presas controlables. Si una presa está inactiva o cerrada, el agua no fluye; si está abierta, el agua pasa a través de ella. Como sistema interconectado complejo, algunas presas controlan la disponibilidad de agua para miles de otras presas. Al controlar sistemáticamente las presas, puedes controlar cómo, cuándo, y donde el agua fluye a través del sistema. Quizás algunas de las presas estén controladas por la presión del agua en algunas partes del sistema; cuando el agua comienza a fluir se abren y permanecen abiertas. Puedes pensar en esto como un circuito de agua que sigue fluyendo. Otras presas podrían estar abiertas por defecto y la presión del agua las cierra. Incluso se puede construir una serie en la que el estado de una presa (abierta o cerrada) controla el estado de otra. Se pueden diseñar sistemas complejos para controlar con precisión cómo el agua (y en última instancia, los barcos) se mueven a través de este sistema, basado en ciertas condiciones.

Por ejemplo, si la presa A y B están abiertas, entonces tal vez un barco puede pasar con seguridad a través del canal C, pero si bien la presa se cierra, el barco no podrá. Así que, aunque sólo estamos describiendo presas y canales, se puede ver cómo es bastante simple, si la lógica de una cierta condición es verdadera, algo ocurre, y así, se puede construir el sistema. Con sólo abrir o cerrar las presas, podemos controlar los resultados específicos del sistema mayor.

Por supuesto, nuestros equipos utilizan la electricidad en lugar de agua, pero el sistema funciona de una manera similar. La versión de las presas en nuestros ordenadores, controla el paso de electrones. Las puertas son transistores –los modernos componentes electrónicos fundamentales en dispositivos tales como nuestros ordenadores pueden estar abiertos o cerrados–, al igual que las presas. Podemos utilizar un 1 o 0 para representar los dos estados, a los que nos referimos técnicamente como dígitos binarios, o más comúnmente como “bits.”

Un sistema de números binarios se basa en sólo 2 dígitos únicos (0 o 1), a diferencia de nuestro decimal, que utiliza 10 dígitos únicos (0-9). Podemos diseñar sistemas numéricos con cualquier número de caracteres únicos. Por ejemplo, otro sistema de números de uso común en la informática es hexadecimal, con 16 caracteres únicos (0-9 y A-F). La informática se basa fundamentalmente en las puertas abiertas o cerradas previamente mencionadas, es eficiente para los ordenadores (no para nosotros) utilizar un sistema binario.
Cualquier punto en el tiempo, bien puede ser 1 o 0, pero nunca ambos. Cuando el grupo de ocho de estos bits juntos, nos referimos a esto como un byte: mil bytes es un kilobyte, mil kilobytes es un megabyte, y mil megabytes es igual a un gigabyte, y sigue adelante. Ahora tenemos algo más de contexto cuando pensamos en teléfonos que tienen 20 gigabyte. Si piensas de nuevo en la analogía de las presas y los canales, imagina el movimiento complejo de barcos que se puede conseguir con miles de millones de presas individuales. Es probable que ahora se puede imaginar cómo, visto desde un plano superior, millones de diferentes barcos que se mueven a través de un sistema tan complejo de presas podrían crear patrones, incluso organizados, o formando la base para una lógica compleja que determina las reglas acerca de cómo uno es amigo de alguien en Facebook.