¿ Jugando a programar o programar jugando ?


Hola cibernautas, hoy les comentaré un poco acerca del aprendizaje y el desarrollo de habilidades para la programación. Una forma muy comun en estos días para desarrollar habilidades cognitivas son los juegos. El juego es una de maneras más entretenida de ejercitar la mente y mejorar nuestras capacidades, a través de él se entrenan habilidades como la lógica, la destreza y el ingenio sin darse apenas cuenta. Mediante juegos mentales donde se aprende y también se comete errores, se estimula la concentración, la memoria, la comprensión y la constancia.

La programación de aplicaciones informáticas es un campo apasionante. Sin embargo, muchas personas piensan que se trata de una tarea muy compleja y en ocasiones tediosa, lo que los frena a interesarse por ella. Desde Microsoft Research han buscado una manera práctica de intentar desterrar esas ideas negativas sobre la programación y han apostado por enseñar algunos fundamentos en forma de juego.

Existen varios juegos para aprender y desarrollar las habilidades para programar, entre ellos se encuentran Check iO, para aprender a programar en Phyton, Codecombat, que enseña paso a paso a programar en Javascript,.NET Terrarium 2.0 para .NET, Robocode para Java o .NET, entre otros. Este mes Microsoft Research publicó un nuevo juego denominado Code Huntcon el que pretende fomentar los conocimientos de programación en lenguajes como C# y JAVA, a través de puzzles. Code Hunt está ya disponible de forma gratuita para cualquier usuario aquí.

Qué trae de diferente este juego? Los juegos anteriormente mencionados consistían en programar el movimiento o potencialidades de un objeto animado determinado. En Code Hunt el juego consiste en resolver pequeños puzzles que nos ayudarán a entender la lógica que se esconde tras extractos de código escritos en el lenguaje elegido: Java o C#. El juego está dividido en 14 sectores a modo de lecciones temáticas que debemos ir superando progresivamente, cada una de ellas con hasta 15 puzzles a resolver. No necesita instalarse, se juega online mediante navegadores como Internet Explorer 9 en adelante y versiones recientes del Chrome o Firefox.

Cómo se juega? En cada puzzle se mostrará una pantalla dividida en dos secciones con un botón en el centro. En el lado izquierdo aparecerá un extracto de código que será el que hay modificar. En el lado derecho se muestran los datos que recibe el código, el resultado esperado si funciona y el resultado obtenido tal y como está escrito. El objetivo es alterar el código para que tu resultado sea idéntico al esperado.

Qué se aprende? A medida que se transita de nivel se van adquiriendo conocimientos sobre operadores aritméticos, sentencias condicionales, lazos, cadenas, algoritmos de búsqueda, entre otras.

Con estas sencillas premisas este juego nos motiva a descifrar la lógica tras la tarea de programar. Lo hace además premiándonos según lo eficiente y limpio que sea nuestro código, guardando nuestra puntuación si nos identificamos en el juego y permitiendo comparar nuestros progresos respecto a otros jugadores.

Aunque el juego está en inglés, es poco el texto al que debemos prestar atención. La mayor dificultad estriba en entender cómo llegar al resultado esperado a partir de los datos de entrada. Microsoft Research preparó el juego con motivo del evento Beauty of Programming donde fue probado por más de 2000 estudiantes. Segun un artículo de el portal de noticias electrónicas EFY, los estudiantes fueron capaces de resolver el 55,7% de los puzzles.

No voy a negar que programar es una tarea compleja que requiere un constante estudio y alta concentración, pero está claro que si no nos resulta divertido, no lo haremos o peor, no lo haremos bien. En mi caso particular las primeras nociones de programación que recibí fue del lenguaje C++ como una asignatura obligatoria de 1er año de la carrera, claro, lo que obtuve realmente ahí fue la visión lógica, los tipos de datos etc, pero a programar se aprende PROGRAMANDO, tirando líneas de código y compilando, no hay otra manera. Es por eso que me parece muy interesante esta visión que muestra el Code Hunt, porque entre otras cosas te obliga a leer y entender código hecho por otra persona, encontrar sus errores y proponer soluciones. Eso es ingeniería colegas!!!

También en un momento determinado tuve que enfrentarme a Ansi C y a VHDL, dos filosofías de diseño completamente distintas: secuencial y concurrente. Fue todo un reto para mi trabajar con las 2 al mismo tiempo, pero lo logré gracias a 2 conceptos que considero muy importantes y que quiero compartir con uds: la Modularidad y la Reusabilidad

La Modularidad le da fortaleza y sencillez a tu código. Facilita su comprensión y la búsqueda de los errores. Un código modular es aquel donde toda la aplicación está construida sobre la base de funciones muy sencillas. Organizar los tipos de datos que realmente guarden una estrecha e inseparable relación como clase base.

Me gusta decir que la Reusabilidad viene aparejada con la modularidad o que esta última crea las bases para que exista la primera, cómo sabemos que hemos hecho un código reusable? si este, en su totalidad, es lo suficientemente genérico como para ser invocado desde diferentes secciones de nuestra aplicación.

Esos son los términos que más me fascinan de la programación, porque le bridan una versatilidad alucinante: Programar es una pasión.