For neuron in brain: neuron.improve()

Marta Bueno y José R. Alonso

El título recoge un fragmento de un hipotético programa diseñado para el hardware de nuestro cerebro. Este lenguaje de programación en concreto se denomina Python, pero hay muchos otros. Un bucle nos indica que se recorrerán una a una nuestras neuronas, son “solo” 86 000 millones, para mejorarlas. La broma nos sirve para hacernos conscientes de que la tecnología digital forma parte integral de la sociedad actual y de su enorme poder. Está a nuestra disposición para facilitarnos la vida, atender nuestra salud, entretenernos o, en el peor de los casos, controlarnos. Para la mayoría de nosotros, los aparatos electrónicos son simples cajas negras que llevan a cabo una serie de acciones a partir de instrucciones básicas. Carl Sagan decía que «vivimos en un mundo completamente dependiente de la ciencia y la tecnología, en el cual casi nadie sabe nada de ciencia y tecnología». Sagan terminaba esa certera visión con un pensamiento sombrío «Eso es una receta segura para el desastre». Pues bien, no es necesario que programemos, aunque ya veremos que es muy saludable para nuestro cerebro, pero sí es bueno conocer un poco más sobre qué supone esa tarea. Nos da una perspectiva nueva, una visión más crítica de esta sociedad en la que vivimos. La curiosidad y las ganas de aprender, dando la razón a Sagan, nos hacen menos manipulables y mejores ciudadanos.

Para programar es necesario conocer un lenguaje de programación, pero no es suficiente. Llevar a cabo esta transcripción de una inteligencia natural, la del programador, a una inteligencia artificial, la de la máquina, es un proceso complejo que analizaremos con un poco de atención, no sólo por lo fascinante de un logro tan espectacular de las últimas generaciones, sino por los posibles beneficios que aporta este aprendizaje como recurso educativo. Así, empezaremos recordando que los dispositivos digitales entienden ceros y unos que se han sofisticado en un código un poco más elaborado. Este código o lenguaje de programación no es un lenguaje natural. Tiene sus reglas, pero es básico en la interpretación de enunciados. Por lo tanto, un primer paso para indicar a este dispositivo la función que queremos que haga es desmenuzar esa tarea en fragmentos muy pequeños. Es indispensable pensar con lógica aplicando un razonamiento matemático que estructure cada paso y que analice cada fase del desarrollo del programa. Todos estos bloques se unen después en una secuencia eficaz. Cualquier tarea sencilla se convierte en varias líneas de código. Por ejemplo, pensemos en un cuadrado y en una abeja en la esquina superior izquierda. Queremos que al pulsar un botón esa abeja llegue a la esquina opuesta. Se nos ocurre que haga el camino por la diagonal, pero las reglas que entiende la abeja establecen que ésta sólo puede moverse siguiendo la cuadrícula. Así, avanzará por la arista superior y bajará por la arista derecha: gira_d; avanza; avanza; avanza; gira_d; avanza; avanza; avanza. Con este algoritmo, lo conseguirá. Con un bucle lo reducimos: repite 2 (gira_d; repite 3 (avanza)). Usando Logo, un veterano lenguaje de programación utilizado en educación, el programa sería: repeat 2 [rt 90 fd 3]

Y en Python, también usado en las aulas,

from turtle import *
for i in range(2):
right(90)
forward(3)

Con este programa, pulsamos y la abeja se mueve tal y como queríamos. Vemos que el interior de las cajas negras contiene miles de líneas de código. Con tanto texto para cada acción mínima lo habitual es que aparezcan errores. Además, no hay una solución única para resolver el problema; nuestra abeja podría haber llegado a su destino bajando por la arista izquierda y avanzando por la inferior. La sencillez es fundamental.

Diseñar este proceso tan complejo se denomina pensamiento computacional y es una de las habilidades cognitivas que involucra más activación cerebral. No llevamos muchas décadas programando máquinas pero la plasticidad de nuestro cerebro recicla redes neuronales a funciones para las que no estaban dirigidas originalmente.

Es cierto que se activan regiones destinadas al procesamiento del lenguaje, como ha demostrado un equipo de científicos dirigidos por Janet Siegmund (Peitek et al. 2018). Valoraron la actividad cerebral con técnicas de neuroimagen de programadores participantes mientras revisaban fragmentos de código y encontraron un patrón de activación de cinco regiones del cerebro, que están relacionadas con el procesamiento del lenguaje (corteza prefrontal lateral ventral), la memoria de trabajo y la atención. Curiosamente, a pesar de que había código que involucraba operaciones matemáticas, condicionales e iteraciones de bucle, la programación tenía menos en común de lo esperado con las matemáticas en relación con la activación de regiones cerebrales.

El estudio tiene algunas limitaciones. Como en muchas investigaciones se hacía un diseño reduccionista y los programadores participantes llevaban a cabo una tarea única cuando parece evidente que al diseñar un programa hay diferentes fases, diferentes procesos cognitivos y muy probablemente distintas actividades cerebrales. Los programadores entran en el debate argumentando la implicación de un pensamiento matemático en sus desarrollos de software.

Independientemente de en qué área de conocimiento coloquemos a la programación, es interesante asomarse a su interior. Nos hace conscientes de otra perspectiva de la realidad. Si ahondamos más en ese conocimiento y aprendemos a programar, los beneficios para nuestro cerebro son importantes. Pensemos en nuestros alumnos y en el desafío que puede suponer para ellos. Es un aprendizaje que requiere creatividad, un pensamiento abstracto, la búsqueda de soluciones y una concentración en la tarea por períodos prolongados. Poniendo el foco de atención en este aprendizaje a edades tempranas, tenemos la evidencia de que se entrenan habilidades muy valiosas. Un metaanálisis sobre un centenar de estudios, que sumaban 9139 alumnos, llevado a cabo por investigadores de la Universidad de Oslo (Scherer et al., 2019) analizó la repercusión de aprender a programar sobre otras habilidades cognitivas. El estudio concluyó que la programación generaba una mejora en el pensamiento creativo, las habilidades matemáticas y la metacognición, y en menor medida en las habilidades espaciales y en el razonamiento general.

Como educadores debemos evaluar con prudencia cada propuesta de nuevas materias en el currículo y ver cuáles son sus posibilidades y requerimientos. Intuimos que programar supone una implicación deseable de muchas regiones de su cerebro y entre las habilidades que pueden adquirir nuestros alumnos programadores está alguna tan importante en el siglo XXI como la creatividad. La imaginación de los niños no tiene límites y desarrollar un programa puede hacer realidad una fantasía. No dudamos en lo beneficioso que es pensar en la idea imaginada, diseñar lo que se quiere programar en un papel, desarrollarla y resolver dudas, innovar caminos alternativos ya que no hay uno solo, y ser consciente de la evolución hacia el resultado final. Se proponen metas a largo plazo y se refuerza la constancia y la resistencia a la frustración, se activa la agilidad mental buscando soluciones, se tienen que relacionar e integrar los procesos intermedios y siempre usando la razón y la lógica. Esto se entrena y el pensamiento es cada vez más profundo en ese sentido.

Nos quejamos de que los chicos se pasan el día delante de una pantalla. Los alumnos que programan están evidentemente en un entorno digital pero no simplemente consumiendo lo que ven delante de ellos, sino que están construyendo sus propias herramientas, pasan de ser elementos pasivos a protagonistas. Se trabaja mucho la atención y la concentración, también el orden y la manera de estructurar unas instrucciones y no se puede olvidar que al hacer un programa es probable que otra persona lo lea o quizá ellos mismos en otro momento. Es por ello necesario ser cuidadoso y metódico. Se necesita la memoria porque los chicos tienen que recordar las normas del lenguaje de programación que están usando, los patrones que éste debe seguir y los nombres de las variables para obtener los resultados esperados. Además, durante el desarrollo de un programa surgirán problemas, dudas y errores que tendrán que solventar. Estas dificultades, como todas las que aparecen en un aula, se gestionan sobre la base de la neurodiversidad y el respeto, desde ritmos diferentes en cada alumno y la ilusión por comprender cada paso. La idea es probar y equivocarse, mejorar y solucionar errores. Programar estimula la capacidad de cálculo y lógica y ésta va unida a un pensamiento más crítico, a encontrar caminos alternativos, a no perder de vista la meta. Por si esto fuera poco, los niños y jóvenes socializan entre ellos cuando están en un aula de informática ya que las preguntas que les surgen al programar se las hacen al compañero de al lado antes que al profesor. El trabajo cooperativo es importante para afianzar aprendizajes. Además, programan chicas y chicos. Recordemos que la primera programadora fue Ada Lovelace, matemática e informática. Su creatividad hizo avanzar la ciencia y también le proporcionó ideas como escritora igual que a su padre, lord Byron.

Evidentemente hay otros recursos para fortalecer habilidades cognitivas, pero programar proporciona destrezas entrenando, engrasando y modificando las estructuras neuronales. No obstante, sólo se harán patentes estos beneficios si la experiencia de diseñar software es positiva, agradable, atrae al alumno y le emociona.

Con estas nociones sobre los códigos computacionales podemos pensar en profesores ilusionados por transmitir este conocimiento e imaginar que ellos podrían formar a jóvenes que en un futuro quizá programen otro dispositivo como este que tenemos delante, los escáneres de neuroimagen que hemos nombrado en estas líneas y, en definitiva, la tecnología a la que Carl Sagan nos animaba a explorar y comprender.

 

Referencias

  • Peitek N, Siegmund J, Apel S, Kästner C, Parnin C, Bethmann A, Leich T, Saake G, Brechmann A (2018) A look into programmers’ heads. IEEE Transactions on Software Engineering (2018). DOI: 10.1109/TSE.2018.2863303
  • Scherer R, Siddiq F, Sánchez Viveros B (2019) The cognitive benefits of learning computer programming: A meta-analysis of transfer effects. Journal of Educational Psychology 111(5): 764–792. DOI: 10.1037/edu0000314

Autor: José R. Alonso

Neurobiólogo. Catedrático de la Universidad de Salamanca. Escritor.

3 comentarios en “For neuron in brain: neuron.improve()”

  1. Me encanta la visión que dais sobre el aprendizaje de la programación. Llevo más de 25 años dando clase de programación y herramientas informáticas a niños y mayores. En el caso de los niños, me sorprenden cada día con su creatividad, su lógica fácil, sus ganas de perfeccionar los interfaces…. En fin, unida a la música y a las matemáticas, la programación desarrolla en los niños capacidades increíbles. Gracias por vuestro post.

    Me gusta

    1. Estimada Sonia, muchas gracias por tu comentario. Es una labor maravillosa contribuir a desarrollar la creatividad de los niños, así que te felicito por ello. Un saludo muy cordial

      Me gusta

Responder a Marta Cancelar respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.