Cosas que no se arreglan con frambuesas…

Supongo que la mayoría habéis oído hablar del lanzamiento del Raspberry Pi y su enorme éxito (‘pi’, en inglés, suena exactamente igual que ‘pie’, y por tanto a un anglosajón el nombre del cacharro le suena a ‘tarta de frambuesa’, y de aquí el terrible título de esta entrada). Vaya por delante que opino que el Pi es una idea fantástica y tengo pendiente comprarme uno.

Pero (porque si no hubiese pero no habría entrada en el blog, claro).

Como con cada cacharrito nuevo, bien hecho y bienintencionado, todos nos alegramos, pero en seguida surge esa tendencia bipolar nuestra de opinar que o bien no va a servir de absolutamente nada o bien va a solucionar todos los males del mundo. Que la experiencia demuestre que prácticamente nunca se da ninguno de esos dos casos, y que todo son grises y casi nada blancos y negros no significa que tengamos que aprender. Si lo hiciéramos esto no tendría ninguna gracia ;-).

Leía el otro día un interesantísimo artículo sobre el tema en el Guardian (de verdad, de muy recomendable lectura, con muchos aspectos en los que coincido y algunos con los que no) y allí, a medio artículo, me encuentro con lo siguiente:

Eben Upton, a friendly, upbeat man (everyone involved with the RPi is friendly) is a designer of microchips for Broadcom and the main designer of the RPi. In the early- to mid-2000s, he was in charge of undergraduate admissions to computer science at Cambridge. He noticed a massive drop-off in the numbers and, especially, quality of undergraduates between 1996, when he graduated, and 2005.

«The students just couldn’t program, and that’s because they hadn’t been in the presence of programmable hardware,» he says. «It’s not so much an education as an environment thing. I was self-taught, so were all of my friends. But in the consumer device world we’re in today, where the majority of devices are tablets and phones and set-top boxes and games consoles… these are all machines that you can use to consume, but most of them won’t let you produce.»

…y no puedo evitar pensar dos cosas: por un lado, que creo que su retrato de la realidad es prácticamente impecable y, por otro lado, que evidencia algunos de los problemas de la enseñanza de la informática programación en la universidad. Los que el Raspberry Pi, casi seguro, no va a solucionar.

Me suena. Upton y yo debemos tener aproximadamente la misma edad. Y tuvimos de niños un ‘8 bits’ (yo un maravilloso Commodore 64, pero también podría haber sido un Spectrum ZX o, teniendo en cuenta que él es británico, un BBC Micro). Un ordenador que lo primero que te enseñaba era un entorno para programar en Basic (o lo que se entendía por un entorno en los 80). Además, los juegos que usábamos eran desarrollos modestísimos (en cuanto a recursos humanos y económicos y tiempo de desarrollo, que no en cuanto a talento), que te permitían soñar con hacer, algún día y con mucho esfuerzo, algo similar. Y eso no hacía que te pusieras automáticamente a probarlo, pero lo facilitaba. Y en los quioscos había un buen número de publicaciones que, además de enseñarte qué juegos había en el mercado, venían con programas que podías teclear (cuando llegaron las revistas con cinta, con los programas ya tecleados, fue el acabóse, pero también hay que decir que si te dan el programa ya tecleado, la probabilidad de que te lo mires a fondo es bastante más baja que si lo tecleas). Ese, curiosamente, es un aspecto en que los tiempos pre-www no me parecen inferiores a los actuales.

Cuando esa generación llegó a la universidad, había una parte (no necesariamente grande, pero seguro que tampoco era pequeña) que entraba sabiendo programar. Con vicios adquiridos, desde luego, pero que ya había dado los primeros pasos. Y tener unos cuantos estudiantes en el aula que ya saben hacer lo que les quieres enseñar es, creedme, una bendición. Además, había otro colectivo que, en algún momento de sus vidas, había sentido curiosidad por qué es programar, lo había intentado, se había estampado contra la pared (no es una metáfora excesiva: puede resultar doloroso) y lo había dejado… antes de engrosar los números de estudiantes que abandonan, frustrados, en primero de carrera.

Con la popularización de las consolas pero, sobre todo, con la llegada de ordenadores, sistemas operativos y software cada vez más sofisticados, programarse las cosas uno mismo dejó de tener ningún sentido práctico. Además, los usuarios ven software que está a años luz de lo que podrían lograr ellos con tiempo y esfuerzo. Consecuencia: el número de estudiantes que llega a primero de informática teniendo nociones de programar se ha reducido (aunque sigue habiéndolos, naturalmente) y el colectivo de los que han abandonado antes de llegar a la línea de salida se ha visto reducido también notablemente. El resultado lo comenta Upton: desplome del rendimiento académico. Nótese, además, que un desplome rápido nos impide echarle la culpa (como solemos hacer en la universidad) a la educación primaria y secundaria y también elimina la posibilidad de que sea la actuación del profesor (que difícilmente va a empeorar tan sensiblemente en unos pocos años).

