domingo, 22 de noviembre de 2015

7. ¡Está lleno de bolitas! (o "It's full of stones!")

Modelos de representación y su rol en la abstracción.


  Una característica fundamental de la programación es la capacidad de representar elementos abstractos a través de otros elementos (ya sean abstractos o concretos). Por ejemplo, uno puede representar un colectivo simplemente como dos números: el número de asientos disponibles, y el número de pasajeros sentados, suponiendo que esos datos son lo único que nos importa del colectivo. Así, (25,0) representa a un colectivo de tamaño mediano, vacío, y (50,49) representa a un colectivo grande, casi lleno. Claramente, no es cierto que (25,0) *sea* un colectivo, pero si nos ponemos de acuerdo en que vamos a entender a un colectivo de esa manera, podemos decir que (25,0) *ES* un colectivo.

  Esta forma de representar la información (o la realidad) a través de elementos que en principio no tienen nada que ver con lo que pensamos en primer lugar es una de las características que hacen de la programación una disciplina tan poderosa. Los lenguajes de programación de propósitos generales proveen usualmente un conjunto de elementos primitivos consistente en números, agrupaciones de números y abstracciones para manejar la memoria (de distinto nivel para distintos lenguajes).
  A la hora de enseñar, es usual que no nos cuestionemos estos elementos básicos, y consideremos importante empezar a enseñarlos de manera temprana. Sin embargo, estos elementos (números, memoria, etc.), son abstractos. Y como dejamos establecido en el primer post de esta serie ("Por qué Gobstones es importante"), el objetivo del enfoque didáctico Gobstones es enseñar abstracción. ¿Qué sentido tiene asumir que el estudiante conoce elementos abstractos si lo que queremos enseñarle es abstracción?

  Los cursos tradicionales de programación fallan justamente en este punto: dan por supuesto que los estudiantes pueden entender con facilidad números, arreglos, punteros y otra variedad de elementos abstractos y la forma en que se representa la información con ellos.
   Los cursos de programación que utilizan otro tipo de herramientas (Logo, Scratch, etc.) no cometen este error, pero para no incurrir en él, eliminan el componente de "representar la información" de su repertorio. De esta forma, sobresimplifican la enseñanza de la programación, y dificultan el proceso de aprendizaje posterior, cuando el estudiante deje esas herramientas y pase a temas más avanzados.

  El lenguaje Gobstones propone una solución intermedia: se utiliza un dominio concreto (tablero y bolitas), pero lo suficientemente poderoso para que gradualmente se pueda representar información sobre él, facilitando lentamente el proceso de abstracción. Así, luego de los primeros ejercicios donde se utilizan las bolitas como tales, se comienza a utilizarlas como representación de otros elementos. Se pueden presentar problemas donde haya flores, bananas, extraterrestres, piezas de ajedrez, aviones, y muchos otros elementos, todos los cuales van a estar representados por bolitas.
  El uso de procedimientos permite trabajar esto en diferentes niveles, pues un procedimiento que se llame PlantarFlor() puede conceptualizarse desde el punto de vista del problema, soslayando que en realidad pone una bolita roja (que representa a la flor). Así, si necesitamos ver que una flor es una bolita roja miramos el código del procedimiento (en el nivel inferior), pero si precisamos concentrarnos en la flor y olvidar la bolita, solo miramos su utilización (en el nivel superior).

  Para facilitar este proceso, las herramientas que implementan Gobstones pueden implementar mecanismos de ayuda. Actualmente, PyGobstones implementa el concepto de *vestimenta* que permite visualizar de manera clara esta representación, sin necesidad de tener que recurrir a la imaginación. Sin embargo, las vestimentas son solamente un agregado posterior al programa, y pueden quitarse en cualquier momento, verificando que el trabajo real sucede solamente sobre las bolitas. Entonces, con la vestimenta, veremos el gráfico de una flor, y sin ella, veremos que realmente hay una bolita roja.

  Es interesante observar que, si bien al comienzo los estudiantes solo piensan de manera concreta en las bolitas que pueden ver, no se dan cuenta del momento exacto en que dejan de pensar en concreto y se encuentran pensando en abstracto. Este proceso de adquisición de pensamiento abstracto continúa luego reemplazando gradualmente el tablero por estructuras de datos abstractas (en XGobstones)

Por lo expuesto, consideramos que las bolitas son una contribución enorme al enfoque didáctico Gobstones: permiten enseñar representación de información de manera gradual y amena. Si bien no son irremplazables, creemos que cualquier curso que implemente el enfoque didáctico Gobstones debería tener en cuenta este factor, y elegir un universo de discurso que permita manejar ambos niveles, el concreto y el abstracto, de manera simultánea, y sobre todo, gradual.

La representación de información es importante.

No hay comentarios:

Publicar un comentario