programming

warning: Creating default object from empty value in /home/gwolf/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

Programación en la escuela: ¿Para qué?

Submitted by gwolf on Fri, 03/22/2013 - 08:14
Wolf G.  2012.  Programación en la escuela: ¿Para qué? Software Gurú. :50-51.

En el número de agosto del 2012 de Software Gurú, Ignacio Cabral Perdomo presentó un interesante artículo titulado «Enseñando a niños a programar: ¿Imposible o una oportunidad?». La respuesta me parece clarísima: Claro que se puede. Esto viene siendo demostrado, con gran
éxito, desde los 1960s, empleando el lenguaje BASIC diseñado por Kemeny y Kurtz, y muy particularmente con el lenguaje Logo, conocido principalmente gracias al trabajo de uno de sus autores, Seymour Papert. El origen del planteamiento de estas tempranas experiencias, sin embargo, me parece radicalmente diferente del planteamiento de Ignacio — Y los argumentos, tanto hace 40 o 50 años como ahora, más convincentes.

El énfasis que presentan las conclusiones de Ignacio apuntan al mercado del desarrollo de cómputo. Cito,

Es muy clara la necesidad de más profesionistas en el área de la Computación y las Tecnologías de Información, en especial en los departamentos de desarrollo de software de diferentes corporaciones pero, desgraciadamente, el interés de los alumnos por carreras de este tipo está reduciéndose de una forma alarmante. Una posible solución es el inculcar desde temprana edad el pensamiento lógico y algorítmico en los niños siguiendo el itinerario de aprendizaje que propongo.

Si bien el artículo refiere que la enseñanza de programación a partir de nivel primaria «ayuda a los chicos a formar ese pensamiento lógico y algorítmico que tanto necesitan», no profundiza en este aspecto, que considero fundamental. ¿Por qué los chicos pueden necesitar un pensamiento lógico y algorítmico?

1 Los hijos de Logo

Soy parte de una minoría afortunada — Y pido disculpas anticipadas si el presente artículo se ve como un viaje a mi anecdotario personal.

Aprendí computación cuando el acceso al equipo de cómputo era extremadamente poco común — Mi primer experiencia fue en la minicomputadora Foonly que había en el IIMAS (UNAM) en 1983, a los 7 años, escribiendo LaTeX con el editor Emacs. Cabe mencionar que el presente artículo, casi 30 años más tarde, lo estoy escribiendo con las mismas herramientas. Tuve acceso a la Foonly gracias a que mi padre trabajaba como investigador en dicho Instituto, y a que tuvo la paciencia de enseñar a su ávido niño ese lenguaje cargado de símbolos y comandos.

Pero creo que mi experiencia con la Foonly se habría mantenido como meramente incidental de no ser porque, uno o dos años más tarde, me inscribieron en IDESE, una de las primeras escuelas de verano dedicadas al cómputo en México. IDESE era una apuesta pedagógica muy interesante; por tres semanas, alternábamos dos horas frente a la computadora con dos horas más con juegos de mesa. Si bien no recuerdo los detalles de la interacción, esta alternancia ilustra claramente cómo veían nuestros instructores su tarea: Llevar a los niños a
emplear sus habilidades cognitivas de una manera más completa.

