Ir al contenido principal

Cómo enseñar programación

¿Qué habilidades se requieren para saber programar? Por un lado, parece casi obvio que se necesita un pensamiento lógico-matemático; por otro lado, los lenguajes de programación tienen un vocabulario y una gramática fuertemente estructurada. Entonces ¿qué es más importante? ¿el pensamiento lógico-matemático o el lingüístico? La respuesta a esta pregunta no es trivial, ya que tiene la clave para determinar cómo debemos enseñar a programar.


Fuente: Pixabay

De los cables a la inteligencia artificial

Las primeras computadoras se programaban conectando cables, un proceso lento, desgastante y propenso a fallas. Las primeras computadoras digitales utilizaban válvulas termoiónicas (o válvulas de vacío) que eran conectadas por cables. Estas válvulas atraían a insectos voladores (bugs) que, al entrar en contacto con los cables provocaban cortocircuitos y morían (pobres bichitos). Y, claro, ya podrá adivinar que de ahí viene el término bug para referirse a los fallos en los sistemas. Más tarde las válvulas serían reemplazadas por los transistores, éstos por los circuitos integrados y éstos por las pastillas de silicio. Pero sólo era la electrónica miniaturizándose. En su esencia, programar sigue siendo una cuestión de conexión de circuitos lógicos. Entonces ¿cómo se podía hacer este proceso de forma dinámica y sencilla?


La solución vino de la mano de Grace Hopper, quien creó el primer compilador (una especie de traductor) que interpreta un programa en un lenguaje entendible por un ser humano, para convertirlo en ceros y unos -que es lo que puede procesar una CPU. Y así nacieron los lenguajes de programación. El gran salto fue que ya no hacía falta enfocarse en los circuitos, lo que permitía pensar con un mayor nivel de abstracción y centrarse en las soluciones.



Los sucesivos lenguajes de programación evolucionaron para que los programadores pudieran modelar el mundo real con mayores grados de complejidad. En el transcurso de unas pocas décadas, se pasó de conectar cables al desarrollo de la inteligencia artificial.


Los lenguajes de programación

El primer programa de computación fue escrito por Ada Lovelace y publicado en la revista Scientific Memoirs en septiembre de 1843, mucho antes de la invención de la primera computadora. Se trató de un desarrollo teórico, aunque esto es lo más común porque toda la tecnología está precedida por un desarrollo científico. Este algoritmo estaba pensado para otro desarrollo teórico, la máquina analítica de Charles Babbage.


Hasta aquí todo parece claro: para programar solo se requiere pensar matemáticamente. Excepto que -sin negar este hecho- diseñar un algoritmo depende en gran medida de la capacidad para utilizar un lenguaje. Y no cualquiera. Para un algoritmo se requiere un Lenguaje Independiente del Contexto (o Lenguaje tipo 2 en la Jerarquía de Chomsky).


Fuente: Pixabay


Vamos con un ejemplo. Si digo “Juan es un viejo amigo” mi interlocutor podrá interpretar que a) Juan es viejo, b) Juan es mi amigo desde hace muchos años o c) es un amigo de larga data y está entrado en años. 


Las gramáticas de los idiomas o lenguajes naturales (comparables a la categoría 1 de los lenguajes formales en la categoría de Chomsky) tienen la dificultad de que no pueden interpretarse inequívocamente. Existe el riesgo de malinterpretar. En otras palabras, los compiladores tendrían las mismas dificultades que los traductores si quisieran convertir el lenguaje natural al lenguaje matemático de las computadoras. Ahora mismo estará pensando ¿y qué problema hay? Bueno, que en el caso de los circuitos binarios la más mínima ambigüedad hace que todo falle. Como una polilla en un circuito.


Para poder escribir un programa se requiere conocer un vocabulario de términos técnicos, que denominamos palabras reservadas, y una gramática muy, pero muy estricta. ¿Estricta como la del inglés? No, peor. Tan estricta que cualquier desviación de las reglas esperadas hará que el compilador rechace el algoritmo. Así que, en esencia, para programar hay que ser muy buen escritor.


Volvemos al punto de partida. 


¿Habilidades matemáticas o lingüísticas?

Diversos estudios sobre el procesamiento cognitivo de los programadores proponen dos hipótesis: una corriente sostiene que el cerebro categoriza el código de programación como lo haría con un texto en español o alemán. Es decir, que activa las regiones del cerebro que procesan el lenguaje como, por ejemplo, el Área de Broca. La otra hipótesis es que las regiones del cerebro que procesan el pensamiento lógico-matemático, como el pensamiento simbólico del álgebra, se adaptan para para abstraer el código. Esto involucraría el sistema de demanda múltiple, una región del cerebro que procesa la lógica y la solución de problemas. Un estudio del MIT convocó a programadores expertos para mapear su actividad cerebral por resonancia magnética mientras codificaban (Trafton, 2020). Se esperaba que los resultados zanjaran la cuestión y mostraran de forma clara qué región del cerebro tenía mayor activación, la matemática o la lingüística. Pero la respuesta fue más compleja de lo que se había anticipado. Además de activarse ambas regiones, se vio que otras áreas del cerebro quedaban comprometidas (Liu et al., 2020)


