domingo, 8 de noviembre de 2015

5. ¿Comando mata expresión?

La base aparentemente imperativa de Gobstones.


  Una cuestión de Gobstones que llama la atención a muchos expertos, especialmente en estos tiempos de programación funcional y programación con objetos, es el hecho de que su base es, en principio, imperativa, a través de comandos que modifican el estado del tablero.
   Sin embargo, Gobstones solo es imperativo en apariencia. La parte imperativa viene dada por los comandos, utilizados para describir acciones y modificaciones sobre el tablero (o sea, serían los "verbos" del lenguaje); pero Gobstones también tiene una parte importante del lenguaje dedicada a la descripción de valores y datos, de información: las expresiones (que serían los "sustantivos" del lenguaje).

  Con respecto a la parte imperativa del lenguaje, la misma tiene varias características que hacen que sea más simple de entender, y que permiten que los conceptos fundamentales se puedan aislar de los demás y así comprenderlos de manera separada del resto. Esto facilita el aprendizaje de dichos conceptos.  Por ejemplo, los parámetros en los procedimientos se entienden como un valor que se fija en cada invocación del procedimiento, y que permanece inmutable durante la ejecución resultante de dicha invocación. De esta manera, los parámetros se diferencian con claridad de las variables, concepto relacionado pero diferente (volveremos sobre este punto en futuros posts).
  También cada una de las formas de combinar comandos aparecen en una forma pura, y razonable para la secuncia didáctica: repetición simple (repeat), alternativa condicional (if-then-else), repetición indexada (foreach), alternativa indexada (switch) y repetición condicional (while), son las únicas formas de combinación (además de la secuencia y los procedimientos).
  Y para ser puros, los comandos no pueden devolver información, pues su única tarea es describir acciones, y no información.
  Por otra parte, las variables no representan espacios de memoria, sino que representan asociaciones temporales entre un valor y un nombre. Cuando se empiezan a agregar estructuras de datos (en XGobstones), las mismas se agregan con esa misma filosofía y eso hace que Gobstones no sea tan imperativo como puede parecer a primera vista.

  Con respecto a la descripción de información, se utilizan las expresiones y funciones, que son elementos puros (o sea, no modifican el tablero), lo que permite pensarlos de manera totalmente independiente de los comandos y procedimientos, y entender su utilidad para describir valores y datos. También volveremos sobre este punto en futuros posts.

  Esta clarísima separación entre "verbos" y "sustantivos" hace que el aprendizaje logrado con Gobstones sea transversal a los paradigmas. Si luego de aprender Gobstones, queremos que los estudiantes aprendan un paradigma funcional, simplemente nos concentramos en la parte de las expresiones, y dejamos los comandos completamente de lado. Si en cambio queremos que aprendan un lenguaje imperativo, dejamos las expresiones en 2do plano y nos concentramos en los comandos. Y si queremos que aprendan un lenguaje orientado a objetos, combinamos ambos, expresiones y comandos, incorporando los comandos como parte de los datos. 
  De esta forma conseguimos que Gobstones sea general y transversal a cualquier paradigma, cumpliendo así con uno de los objetivos originales, y mostrando que la separación de conceptos es fundamental para un aprendizaje como el propuesto.

   Es posible empezar con un lenguaje que no tenga estas características (por ejemplo, que tenga parámetros como espacios de memoria, otras formas de pasaje de parámetros, funciones con efectos, etc.) pero en nuestra experiencia es más complejo para los estudiantes comprender las ideas fundamentales cuando no aparecen en forma pura y además es luego más costoso enseñar a pensar con otros paradigmas.

  Por esa razón, si bien Gobstones tiene base aparentemente imperativa, la realidad es que su base es dual, y transversal; queremos resaltar que éste es uno de los elementos que hacen de Gobstones lo que es.

No hay comentarios:

Publicar un comentario