IDESE derivó de la versión de Logo desarrollado por el MIT para la Apple ][, traduciendo todos sus comandos y mensajes al español. Sólo otra vez, también en los 1980, vi un esfuerzo similar: El hecho por la BBC al traducir el lenguaje BASIC de su BBC Micro para crear el EBASIC. Esto permitía enseñar a los niños a programar la computadora sin preocuparse al mismo tiempo de aprender otro idioma — El caso del EBASIC me resulta notorio porque, con un comando, se podía ver el código escrito en EBASIC en BASIC "normal". Para 1985, me tocó formar parte del taller de computación que se impartía en mi escuela a partir de 4° de primaria. A partir de 1986, estuve inscrito para varios cursos de los Centros Galileo. Tuve la suerte de haber pasado por escuelas muy buenas y muy motivantes, con lo cual a esas tempranas alturas ya estaba decidida mi vocación.

El gran acierto de Logo que lo hizo tan importante como lenguaje educativo fue eliminar las capas de abstracción que debía tener en mente un niño: Si bien el lenguaje permite un desarrollo complejo y formal de programación funcional1, el niño podía ver la concreción de sus programas graficándolos a través de una tortuga, originalmente un robot conectado a la computadora, posteriormente reemplazado por una tortuga en pantalla cuando la tecnología lo permitió. Permitir que el niño viera directa e inmediatamente sus resultados, hace 45 años, resultó un cambio fundamental y un gran motivador.

Cuando Logo fue planteado, así como cuando yo lo aprendí2, no existía el planteamiento de formar a los niños en programación por la gran demanda que dichas habilidades tendrían en la sociedad. La enseñanza de programación era vista como una forma de enseñar pensamento abstracto y algorítmico.

¿Y para qué enseñar pensamiento abstracto y algorítmico si no para formar profesionales que comprendan más fácil los paradigmas de cómputo? Bueno… Citando a un buen amigo, de lo que se trata no es de aprender más que a programar, aprender lo que significa programar. Dicho de otro modo, ¿Para qué se enseñan matemáticas, filosofía, historia o biología? Para formar personas más completas, no sólo en su cultura, sino que en la manera de estructurar el pensamento. Habilidades que indudablemente impactan en su crecimiento como adultos. Y sin poder extrapolar más allá de la experiencia personal, no puede pasarme desapercibido la gran proporción de colegas que me he encontrado de aproximadamente mi edad que pasaron por experiencias formativas similares.

2 La OLPC

Ninguna herramienta dura para siempre, sin embargo, y ni siquiera el gran Logo se salva de la obsolescencia que las nuevas tecnologías van causando. Hoy en día, sería iluso pensar que mover una "tortuga" por la pantalla pudiera impresionar a un niño. Afortunadamente, no han sido pocos los estudios en este campo que se han realizado — El artículo de Ignacio presentó cuatro entornos de programación orientados a la enseñanza en diferentes edades — Scratch, Alice, Greenfoot y BlueJ. Me sorprendió que no presentara a uno de los trabajos más comentados de los últimos años, que tiene un impacto muy medible: El proyecto OLPC (One Laptop Per Child, una computadora por niño)3 , iniciado –al igual que Logo– en el MIT y con el decidido apoyo de Seymour Papert, entre otras muchas personalidades.

La OLPC no es cualquier computadora: Fue planteada como el vehículo sobre del cual correría Sugar4. Yo no tengo experiencia de primera mano con el entorno, por lo cual prefiero dirigir a quienes estén interesados en una descripción más completa al artículo que publicó Werner Westermann5 dentro del libro «Construcción Colaborativa del Conocimiento»6.

En resumen, Sugar es un entorno dirigido a facilitar un aprendizaje construccionista, en que cada alumno debe ir explorando y construyendo su camino por medio de la experiencia personal, lo cual lleva a una mayor apropiación del contenido que cuando éste es dictado. A partir de una interfaz sencilla y una orientación más a actividades que a aplicaciones, y empleando a fondo la colaboración entre todos los alumnos, la computadora se vuelve un actor, un facilitador de la transmisión del conocimiento. Y una característica fundamental de Sugar es que el alumno no sólo puede utilizar las actividades, sino que puede (y está bienvenido a) modificarlas. Las actividades están escritas en Python, un lenguaje de sintaxis limpia y conceptualmente fácil de adoptar.

OLPC fue planteado como un proyecto necesariamente a gran escala: Está planteado para que una computadora sea entregada a cada niño en edad escolar en los países receptores. El proyecto busca además resolver problemáticas específicas de los países menos favorecidos; con ciertas modificaciones al planteamiento inicial, actualmente hay despliegues de OLPC en once países de escasos recursos7.

Y siguiendo con el tono personal que he mantenido en esta ocasión, relato lo que me contó Manuel Kauffman, un desarrollador argentino de Sugar, en una visita que hizo a una escuela en Uruguay: Un niño, de 11 o 12 años, le explicó que prefería editar en texto los iconos de las actividades que iba creando o modificando directamente en un editor de texto, en SVG8 porque le quedaban más limpios que utilizando un editor gráfico.

Este ejemplo habla como pocas cosas de apropiación de la herramienta y de la apreciación estética de la representación en código de un objeto. Hay programadores de larga carrera profesional que son incapaces de desarrollar estas habilidades.

3 Conclusiones

Enseñar a programar a un niño va mucho más allá de transmitirle una habilidad para su futuro profesional. La enseñanza básica no puede basarse sólamente en la transmisión de competencias medibles en el mercado.

Hay, sin embargo, puntos importantes a considerar. Si bien algunos tuvimos la gran suerte de aprender de la forma y en el momento correcto, es una materia con la que muchos se enfrentan con dificultad — El desarrollo de las capacidades de abstracción necesarias para esta materia se produce de forma muy desigual, y la frustración que esta materia puede causar en algunos alumnos puede ser muy grande. Cabe mencionar, claro, que esto mismo se presenta en varias otras materias que forman ya parte de la currícula básica.

Por otro lado, otro punto importante a considerar es la formación de los docentes. Para incorporar una materia a la currícula básica, es necesario contar con un cuerpo docente suficientemente amplio y capacitado, no sólo con las habilidades técnicas sino que pedagógicas. Esto, claro, debe presentarse como un proceso gradual, pero nada indica que sea de fácil resolución.

Pies de página:

1 Logo ha sido descrito como "Lisp, pero sin los paréntesis"

2 Con casi 20 años de distancia — ¡Una verdadera eternidad en el avance de la popularización del cómputo!

3 http://one.laptop.org/

4 http://sugarlabs.org/

5 http://seminario.edusol.info/seco3/pdf/seco3_apend2.pdf

6 http://seminario.edusol.info/seco3/

7 http://one.laptop.org/stories

8 Un lenguaje basado en XML para representar gráficos vectoriales

Syndicate content