Pero… ¿por qué pone esto en evidencia los problemas de la enseñanza de la informática? Pues… si el hecho de que lleguen menos estudiantes con conocimientos previos hace caer el rendimiento de las primeras asignaturas de programación… igual eso significa que antes tampoco es que estuviéramos enseñando a programar muy bien, ¿no?

Paréntesis. Cuento entre mis amigos a muchos buenos profesionales de la enseñanza de la informática. Y es probable que esto lo acabe leyendo alguno más. El párrafo anterior, además de constatar una opinión personal fuerte, tiene el ánimo de encender la discusión constructiva :-). Me encantará reconocer que me equivoco si alguien aporta suficientes argumentos sólidos en contra.

En cualquier caso, y volviendo a lo que íbamos… Me da a mí la impresión de que el infierno se congelará mucho antes de que la enseñanza primaria o secundaria asuman la enseñanza de la programación como materia obligatoria (sí: a pesar de que algún país está en ello). Me lo parece, sobre todo, por un motivo perverso: meter la programación en un currículo, en cualquier currículo, iba a ser una buena idea socialmente, pero iba a tener efectos nefastos sobre los números del rendimiento académico en escuelas e institutos. Y mucho me temo que nuestras «cabezas pensantes» se preocupan mucho más de algo fácilmente cuantificable y que tiene visos de ir mal que del beneficio social, que va a resultar mucho más difícil de medir y, de regalo, va a ser demasiado lento como para sacarle beneficio electoral.

Pero sí estoy de acuerdo en que exponer a los potenciales informáticos de mañana al «arte de programar» cuanto antes es una maravillosa idea. ¿Por qué no creo en el Raspberry Pi como solución a ese problema? Por dos motivos principales:

  • Este problema, al menos en el primer mundo, no es de fractura digital: desde luego que hay niños y adolescentes en el Reino Unido (y en España, asumiendo que aún seamos primer mundo) sin acceso a un ordenador, y ese es un problema importante, pero dudo muchísimo que el acceso universal vaya a mejorar sensiblemente los números de la universidad.
  • Sí, el Raspberry Pi es un ordenador que da acceso rápido a un entorno de programación… pero eso no es todo lo que hace falta. Y, la verdad, ni siquiera es la característica más destacada ni el motivo que va a animar a casi nadie a comprarse uno.

El Pi es el ordenador ideal para el «hobbysta» del primer mundo, que ya sabe que quiere hacer cosas (y probablemente hasta qué cosas), y una solución como mínimo interesante para intentar atacar el problema de la fractura digital en los países menos favorecidos. Sólo por ello ya es una idea fantástica. Y si encima pensamos en las vías nuevas que abre un ordenador de tamaño, consumo y precio tan reducidos… Pero insisto: uno de los problemas que no va a solucionar es el de conseguir más y mejores programadores en ningún país europeo.

Y es que tener tener el entorno disponible es tan solo una parte del problema. Y hay otros factores me parecen tanto o más importantes. Si tantos nos animamos a dar nuestros primeros pasos con el 64 o el ZX, además de por tener un cacharro a mano, era porque disponíamos de un lenguaje sencillo, de muchos ejemplos de código de calidad razonable que permitían hacer cosas divertidas y vistosas con relativa facilidad y de muy rudimentarias y poco conectadas comunidades de práctica (para muchos, alrededor de algo tan tremendamente lento y poco conectado como las revistas mensuales y en papel).

¿Podemos conseguir eso hoy? Desde luego. Hay muchas vías para comenzar a programar. Una muy popular es Processing (no, no consigo venderme la idea de los lenguajes diseñados para enseñar a programar, por mucho que lo intento), que seguramente conoce todo el que se haya interesado alguna vez por el tema. Pero yo tengo entre ceja y ceja que el entorno de desarrollo está en todos los navegadores, y que el lenguaje de programación, casi universal, se llama JavaScript (antes de hacerme una lista de los múltiples crímenes de JavaScript como lenguaje de programación, por favor considerad cómo el lenguaje de programación de la generación de los 8 bits, ese que hacía que el rendimiento en la universidad fuera más digno… era BASIC, por el amor de Turing). Y pienso en JavaScript porque, además de contar con un intérprete en cada navegador (y por tanto en cada ordenador, básicamente, más en cada tableta y en cada smart- y not-so-smart- phone), contamos con entornos de desarrollo en línea que, sin ser comparables a lo que espera el programador profesional, sí son bastante mejores que aquellos de que disponíamos en los 80 (mi favorito es jsFiddle.net y lo será aún más cuando salga de alfa y comience a funcionar mejor en navegadores no-Webkit, aunque JS Bin es una alternativa sólida) y bibliotecas (que en jsFiddle se pueden añadir trivialmente) como, sobre todo Processing.js (el primo web de Processing), y en menor medida Raphaël, three.js o Kinetic, que permiten comenzar a usar y modificar código ajeno para obtener deprisa resultados vistosos que te animan a continuar y profundizar. Y, además, te permiten guardar, mostrar y compartir tu código. E iniciativas como Codecademy demuestran, incluso, que alrededor de JavaScript se puede montar un entorno de aprendizaje atractivo…