En términos simples, los resultados mostraron que programar es una actividad comparable a la que se observa cuando una persona trata de resolver un problema extremadamente difícil. Por lo que programar puede entenderse como un desafío cognitivo demandante; como resolver los crímenes de Agatha Christie (es lo más difícil que se me ocurre)



Fuente: Pixabay


Estrategias didácticas

Si el código de programación se procesara como lenguaje, entonces se podría enseñar con las estrategias más sólidas de la enseñanza de idiomas extranjeros. Y si se procesara sólo desde las habilidades lógicas, entonces se podrían utilizar las didácticas más interesantes de la enseñanza de las matemáticas. Pero no. Y, por si fuera poco, otros estudios indican que factores como la edad están relacionados con las áreas cognitivas de mayor activación. Los niños activan con mayor intensidad las áreas de procesamiento del lenguaje, mientras que los jóvenes y adultos las regiones de procesamiento lógico-matemático.

Los docentes debemos ser creativos a la hora de enseñar a programar y encontrar didácticas especializadas por edad, intereses y el lenguaje específico a enseñar. Porque quizás el dato más certero que tenemos en la actualidad es que el lenguaje de programación condiciona la forma de pensar el problema y diseñar la solución. Casi como si estuviéramos hablando de las hipótesis de Sapir-Whorf

En mis clases de programación suelo decir que lo primero es entender cómo se resuelve un problema sin computadoras, solo ver cómo fluyen los datos. Luego, pensar en los procesos que transforman los datos. Por último, pensar en cómo darle órdenes a la computadora para que haga todo sin equivocarse. Los programadores sabemos que programar es dar órdenes. Muchas órdenes. Porque las computadoras no hacen lo que uno quiere, sino lo que uno les pide. He ahí el problema.

Para seguir conversando

¿Cómo enseñarían ustedes a programar? ¿Qué les ha dado mejores resultados? Me gustaría leer sus opiniones en los comentarios.


¡Nos seguimos leyendo!

Enrique Facundo Ruiz Blanco


Trabajos consultados

Liu, Y; Kim, J.; Wilson, C.; Bedny, M. (2020). Computer code comprehension shares neural resources with formal logical inference in the fronto-parietal network. Johns Hopkins University, United States

Olson, H. (2019). Can I rewire my brain?

SciShow Psych. Is Coding a Math Skill or a Language Skill? Neither? Both?

Trafton, A. (2020). To the brain, reading computer code is not the same as reading language. MIT News Office


Comentarios

Entradas populares de este blog

La Teoría de McLuhan

Hay algo fascinante en las tecnologías educativas: nos cautivan, inspiran e ilusionan. En el ámbito educativo siglas como TIC , NTIC y TICE son sinónimo de vanguardia. De hecho, todo lo que sea tecnológico brilla con luz propia, es como vivir un paso en el futuro. Por lo mismo, los docentes que se atreven a utilizar las TIC parecen pertenecer a una casta superior.  En las charlas de profesores, más temprano que tarde aparecerá una expresión del tipo “los chicos de hoy aprenden con las tecnologías”, a lo que otro responderá “es que son nativos digitales”. Por cierto, no estoy para nada de acuerdo con ninguna de estas expresiones y seguramente escribiré al respecto más adelante. De cualquier forma, es evidente que en el imaginario popular la tecnología es la forma de llegar a los alumnos. En verdad, este encanto no está limitado a las tecnologías educativas, sino que es propio de las tecnologías en general. Especialmente cuando se trata de tecnologías digitales. Pero ¿qué es...

Educación multimodal

Con algunos matices según el autor, se denomina educación multimodal a la integración de las tecnologías de la educación en todas las modalidades educativas ya sea presencial, semipresencial, abierta o a distancia. A grandes rasgos se presenta como la educación del futuro, como el mejor camino a seguir e, incluso, conforma una parte importante de la agenda educativa mundial. Es ideal . Pero no es un ideal entendido como modelo de perfección, sino porque solo existe en el plano de las ideas .  Fuente: pixabay En este artículo veremos por qué es tan interesante y, a la vez, tan difícil de conseguir (difícil, pero no imposible) Las promesas de la educación multimodal Algunos autores presentan a la educación multimodal como una respuesta a las necesidades de una formación para la inclusión social, que favorezca el progreso de la  sociedad del conocimiento y que construya escenarios de intercambio científico (Guzmán Flores, 2016).  Calderón Vivar (2012) la define como la inte...

Tecnología, sociedad y educación

Un refrán popular sentencia: “dime con quien andas y te diré quién eres”. Lo divertido de esto es que a veces nos andamos con ciertos autores y corrientes de pensamiento que no conocemos. Como muchas otras cosas en la vida, algunos posicionamientos que llegamos a naturalizar nos fueron impuestos culturalmente, por la influencia de los medios de comunicación o por falta de otros mejores. Fuente: freepik.es Cuando hablamos de tecnologías es fácil encontrar ciertos discursos que se repiten una y otra vez: “la tecnología no es buena ni mala, depende de cómo se use”; “yo no soy bueno con la tecnología, así que le pido todo al técnico” o “las nuevas generaciones entienden la tecnología porque nacieron con la PlayStation”. Estas frases parecen no conectarse entre sí, pero tienen un común denominador: a la base todas tienen algún enfoque que sustenta supuestos ontológicos a la vez que configuran marcos éticos. Claro, usted pensará “chocolate por la noticia, la vida misma es así”. Pued...