Por Marcos J. Gómez. Doctor en Ciencias de la Computación*
Pensar y llevar la enseñanza de las Ciencias de la Computación y de programación a todos los niveles educativos es un desafío que están atravesando muchos países del mundo. Reúne intereses de universidades, empresas, organizaciones y países como Reino Unido, Nueva Zelanda, Estados Unidos y Alemania. En Argentina, desde 2010 los miembros de la Secretaría Nacional de Ciencia e Innovación Productiva junto con las universidades nacionales han estado promoviendo la enseñanza de programación en la escuela. En Agosto del 2015, el Consejo Federal de Educación (CFE), a través de la Resolución Nº 263/15, declaró de importancia estratégica a la enseñanza y el aprendizaje de la Programación en todas las escuelas, durante la escolaridad obligatoria.
Para poder hacer realidad la enseñanza de las Ciencias de la Computación en contextos educativos reales, se han implementado diferentes estrategias como desarrollo de entornos y lenguajes para la enseñanza de programación, recursos didácticos, organización de eventos como hackathons o Game Jam y cursos de formación docente.
En esta oportunidad, me gustaría profundizar con respecto a los entornos y lenguajes para la enseñanza de programación. En los últimos años, la oferta de entornos para enseñar a programar se ha multiplicado. A pesar del paso del tiempo, el trabajo realizado por Papert y el lenguaje de enseñanza de programación Logo, influyó y lo sigue haciendo, en el desarrollo de los lenguajes de enseñanza de programación y de los entornos existentes. Logo fue diseñado para poder enseñar a programar a principiantes, haciendo foco en estudiantes de escuela primaria. Es conocido como el «lenguaje de la tortuga” ya que permite programar a una tortuga robótica para que se mueva y dibuje utilizando instrucciones sencillas. La aplicación de Logo es mover la tortuga y dibujar, pero su objetivo es enseñar conceptos fundamentales de la programación.
Podemos ver dos ejes centrales sobre los cuales Papert hizo foco y generó impacto en el área de enseñanza de la programación:
- La idea de contar con lenguajes de programación específicos para enseñar a programar a principiantes.
- A diferencia de los lenguajes de programación conocidos hasta el momento, que eran de propósito general, estos nuevos lenguajes de programación para enseñar a programar se pensaron de propósito específico, con un área de aplicación concreta.
La aplicación de los lenguajes de enseñanza de programación toma un rol demasiado relevante en detrimento de otras variables importantes, no tan obvias a primera vista, que afectan la enseñanza de la programación. Una de estas variables se vincula directamente con una de las recomendaciones más leídas y escuchadas para chicos y chicas que quieren aprender a programar. La recomendación es: «Para chicos y chicas de primaria Scratch , para chicos y chicas de secundaria Python«. Vamos con un análisis más profundo.
En los últimos años, estuvimos investigando con Luciana Benotti, cómo enseñar a programar en todos los niveles educativos. Una de las primeras preguntas que surge es: ¿qué lenguaje uso? Al hacer una revisión de los entornos o lenguajes utilizados al enseñar a programar se encuentra una enorme variedad. Para nuestras experiencias desarrollamos y probamos lenguajes. Estudiamos el impacto de aspectos de la adquisición del lenguaje al enseñar a programar. La expresividad del lenguaje fue uno de los aspectos.
El nivel de expresividad del lenguaje define el nivel de profundidad o control que podemos tener al momento de crear un nuevo programa. En particular nos enfocamos en lenguajes de bloques, lenguajes de texto, lenguajes doble modalidad y lenguajes que traducen de bloques a texto.
Analizamos el impacto de lenguajes con diferentes niveles de expresividad al momento de enseñar a programar a principiantes. Podemos decir que hay discusiones entre quienes prefieren bloques o texto. Weintrop y Wilensky plantean “to block or not to block”. Uno de los argumentos de los defensores de los bloques es que los frecuentes errores de sintaxis que sufren los programadores principiantes los desmotivan y generan abandono. Uno de los argumentos de los defensores de comenzar directamente con texto es que los bloques sólo retrasan el problema de los errores de sintaxis pero no lo solucionan porque eventualmente, para crear programas interesantes, es necesario aprender a programar con texto.
Ejemplos de lenguajes de bloques son: Scratch, Pilas Bloques, Alice, etc. Cada vez son más utilizados para enseñar a programar a principiantes en todos los niveles educativos. Pero no todo es bloque vs texto.
También tenemos lenguajes doble modalidad y lenguajes que traducen de bloques a texto. Los lenguajes doble modalidad, permiten al estudiante elegir programar en bloques o en texto y traducen automáticamente los cambios de un lenguaje a otro. Pencil code es doble modalidad.
Los lenguajes que traducen de bloques a texto permite traducir los bloques a diferentes lenguajes de texto como JavaScript, Python, C++ entre otros. Pero no es posible traducir texto a bloques, sólo traduce en una dirección. Esto se debe a que, en este tipo de entornos, los lenguajes de bloques tienen un menor nivel de expresividad que los lenguajes de texto. La necesidad de contar con lenguajes de mayor expresividad para crear programas más complejos, motiva a los estudiantes a explorar y adquirir nuevos lenguajes de programación. Blockly nos permite crear nuestros propios bloques y su traducción a lenguaje de texto a utilizar.
Por lo que, en base a la expresividad tenemos muchas opciones. Entonces, ¿bloques (Scratch) para primaria y texto (Python) para secundaria? No hay edades para los lenguajes de bloques. Podemos pensar en transiciones. Comenzar con bloques y luego pasar a texto. Y aprovechar los entornos que traducen de bloques a texto para motivar el uso de lenguajes de texto.
El mundo del cual formamos parte está digitalizado. Las computadoras nos atraviesan en nuestra cotidianeidad. Somos grandes consumidores de aplicaciones, videojuegos, celulares pero el usuario promedio desconoce su funcionamiento y gran parte de sus riesgos. La mayor parte de las actividades que realizamos en el día son acompañadas por una computadora. Nos despertamos con la alarma del celular, nos acostamos revisando cómo estará el clima, confirmando nuestras actividades en el calendario de google o resolviendo alguna situación de último momento con Whatsapp. Somos usuarios intensivos de programas y aplicaciones. Esta es la primera generación de niñas, niños y adolescentes para la que, las computadoras se encuentran tan presentes en su hogar. Muchas veces nos sorprendemos con la facilidad en que los niños y niñas utilizan los programas. Desde los medios escuchamos, leemos que se refieren a los niñas, niños y adolescentes como “nativos digitales”. Para poner en tensión esta idea de “nativos digitales” me gustaría reflexionar a partir de las siguientes preguntas: ¿Tienen estos niños y niñas en la escuela la oportunidad de reflexionar acerca de quién, cómo y por qué son creados estos programas, aplicaciones o dispositivos? Y al no entender cómo realmente funcionan estos programas y aplicaciones, ¿pueden elegir libremente los programas o aplicaciones que utilizan? Y por lo tanto, ¿qué significa ser nativo digital? ¿ser solo un consumidor digital de programas, aplicaciones o dispositivos?
Para poder ser ciudadanos críticos en el mundo de hoy, es importante democratizar la enseñanza de la computación y la programación. Para poder democratizar la computación, la enseñanza de la computación y programación tiene que ser parte de contextos educativos reales. Enseñar computación y programación tiene que ser parte del sistema educativo obligatorio.
*Sobre el autor:
Marcos J. Gómez. Doctor en Ciencias de la Computación en la Universidad Nacional de Córdoba. Su investigación se basa en la enseñanza de programación en contextos educativos reales, en cuanto a entornos y herramientas para enseñar a programar y contenidos específicos. Es docente de computación en nivel primario desde 2013. Actualmente forma parte del equipo de la Iniciativa Program.AR de la Fundación Sadosky.