¿Encontraremos una vía para que los niños de hoy puedan aprender a programar? ¿Será JavaScript? ¿Será por otro lado? Más vale que le demos vueltas, porque un trocito significativo de nuestro futuro depende de ello…

13 opiniones en “Cosas que no se arreglan con frambuesas…”

  1. Excelente.

    Comparto muchos puntos en común, y sobre todo, lo vital que es esta cuestión: ¿qué consecuencias tendría el fin de un supuesto boom del aprendizaje de la programación?

    Responderé y ampliaré este tema en mi blog, pero por el momento:

    1) ¿¡Programación como asignatura obligatoria en primaria!? Si es así, no estoy de acuerdo. Tengo la percepción que la enseñanza de matemáticas aún no está «arreglada» y que complicarlo todo más metiendo programación no ayudará. Creo que el conjunto de gente que puede hacer álgebra y lógica de una manera competente pero no puede aprender a programar sin mucha dificultad es muy pero que muy pequeño.

    2) Javascript, no. Es trivial hacer un entorno online de cualquier lenguaje, así que no es necesario/obligatorio recurrir a Javascript. De acuerdo, puede que Basic sea un lenguaje horrible (no estoy plenamente de acuerdo), pero ahora tenemos más opciones. Para adultos, de momento Processing es mi mejor apuesta, pero el tema da para ríos de tinta. Pero Javascript, no.

    3) Muerte a las app stores y a los $100 de Apple para distribuir aplicaciones. Creo que la tendencia que ha creado es infinitamente más grave y peligrosa que cualquier otro factor de riesgo, por tantos motivos que no sabría por donde empezar a enumerarlos.

    4) Yo, al ver el PI, ni por un momento pensé que ayudaría a nadie a empezar a programar. Y eso que es su propósito principal. Eso debe querer decir algo

  2. Yo tengo 2 Raspberry Pi, programar no he programado casi nada, salvo unos retoques a un programa en Python (del que viene el Pi del nombre y que es el entorno en el que siempre pensaron y que deispone del mejor soporte para las E/S directas que no encontrareis en ningún PC).
    Pero si que he afinado mucho mis conocimientos como admin y usuario Linux, aunque solo sea para tener un servidor Samba + seedbox de torrents y un media center con XBMC.
    No son grandes logros, y menos is ya eres usuario de Linux, pero con las expectativas de ventas de 1 millón de Raspberry Pi en un año, el ambiente en torno a Linux y Debian que se va a crear a su alrededor no va a ser nada despreciable.

  3. @Manuti:

    (i) Corregido el enlace, que debía apuntar a https://alex.corcoles.net/.

    (ii) Insisto, que el Pi me parece una gran idea, y mi idea va un poco por donde tú apuntas :-).

    @hermanito

    1. Obligatoria, no, ni en broma. Pero facilitar la exposición de cuanta más gente mejor a la programación cuanto antes, sí, por favor.

    2. Curioso por leer los argumentos. Mis conocimientos sobre el tema son más que limitados. Pero teniendo en cuenta que JS está el 11 en el TIOBE y que hay una gran diferencia entre «Es trivial hacer un entorno online de cualquier lenguaje» y «ya existe un intérprete en prácticamente cualquier cosa», el único candidato al que le doy opciones es, precisamente Python

    3. +1. Pero como defensor de la web, Apple y la aparición de Android (y por tanto de que el ‘multiplataforma’ implicara desarrollar en varios lenguajes) han hecho mucho por defender la plataforma web :-P.

    4. +1-

  4. De hecho, ya hay alguna universidad que utiliza JavaScript para comenzar a enseñar la programación (no recuerdo cuál ni donde lo leí).

    La verdad es que este post te ha salido bordado. Estoy de acuerdo en todo especialmente en la falta de motivación para empezar a programar si no tienes la sensación que (aunque sea poniéndole muchas horas) podrías llegar a crear programas (léase juegos) como los que ves/compras.

    «En mis tiempos», yo era capaz de programar videojuegos (hablo de los tiempos del MS-DOS y la VGA), que aunque a años luz de los profesionales utilizaban el mismo tipo de tecnologías y entornos de programación con lo que nadie me quitaba la ilusión de qué si aprendía (y me asociaba con alguien para los sprites) podía hacer lo mismo.

    Salvando las distancias, más que javascript, lo equivalente a los «viejos tiempos» ¿no sería la programación de aplicaciones móbiles nativas? Ahí todavía una buena idea con horas de trabajo puede ser un bombazo.

  5. Perdonadme pero discrepo :)
    Cuando empecé a trastear con un ordenador me costó el trabajo de todo un verano y experimentar con algunas cosas conllevaba arriesgarse a dejar el ordenador colgado durante horas. Lo que hubiese dado entonces por un ordenador para «trastear»!

    Para mucha gente Pi puede ser la manera de introducirse en el mundo de los ordenadores Linux y trastear (algo que las tablets o móviles no dejan hacer fácilmente) sin tener que realizar una gran inversión. Y cuando hay un volumen tan grande de gente interesada, las posibilidades de que además de ver la diversión que conlleva poner en marcha programas algunos cientos o miles les dé por ver si pueden hacer algo por sí mismos aumenta mucho.

    Por otro lado Pi al ser un Linux tiene algo que nos permite un nivel de entrada a la programación mucho más sencillo: se pueden crear aplicaciones de línea de comandos y consola realmente útiles y potentes. Es decir, nos ahorramos tener que tratar con la complejidad inicial de los entornos gráficos.

    Para a prender programación la clásica consola en la que vas trabajando es ideal y esto es algo que nos están ocultando los entornos modernos y que dificulta a la gente que intenta aprender el que lo haga a partir de la base, entorpeciendo de paso lo que sería la evolución natural del alumno.

    Pi puede ser una herramienta fantástica para que la gente se anime a trastear y programar. Si además lo hace en Python la curva de aprendizaje le permitirá ir aprendiendo paulatinamente. Si sólo pensamos en javascript y entornos gráficos es probable que la persona que se acerque a la programación se vea superada por la cantidad de conceptos que se tienen que manejar.

  6. Javascript no… porque no.

    Me parece obvio que se necesita algo como jsfiddle para que alguien que aprenda pueda tener un entorno decente de programación; añadirle soporte para un lenguaje que no sea Javascript es una parte relativamente menor de la implementación del entorno ( http://shell.appspot.com/ , etc.), así que debería escogerse el lenguaje por sus méritos didácticos y no simplemente porque todos los navegadores llevan uno*

    El tipado débil de Javascript (débil, no me refiero al dinámico), el alcance sintáctico y que sea un lenguaje tan dinámico que no puedan haber herramientas inteligentes de programación (e.g. que cojan errores sintácticos antes de la ejecución) creo que hace de Javascript un lenguaje bastante flojo para aprender a programar.

    Creo que desde luego Python (que no es santo de mi devoción) y Processing son mucho más apropiados.

    * nota, sí, tiene cierta gracia saber Javascript porque uno puede colgar rápidamente su obra en Internet y que la vea todo el mundo. Sin embargo, no creo que esto sea la panacea.

  7. Respecto al gancho…

    Sí, yo aprendí a programar en parte por hacer mis juegos. Y sí, realmente no me imagino a los chavales de hoy en día matándose a hacer un Arkanoid cuando tienen tan a mano un Grand Theft Auto (el 4 al parecer tendría un presupuesto de unos 100 millones de dólares) y la distancia entre lo que pueden hacer humanamente y lo mundano es tan descomunal.

    (un gran culpable de todo esto es el 3D. Como decía mi venerable profesor de gráficos, 3D != 2D + 1D. Los juegos en 2D son mucho más asequibles).

    Lo único que se me ocurre a botepronto es el modding. ¿Minecraft, quizás?

  8. Muy chulo, el Minecraft Pi. Y debería correr con Python sin Raspberry también :) (si un chaval ya tiene acceso a un ordenador, hacerle comprar el Pi si sólo lo va a usar para esto no deja de ser un gasto innecesario, aunque relativamente modesto).

  9. Yo también quiero una Raspberry PI!

    Cuanta razón tienes en esta reflexión.
    En mi experciencia personal estoy seguro que si de «pequeño» no hubiera tenido un zx spectrum que como comentas, de alguna manera, te animaba a programar, me hubiera costado mucho más después, o al menos no hubiera sentido el interés a ello. Y definitivamente todos los cacharros actuales, smartphones, consolas de videojuegos etc, para nada animan a esta actitud.
    Ah! y todo este tema que hablas encaja mucho con la inicitiva CodeClub http://www.codeclub.org.uk/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *