La capacidad de abstracción es clave al programar
Tradicionalmente, el aprendizaje de la programación se realiza partiendo de la algoritmia y del conocimiento de las estructuras de datos. La Ingeniería del software establece claramente las fases que debemos realizar en el desarrollo de un programa informático. Es un proceso que empieza con la detección de la necesidad y la definición de los requisitos funcionales, para poder diseñar una solución algorítmica que de respuesta al problema. Es entonces, cuando pasamos a codificar la solución planteada mediante una implementación en una sintaxis específica del lenguaje de programación escogido. Se prueba y depura el programa y finalmente, se implanta.
Si nos damos cuenta, el primer paso en cualquier diseño es pensar, establecer necesidades, definir requisitos y planear una solución en forma de algoritmo. De esta manera, el estudio de la programación ha partido fundamentalmente de la algoritmia como base inicial para la resolución y automatización de problemas informáticos.Empezamos en un grado de abstracción elevado que concretamos con la implementación y codificación en la sintaxis del lenguaje en cuestión. Dicho de otro modo, el proceso parte de un esfuerzo intelectual inicial en el que construimos la idea que será aplicada posteriormente.
En la actualidad, el uso de entornos de desarrollo visuales en el aprendizaje de la programación, cada vez más extendido y popular, no refuerza este esquema de pensamiento. De hecho, parte de una premisa diferente en la que se intenta conseguir la abstracción de ideas a partir de múltiples iteraciones o ejemplos. La idea de este modelo es partir de la observación de la sintaxis y la codificación de ejemplos prácticos para progresivamente detectar patrones que nos permitan desarrollar la capacidad de abstracción.
A priori, son dos conceptos bien diferentes uno cada uno de ellos cuenta con ventajas y desventajas. Considero que los modelos visuales proporcionan un acercamiento rápido, enfocado a la resolución de problemas concretos. La posibilidad de ver en todo momento el resultado de la codificación en un canvas permite ver el sentido de línea codificada. Sin embargo, perdemos en gran medida la visión de conjunto e incluso, parte de la capacidad de abstracción necesaria para generalizar la solución. Y digo esto, porque al usar plataformas como Khan Academy que parte de un modelo visual de implementación, he observado claramente que las dificultades que encuentran los alumnos se centran en la parametrización y el diseño de funciones. Ambos conceptos muy relacionados con la abstracción.
Como ejemplo, podemos citar el momento en que los alumnos codifican formas y figuras geométricas para diseñar escenarios. En este modelo definen coordenadas y tamaños absolutos y ven el resultado en pantalla. Cuando les planteas la dificultad añadida de establecer un origen de coordenadas variable necesitan parametrizar las coordenadas en relación a un punto de origen definido por variables, de manera que al cambiar el origen la figura en su conjunto se mueva de forma ordenada sin perder su cohesión. Seguidamente, les planteas establecer un tamaño variable y que las formas mantengan las proporciones en todo momento. En este caso, lo que eran valores fijos deben parametrizarse en función del tamaño total de la figura y debemos establecer una especie de factor de escala que afecte al conjunto.En este caso pretendemos parametrizar con el objetivo de reutilizar el código en cualquier situación, construyendo una solución general en forma de función. Y es aquí dónde se encuentran con dificultades. Ven claramente el objetivo concreto y codifican línea a línea pero el concepto global de reutilización y abstracción les supone un salto intelectual importante que acaban superando no sin mucho esfuerzo por su parte.
figuras ( 100, 200, 200,200)
figuras ( posx + 100, posy + 200, 200, 200)
figuras ( posx + ancho * factor, posy + alto * factor, ancho * factor, alto * factor)
En conclusión, disponemos de dos tipos de enfoques pedagógicos para acercarnos a la programación. Mientras que partir de la abstracción supone un esfuerzo inicial más elevado y precisa de una capacidad mayor del alumnado, la inmediatez de los entornos visuales permiten un acercamiento y motivación derivados de la inmediata aplicación de lo codificado. Parece lógico iniciar a los más jóvenes a través de modelos visuales aplicados y progresivamente derivar el aprendizaje al modelo tradicional para fomentar la abstracción de ideas.