lunes, 19 de octubre de 2015

2. ¡Dame más comandos!

La importancia de empezar por los procedimientos.

 

  Si miramos el enfoque didáctico y el currículum presentado en el post anterior, "¿Por qué es importante Gobstones?", vemos que inmediatamente después de presentar la idea básica de comandos primitivos, secuencias y bloques, el siguiente concepto que se presenta es el de procedimientos (en su forma simple, es decir, sin parámetros). Este es uno de los *pilares fundamentales* del enfoque didáctico Gobstones.

  El concepto de procedimiento es una de las herramientas de abstracción básicas de cualquier lenguaje de programación, y creemos firmemente que un curso inicial de programación que pretende formar el pensamiento abstracto debe comenzar con este concepto como el primero y más importante de los conceptos presentados.

  Un procedimiento es una herramienta del lenguaje que permite que el programador defina nuevos comandos en términos de los anteriores, y de esa manera exprese las subtareas que identificó como parte del planteo de una estrategia de solución para el problema a resolver, *pero en términos del problema* y no en términos de la máquina que lo resuelve y sus comandos primitivos. (Posteriormente en el enfoque didáctico Gobstones se presenta la noción de función, que expresa la misma noción en el mundo de las expresiones).

  En el caso de Gobstones, los comandos primitivos hablan de bolitas (ya tocaremos el tema del universo de discurso en próximos posts), pero la gran mayoría de los problemas que se presentan (todos, con excepción de los primeros ejemplos de introducción) hablan de otros elementos: pueden ser dibujos u otras entidades, tales como piezas de ajedrez, flores, animales, etc., expresados mediante determinadas combinaciones de bolitas. Entonces, en lugar del comando Poner(Rojo) sería interesante contar con el comando PlantarFlor() que abstrae el hecho de que la flor se representa con una bolita roja, y comunica la intención del programador para esa bolita roja. Este comando puede ser definido por el programador a través de un procedimiento. Por este medio se consigue que la bolita roja adquiera para el lector del programa un significado especial (en este caso, representar a una flor). Posteriormente, si se decide cambiar la representación de la flor a 2 bolitas rojas y 1 verde, solo hace falta cambiar la implementación de PlantarFlor() para que ponga esa cantidad de bolitas, pero el resto del programa no se vería afectado, pues utiliza el nuevo comando PlantarFlor() que se expresa en términos del problema y no de la representación subyacente.

  Es un hecho conocido por todo programador, aunque no siempre explicitado, que los programas tienen una naturaleza dual: son al mismo tiempo una prescripción de bajo nivel en términos de las primitivas de la máquina de qué pasos deben ejecutarse para solucionar el problema (la *naturaleza operacional* de un programa) y una descripción de alto nivel de las ideas que se combinan para obtener dicha solución en términos del problema (la *naturaleza denotacional* de un programa).
  Los *cursos tradicionales* se focalizan en la definición de programa como secuencia de instrucciones, haciendo hincapié en la *naturaleza operacional* de los programas (el programa como prescriptor de una ejecución en términos de las primitivas de la máquina), y poniendo como centro de atención a la máquina que resuelve el problema, en lugar de al problema en sí, o a la persona que lee el programa.
  Nuestra elección de empezar por procedimientos en la *secuencia didáctica Gobstones* permite conceptualizar a los programas como descripciones de solución a un problema en términos de los conceptos del problema, enfatizando la *naturaleza denotacional* del programa (el programa como descripción de una solución en términos del mismo problema) abstrayendo el hecho de que es la máquina la que soluciona el problema, y comenzando así a adquirir la capacidad de explicitar el proceso de abstracción mediante herramientas del lenguaje.

  Estamos totalmente convencidos que si queremos formar pensamiento abstracto, el proceso de abstracción debe ser explícito desde el mismísimo comienzo del aprendizaje. Y la mejor manera de lograr esto es a través del uso de las herramientas de abstracción provistas por cualquier lenguaje de programación.
  Por eso los procedimientos, y su tempranísima utilización, son quizás la mayor contribución de la secuencia didáctica Gobstones. No debe descuidarse este hecho, ni restarle la más mínima importancia.
  Para Gobstones, los procedimientos importan.

No hay comentarios:

Publicar un comentario