Una de las habilidades que con cierta frecuencia se indica que deberían reforzarse en la educación, es lo que ha dado en llamarse pensamiento computacional.
E, intuitivamente, parece normal y razonable que, dado el impacto actual y creciente de las tecnologías digitales, unas tecnologías basadas en gran parte en ordenadores, en software y algoritmos, se desarrollen habilidades que, de alguna manera, tienen que ver con esa forma de trabajo de las tecnologías digitales.
A vueltas con el pensamiento computacional
Sin embargo, admito que, a pesar de haber desarrollado toda mi ya larga carrera profesional en el ámbito de las tecnologías digitales, a pesar de, durante muchos años, haber ejercido como desarrollador, ya sea como actividad profesional, ya sea como hobby, a pesar de yo mismo haber recomendado, en el ámbito de las herramientas ‘low-code’, el tener una ‘mentalidad de desarrollador’, a pesar de haber vivido y desarrollado en mis propias carnes y mi propia mente lo que entendía y entiendo como pensamiento computacional, nunca me había parado a definirlo, a concretarlo y tampoco, hay que decirlo, había llegado a mi ninguna definición o expresión más concreta de lo que ese pensamiento computacional es.
Porque, aunque tiene mucho que ver con la programación, no hablamos realmente de programación, sino de una forma de enfocar y resolver problemas.
Fases del pensamiento computacional: el planteamiento de Conrad Wolfram
Por eso me ha llamado la atención y he querido traer a este blog, la explicación que al respecto me he encontrado acabando la lectura del libro ‘Inteligencia artificial para los negocios. 21 casos prácticos y opiniones de expertos‘ de Lasse Rouhiainen quien, a su vez, se apoya en el artículo ‘Anchoring computational thinking in today’s curriculum‘ de Conrad Wolfram.
Wolfram plantea el pensamiento computacional como un proceso en cuatro fases tal y como se recoge en la siguiente figura (extraída del propio artículo)
Las fases, con algunos comentarios y pequeñas adaptaciones de mi autoría, serían:
- DEFINIR preguntas: Es decir, clarificar, de manera inequívoca cuál es la pregunta o preguntas que queremos contestar o, si se prefiere, cuál es el problema que queremos resolver. En mi opinión, lo más relevante y diferencial de esta fase, en lo que a pensamiento computacional se refiere es que esa formulación de la pregunta o preguntas sea exacta, sin ambigüedades.
- TRADUCIR a abstracciones: Traducir esa pregunta a una serie de pasos, de nuevo, inequívocos y sin ambigüedades, que permiten contestar la pregunta o resolver el problema, y expresar esos pasos en algún tipo de lenguaje formal (lenguaje de semántica exacta), ya sea un lenguaje de programación, un lenguaje gráfico formal o un procedimiento inequívoco. En esta traducción, en general, se intentarán reutilizar técnicas o algoritmos ya existentes y definidos. En cualquier caso, y de alguna manera, esta fase supone establecer el algoritmo para contestar a la pregunta / resolver el problema.
- COMPUTAR las respuestas: Una vez hecho esto, calcular realmente la respuesta o resolver realmente el problema, generalmente usando un ordenador. Eso producirá la respuesta que Wolfram etiqueta como respuesta abstracta, cosa en la que no estoy cien por cien de acuerdo. En algunos casos la respuesta puede ser, en efecto, general o abstracta, Según la pregunta / problema, la respuesta puede ser concreta, exacta y definitiva, no abstracta, y por tanto no precisar de la siguiente y última fase.
- INTERPRETAR los resultados Volver a poner en el contexto de la pregunta el resultado obtenido y, con cierto grado de escepticismo, evaluar o validar esa respuesta.
En el planteamiento de Wolfram, estas fases no constituyen un proceso lineal de tipo ‘one-shot‘, sino que realmente se suelen aplicar de manera iterativa, lo que el expresa gráficamente como una hélice.
Conclusiones
De las cuatro fases, en mi opinión, la que más marca, con diferencia, la esencia del pensamiento computacional, es la segunda: esa capacidad de abstraer y de estructurar en un algoritmo la respuesta, y un algoritmo expresado en lenguaje formal. Eso es lo que hace un desarrollador cuando diseña el software, momento en que estudia el problema recibido y define, usando como piezas las instrucciones de un lenguaje de programación y las librerías disponibles, cómo va a obtener la respuesta o solucionar el problema planteado.
Una forma de pensar y actuar que exige rigor, exactitud, planificación y capacidad de abstracción. Y una forma de pensar que, en el fondo, es muy parecida, creo, al pensamiento matemático, aunque computación y matemáticas, constituyan realmente disciplinas claramente diferenciadas.
Rigor, exactitud, planificación y abstracción. Si, me parece que esa es una buena forma de explicar el pensamiento computacional.
2 comentarios