Compartir

Aprender a programar jugando

En este artículo presentamos diversos tipos de iniciativas que persiguen enseñar a programar aplicando técnicas de juegos. La revolución de la gamificación en todos los ámbitos esta vez se lleva al campo de la programación. En este caso se trata de ir más allá, no limitándose a proporcionar lecciones "gamificadas", sino facilitando el aprendizaje por medio del desarrollo de las acciones y estrategias necesarias para resolver problemas propuestos dentro de juegos reales.

Los conceptos más simples en este sentido se aplican a la hora de enseñar a los niños a programar. Existe actualmente una variada oferta de este tipo de juegos, no sólo para PCs, sino también para otros dispositivos, como tablets. Estos juegos contribuyen a la iniciativa “la hora del código”, la cual trata de conseguir que los estudiantes dediquen una hora al día a aprender a programar. Para ello, una primera aproximación se centra en construir secuencias de acciones (incluyendo condiciones, bucles, etc.) para conseguir el objetivo de cada fase. Es el caso, por poner un ejemplo, de lightbot.

El siguiente nivel lo encontramos en juegos en los que la apariencia de las secuencias de acciones se asemeja más a la estructura del código de un lenguaje de programación. Estas secuencias se construyen en base a bloques que se ensamblan, pudiéndose considerar el resultado final como pseudocódico de programación. Un ejemplo de este tipo de juegos, lo encontramos en tynker.

Tynker

Estos juegos se basan en aproximaciones existentes, en las que también se crean representaciones visuales mezcla de diagramas de flujo y rompecabezas, pero también en algunos casos se puede aprender la sintaxis de lenguajes de programación concretos. Podemos encontrar ejemplos de este tipo de juegos en Blocky de Google (JavaScript, Python, Dart). En algunos análisis se comenta que el objetivo de este lenguaje es enseñar a niños los principios de programación. Sin embargo Google quiere que los desarrolladores jueguen con Blockly, proporcionen feedback, y piensen en nuevos usos. Todo el código es libre y open source.

Blocky

Otros juegos en la línea de Blocky son: Scratch y BYOB (Build Your Own Blocks). Scratch fue desarrollado por el "Lifelong Kindergarten Group" del Media Lab del MIT, y es un lenguaje de programación que facilita la creación de historias interactivas, animaciones, juegos, música y arte, y permite compartir las creaciones en la web. Está pensado para usos didácticos, ya que a medida que se crean y comparten proyectos, se aprenden importantes ideas matemáticas y computacionales, a pensar creativamente, a razonar sistemáticamente y a trabajar colaborativamente. Por su parte, BYOB es una evolución de Scratch (desarrollada por la Universidad de Berkeley) que trata de extenderse también a usuarios adultos (sin dejar de serlo para el público original).

BYOB

Como aproximación más avanzada vamos a tratar dos ejemplos de plataformas para aprender a codificar (directamente, no a través de metáforas gráficas como bloques).

La primera de ellas es “CodinGame: Games for Programmers”, una plataforma para aprender o mejorar las habilidades de programación aplicando técnicas de juegos. Proporciona 4 niveles de dificultad, para casi 50 juegos que se pueden resolver utilizando distintos lenguajes de programación (Java, Ruby, Perl, C #, Scala, Groovy, o incluso Bash). También permite resolver el mismo desafío de programación múltiples veces utilizando múltiples lenguajes, y tiene opción multijugador, fomentando la competencia, y dando premios a los ganadores.

Veamos un ejemplo. Se trata de un desafío en el que hay que defenderse de una serie de naves que nos atacan. Para ganar se nos propone que debemos calcular cuál es la nave más cercana, para dispararla. 

CodinGame

Como se puede ver en la imagen, la plataforma proporciona el espacio para codificar, una consola de salida, y la ejecución del juego resultante.

El otro ejemplo que proporcionamos es “CodeCombat - Learn how to code by playing a game”. Es menos ambicioso que el anterior en cuanto a los objetivos de aprendizaje en lo que a codificación se refiere, incluyendo solamente el lenguaje “JavaScript”. Sin embargo, tiene una visión que se acerca más aún al concepto de juego, constituyendo una aventura gráfica en sí misma y proporcionando un rango mayor de características de jugabilidad (personajes, poderes, recompensas, niveles, etc.). En él se pueden realizar hechizos (que son en realidad instrucciones de programación), planes para la batalla (que son scripts en JavaScript), etc.

CodeCombat

A parte de las aproximaciones presentadas existen otras basadas en la aplicación básica de conceptos de gamificación ante retos de codificación para una o varias personas compitiendo entre sí, proporcionando recompensas, niveles de experiencia, etc. Algunos ejemplos de estas aproximaciones son codecademy (plataforma interactiva en donde los jugadores aprender a programar y son premiados con puntos e insignias) o Pex para Visual Studio (técnicas que permiten a los desarrolladores competir entre sí por un puesto en una tabla de clasificación basado en el código que escriben, su nivel de sofisticación, y las capacidades de Visual Studio que utilizan para hacerlo, etc.).

Pex

Como conclusión podemos ver que actualmente existe una amplia gama de opciones en las que se aplican los conceptos de juego para motivar y facilitar el aprendizaje de la programación a todo tipo de públicos, desde los fundamentos de programación hasta la codificación en distintos lenguajes, aplicando desde mecanismos básicos de gamificación hasta la involucración en juegos reales, empleando metáforas gráficas o codificando directamente, haciendo frente a retos sencillos o desarrollando algoritmos y estrategias complejos. 

Con esta amplia gama de opciones… ¡Nadie puede volver a decir que aprender a programar no es motivante y divertido!