domingo, 20 de marzo de 2016

La computación rompe con las abstracciones

Presentación

Soy Nicolás Wolovick, trabajo en la Universidad Nacional de Córdoba como docente en Ciencias de la Computación desde hace ya 20 años. Crecí en los 80s la época dorada de las microcomputadoras, y tuve la suerte de tener una. Desde ahí nunca dejé de hacer esto.

Actualmente, además de dar clases e investigar en HPC (computación de alto desempeño), estoy colaborando en el armado de la Especialización Docente de Nivel Superior en Enseñanza de la Programación Informática del Ministerio de Educación de la Provincia de Córdoba, dirigido por Cecilia Martinez. Ahí voy a tener mi primer experiencia a nivel de formador de formadores, en lo que sería "La Informática como Materia" del nivel inicial.

¿Qué es la computación?
 
No sé si lo leí o me lo contaron, pero al menos me lo creo, la computación es la Ciencia de la Abstracción.

El rol de los alumnos en esta Ciencia de la Abstracción
 
Los alumnos tienen que ser partícipes de esas abstracciones: comprenderlas o romperlas.
Es muy fuerte cuando a un chico o a una chica le abrís una consola y le enseñás a llamar a los programas.
Están de alguna manera comprendiendo que los programas no están simplente ahí ejecutando, sino que se los invocan, se ejecutan y se destruyen. Están empezando a comprender una de las abstracciones más populares de la computación: los procesos, la virtualización de una CPU.
Me gusta mostrar como Android intenta ocultar esto, pero aún así, es posible romper esa abstracción con un cronómetro y ver que hay veces que al proceso se lo invoca (tarda más) y otras donde solamente se lo muestra en la pantalla completa (tarda menos).
 

Parecería que estas abstracciones nos ocultan la complejidad de los aparatos y nos vuelven consumidores pasivos de tecnología como en este caso de los celulares inteligentes.
Las abstracciones no son malas, pero nuestro rol es interpelarlas y mostrarlas.
También me gusta mucho cuando les mostrás que por el puerto USB de una tablet/celu/net le podés conectar un teclado o un mouse. Es increíblemente complejo lo que pasa por debajo, sin embargo la abstracción funciona a la perfección, cambiamos diametralmente de dispositivo de entrada (touchscreen y teclado virtual en una pantalla a un dispositivo que tiene más de 40 años) y todo funciona como es de esperar. Una chica o un chico debería entender, usar y explotar esas cosas. Se te rompió el teclado de la net o la pantalla táctil del celu, no hay problema, ¡Conectale un teclado!
 

Me gusta mucho la presentación de un programador que dice "abstraction maker, abstraction breaker". Suena bien en inglés, pero además dice mucho de la disciplina, creamos abstracciones pero también las deconstruimos, las rompemos.
En ese sentido me parece excelente el planteo de la Raspberry Pi Foundation. El dispositivo se ve, podemos tocar la CPU, la RAM, los puertos. Es la computadora al desnudo. No tiene nada incorporado que no sea estrictamente lo que debería tener un mecanismo de computación. "¿Y el teclado? ¿Y la pantalla?" así me preguntaban los chicos cuando les mostraba "la computadorita". Esas preguntas deberían surgir en el aula, o al menos en un aula que yo me imagino.


Conectar Igualdad y los modelos 1-a-1

Las nets me parecen un medio increíble, pero por razones que otros las critican: son muy restringidas en recursos (respecto a lo que es high-end ahora). Yo pienso que eso es su mayor fortaleza al igual que las Raspberry Pi.
Cuando la compu anda lenta, tarda años en abrir un Word, etc. es una oportunidad para aprender cosas. Que tus alumnos le instalen un Linux liviano como Huayra, enseñales que hay un recurso que se llama memoria RAM y que es escaso, enseñales cómo hacer exactamente lo mismo, pero con programas más específicos y con menos consumo de recursos, planteá la problemática de la obsolecencia programada, del elephantware y cómo combatir eso.
No importa lo lentas que sean las nets, sobran para hacer cualquier carrera universitaria y son mucho más de todo lo que yo tuve hasta hace 10 años. ¿Aprendí menos con un Pentium 1? No, definitivamente, en todo caso creo que aprendí más.
Este ejercicio de sacarle el jugo al hardware que tenés, te involucra con el aparato, te hace cuestionar cosas y eventualmente te lo apropiás junto a muchas habilidades y conocimientos.

¿Todos los alumnos deberían programar?

Siempre me pregunto si no sería mejor volver a los 80s: computadoras sencillas, que exponían mucho más su estructura, aprender BASIC y Logo. Parecería que todo tiempo pasado fue mejor. En realidad sí, creo que fue mejor y habría que tomar los elementos fundamentales y traerlos de nuevo.
De nuevo veo que la Raspberry Pi es excelente en este aspecto y no es casualidad, fue creada por computólogos que tuvieron sus microcomputadoras y aprendieron gran parte de las bases ahí, a muy temprana edad, y vieron que todo ese potencial no estaba apareciendo en el siglo 21.
Lo que pasó es que eso se perdió en los 90s, la ofimática como informática destruyó mucho y lamentablemente fue una tendencia mundial.
Hay esfuerzos a nivel global para exponer a los chicos a alguna forma de programación desde edades muy tempranas. Las nets y toda la capacitación que se daba en programación intenta ponerse en esa línea, y de lo que yo puedo ver funciona muy bien.
 
Otra crítica de las nets, y que está relacionado con la pregunta, es que se usan poco, solo para jugar o navegar.
Yo las veo como dispositivos para incluir (es hermoso ver una nena sentada en las escaleras de una capilla en un pueblito de montaña en Catamarca usando su net conectada a un NAC), para enseñar (los contenidos de programación específicos u otros transversales) y también para despertar vocaciones.
Linus Torvalds rescataba un extraño costado de las Raspberry Pi: su universalidad. Si todos tienen una (por su bajo costo), el 99% la terminará dejando tirada en un cajón, pero ese 1% restante serán los que transformen la práctica y la ciencia de la computación en 20 años.
Las nets tienen esto, su universalidad. Creo que en 10 años veremos ese 1% llegar a las universidades para estudiar informática, a formarse de manera profunda y luego volcar esa formación en la industria y en la academia.
 
Hay otro aspecto también. Hace poco leía que Mitchel Resnick (una de las personas detrás de Scratch) decía "aprender a programar y programar para aprender". La programación de computadoras es un vehículo perfecto para aprender cosas que a los alumnos les cuestan por su nivel de abstracción como geometría, álgebra o estadística. En la computadora estas abstracciones se concretan y eso resulta muy poderoso para el proceso de enseñanza-aprendizaje. También es un excelente complemento para algunos aspectos de las artes visuales y de la música.
 

Personalmente, creo que sí, todos los alumnos deberían estar expuestos a la programación, como están expuestos a la física, la matemática y la biología. No todos serán biólogos, o matemáticos, o físicos, pero estas son ciencias que permiten explicar una parte de nuestro mundo, y hoy nuestro mundo está inundado de mecanismos de computación.
Alejar a las chicas y chicos de esto, los deja, como mínimo, indefensos ante un mundo dominado por los algoritmos y las máquinas que los ejecutan.
Related Posts Plugin for WordPress, Blogger...

html share this