jueves, 20 de enero de 2011

Enseñando a programar a niños (Capítulo 0)

Después de meditarlo un tanto me he decidido a enseñar a programar a mi hija de 8 años.

¿Motivo? Por qué no. Al final es una actividad por la que se ha interesado y que me parece relativamente factible.

Ahora, ¿qué significa para un niño de 8 años aprender a programar? Reflexioné un rato sobre esto. Pensé al respecto de que a nivel de matemáticas solo sabe sumar, restar, multiplicar, recién aprendió a dividir y ahora le están empezando a enseñar fracciones. ¿Por qué me planteo su nivel de matemáticas? No es porque para programar necesitemos muchas matemáticas hoy en día. Antiguamente si se necesitaban algo más, pero hoy no. La cuestión es por los ejercicios de programación que le puedo mandar.

Pero es que esto me llevó a reflexionar sobre que lenguaje le enseñaría. Primero pensé enseñarla BASIC (usando QuickBasic o algo similar). Al fin y al cabo eso fue lo primero que aprendí yo, pero con 14 años no con 8. Luego tenía pensado pasarla de BASIC a Visual Basic o Real Basic pues hoy por hoy la programación tiene que ver con lo gráfico, ventanas, etc... pero pensé que quizás ese paso que podría hacer en unos meses sería complejo. Esto me llevó a volver para atrás en mis razonamientos y pensé si el BASIC llamaría la atención a una niña que ya juega con la Wii o con la DS, todo gráfico.

Pensé entonces en el LOGO. El lenguaje de programación LOGO tiene tantos años o más que el BASIC, pero está orientado a aprender a mover una tortuga por la pantalla. Luego se van metiendo más conceptos. Pero volvemos a lo mismo... ¿será capaz de llamar la atención una "tortuga" que no es más que un triángulo en la pantalla? Pintaba que no.

En esto di con un lenguaje de programación, basado en SmallTalk, y diseñado por el MIT (Instituto Tecnológico de Massachusetts) para precisamente enseñar a programar a niños. El lenguaje y entorno de programación se llama Scratch. Para los que no hablen inglés "start from scratch" significa "comenzar de cero" por lo que el nombre parece apropiado.

Scratch es un entorno de programación donde en una misma ventana vemos los objetos del programa (generalmente son "sprites"), el código asociado a esos "sprites", las opciones del lenguaje y la ventana de ejecución. De ese modo tenemos todo siempre a mano.


La programación en sí se realiza uniendo bloques de colores como si de una construcción LEGO se tratase. Por ejemplo aquí tenemos el código que hace que el programa arranque y mueva al gato diez veces, diez pasos cada vez y gire 15 grados. Al terminar las 10 repeticiones se oye un maullido y termina el programa.


Curiosamente este método de programar añadiendo bloques es muy similar al que se emplea en el App Inventor Google para programar para Android. El App Inventor es un entorno para desarrollar rápidamente en Android y usa esta misma técnica, aunque un poco más elaborada.

Resumiendo. ¿Enseñar a programar a un niño de 8 años? Si, pero si le interesa realmente. El entorno Scrath ayudará a que le interese pues podrá crear sus propias historias programando para cada "sprite" su comportamiento. Así que me voy a embarcar en este proyecto e iré contando los resultados además de ir contando que conceptos voy enseñando a mi hija.

Una cosa importante que me gustaría señalar. ¿Qué es necesario para que yo enseñe japonés a mi hija? Evidentemente que yo sepa japonés, pues en caso contrario debería enviar a mi hija a clases con alguien que sepa japonés... así que por esa misma regla entiendo que es razonable que enseñemos a programar a los niños si sabemos nosotros mismos programar, aunque no sea en Scratch.

¿Es posible que yo vaya aprendiendo mientras le enseño a ella? Evidentemente. Pero depende de la propia capacidad del padre de aprender. Siempre has de ir varios pasos por delante. En principio con los artículos que publique iré comentando los conceptos a explicar luego al niño, pero no garantizo nada si el padre* no tiene conocimientos previos de programación... en cualquier lenguaje.

Veremos quien se cansa antes, si yo de enseñar o ella de aprender.

Os dejo enlaces a Scratch. El programa está disponible en Mac OS X, Windows y Ubuntu desde la web oficial. Además se puede hacer que los bloques y el programa esté en muchos idiomas, entre ellos el español. Así el bloque "tocar sonido XXX y esperar" puede pasar a llamarse "play sound XXX and wait".

Página en el MIT para el Scratch. La página detecta nuestro idioma, pero si no es así, en la esquina superior derecha tenemos un desplegable para seleccionar idioma.

Incluye un foro en español donde podemos comentar con otros usuarios.

Por último, os presento al primer "sprite" que se aprende a mover en Scratch. Es este simpatico gatito.



*Padre: Se que alguna mente bien pensante me dirá que por que no pongo padre/madre... pero por muy bien pensante que sea lo que no parece tener claro esa gente es que en castellano el masculino se usa de genérico; así que si, si usted es una madre interesada en enseñar a su hijo... o hija... o elemento de transición a programar puede hacerlo. :-P

Publicar un comentario en la entrada