El reto del verano: que tus hijos aprendan a programar


En la tecnología está el futuro. Lo hemos ido viendo estos años y vamos a verlo aún más. Según TicJob, la oferta laboral del sector TIC se incrementó un 2,5% en 2017, … así que, si te gusta el mundo de la tecnología o bien, quieres que tus hijos tengan trabajo el día de mañana, ¿por qué no ir empezando a mostrarles los entresijos de los videojuegos, cómo funciona internet, desde que son pequeños? No sólo les ayudarás en su desarrollo mental, sino también, les estarás ayudando a enfocar los pasos para su futuro. Citando a Mitchel Resnick, profesor del MIT Media Lab: “Cuando (los niños) aprenden a hacer código, pueden hacer código aprendiendo”.

¿Cuál es la mejor edad para empezar a programar? Pues depende de los niños… normalmente, de los 5 a los 8 años, suelen focalizarse más en entornos de visual programming. A partir de los 8 años, hay algunos que cuentan con una habilidad especial en los lenguajes, y es mejor que comiencen por algo más sencillo y que sea más fácil de entender y esperar hasta los 13 años, aproximadamente, para comenzar con algo más serio y de mayor profundidad.

Como es obvio, una vez que empiezas a intentar “picar código” (proceso puramente manual), has de poner una gran atención al detalle, y eso, para un niño, quizás no sea tan fácil… de ahí, que la mayoría de los lenguajes de programación para niños sean, sobre todo, interfaces más que un lenguaje en sí.

 ¿Qué tipos de lenguajes de programación existen?

A alto nivel podríamos encontrar la siguiente clasificación:

Código máquina: el código máquina es un lenguaje de muy bajo nivel a base de ceros y unos. Esto significa que es muy fácil de entender por un procesador, pero muy difícil de leer para la gente. Los programas se escriben en lenguajes de más alto nivel que se compilan o interpretan a código máquina para que los procesadores puedan ejecutarlos.

Código de ensamblador: es una representación del código máquina. Es decir, cada instrucción de código ensamblador se traduce a una instrucción de código máquina. Aunque las instrucciones de ensamblador se pueden leer, siguen siendo de muy bajo nivel. Una desventaja del ensamblador es que no es portable, ya que cada plataforma viene con su código ensamblador particular.

Lenguajes de alto nivel: estos son los lenguajes que hoy en día usan la inmensa mayoría de los programadores. Lenguajes como C, C++ o Java son todos de alto nivel. Entre las ventajas de estos lenguajes son que soy fáciles de leer y portables entre plataformas. La desventaja es que son un poco menos potentes que el ensamblador. Cada instrucción de un lenguaje de alto nivel se traduce en varias instrucciones de código máquina.

Dentro de los lenguajes de alto nivel podemos encontrar muchas formas de clasificarlos, aunque la más fundamental es la que los dividen entre imperativos y declarativos: los lenguajes imperativos le dicen al compilador cómo hacer una tarea, mientras que el declarativo le dice qué es lo que tiene que hacer. Los lenguajes declarativos se pueden dividir a su vez entre lenguajes funcionales, en el que un programa se construye mediante la composición de funciones, y lenguajes de programación lógica, en los que el programa se construye como un conjunto de conexiones lógicas. Los lenguajes imperativos se leen más como una lista de pasos para resolver un problema, como si fuese una receta. Entre los lenguajes imperativos nos encontramos a C, C++ o Java; entre los funcionales, a Haskell o Lisp y, dentro de los lenguajes de programación lógica, hay lenguajes como Prolog.

Los lenguajes imperativos se pueden dividir en dos subgrupos: los procedurales como C y los lenguajes de orientación a objetos, si bien la orientación a objetos es una clasificación un poco ortogonal a estas agrupaciones ya que existen lenguajes funcionales que también son orientados a objetos como Scala o OCaml.

También se pueden agrupar los lenguajes por su tipado: estático o dinámico. El tipado se refiere al tipo de datos que puede tener, es decir, que sea un carácter, un binario (0 o 1), un entero, un decimal, una cadena de texto, etc… Los lenguajes de tipado estático son los que el tipado se comprueba antes de ejecutar el programa, típicamente en la fase de compilación. Así por ejemplo, avisa anticipadamente que no se puede, como se dice popularmente, sumar peras con manzanas. Los lenguajes de tipado dinámico hacen la comprobación de que los tipos son correctos para una operación dada en tiempo de ejecución. Un lenguaje de tipado dinámico dará un error al ejecutarse si se intentan sumar peras con manzanas.

Una última clasificación es la separación entre lenguajes compilados y lenguajes interpretados. Los primeros, que suelen coincidir con los de tipado estático, son lenguajes que pasan por un compilador que genera el programa en código máquina, que es el que se distribuye para ejecutar. En los lenguajes interpretados, donde suelen estar la mayoría con tipos dinámicos, el intérprete recibe en el lenguaje de alto nivel y lo ejecuta directamente.

¿Cuáles son nuestros lenguajes preferidos y por qué?

Existen cientos si no miles de lenguajes de programación, así que vamos intentar hacer una selección comprensible de unos pocos lenguajes de programación:

Scratch es un lenguaje de programación visual desarrollado por el MIT Lab Tab. ¿Por qué nos gusta y por qué es uno de los básicos que siempre aparece cuando hablamos de código para niños? Pues porque con él, puedes crear animaciones de manera muy sencilla y, además, sirve de base para otros programas más avanzados.

Desde proyectos de ciencia, hasta arte interactivo, pasando por música… Scratch es de lo más versátil… Si quieres más info de proyectos, echa un vistazo aquí.

 Alice: Es un innovador entorno de programación basado en bloques que facilita la creación de animaciones, la creación de narrativas interactivas o la programación de juegos simples en 3D.

A diferencia de muchas de las aplicaciones de codificación basadas en rompecabezas, Alice motiva el aprendizaje a través de la exploración creativa. Alice está diseñada para enseñar habilidades de pensamiento lógico y computacional.

Como curiosidad, el nombre pretende rendir un homenaje a Lewis Carroll, matemático, novelista y fotógrafo, y reconocido mundialmente como el autor de “Alicia en el País de las Maravillas”.

 Otras plataformas o librerías que también están enfocadas a niños…

Tynker es un sistema de aprendizaje completo que permite a todos, desde principiantes hasta programadores avanzados, codificar con actividades intuitivas basadas en intereses. ¿Qué es lo mejor para los niños? El que permita experimentar con bloques visuales antes de pasar a la programación intermedia e incluso a lenguajes como JavaScript o Python.

Blockly: En realidad, es una librería de JavaScript pura,  con un sencillo conjunto de comandos que podemos combinar como si fueran las piezas de un rompecabezas, por lo que permite a los programadores principiantes concentrarse en la lógica. ¿Qué es lo mejor de Blockly? Que permite enseñar a los niños que “eso que ven en bloques de colores”, tiene una traducción en código Javascript, Python, PHP, Lua o Dart.

Kodu: ésta es una gran alternativa si quieres enfocarte más hacia los videojuegos, ya que permite a los niños crear juegos, tanto en PC como Xbox, a través de un lenguaje de programación visual simple. Kodu se puede utilizar para enseñar creatividad, resolución de problemas, narración de cuentos y programación.

Y, para terminar…

Finalmente, nos gustaría terminar el post con un vídeo muy inspirador, el de Mitchel Resnick, LEGO Papert Professor of Learning Research at the MIT Media Lab. Esperamos que lo disfrutéis.

Autores: Gonzalo Ruiz de Villa y Raquel Benito.