Se acaban de cumplir diez años del paper “Computer Programming for Everybody”, de Guido van Rossum, en el que aboga por enseñar programación de computadoras a toda la población, y propone utilizar Python para ello.
En ese artículo, van Rossum dice que, en su opinión, debería enseñarse a programar en la escuela primaria, tanto como se enseña aritmética y a leer y escribir.
¿Por qué enseñar programación a no informáticos?
Según Guido van Rossum, la enseñanza de computación pensando en el uso de la herramienta no es suficiente. Él aboga por enseñar a la gente a programar las computadoras.
Las razones de más peso que justificarían esto son:
- Va a ayudar a que la gente aprenda a pensar mejor, de una manera más lógica. Esto es razonable, debido a que la programación de computadoras es una aplicación de la resolución de problemas. Una década y media antes, el proyecto Logo iba también en esta dirección.
- Mejorará el uso de las computadoras por parte de la gente, al entender cómo funcionan. El ejemplo que él cita es bastante elocuente: cuando algo falla en mi auto, muchas veces podemos intuir en dónde puede estar el problema, precisamente porque sabemos algo del funcionamiento de los autos (el único problema con el ejemplo es su anacronismo, pues hoy en día la gente entiende más a las computadoras y menos a los autos, que cada vez tienen más software embebido).
- Permitirá que la gente programe sus aparatos para que hagan lo que ellos quieran. De nuevo, el ejemplo es algo anacrónico, aunque visionario: dice que si los celulares fueran programables se podría hacerlos probar sucesivamente diferentes números para ubicar a una persona.
Una vez que todos sepan programar, desarrollar programas será tan habitual como leer y escribir. Y si bien no todos van a construir buenos programas, lo cierto es que no todos los que escribimos somos buenos novelistas. Pero al menos tenemos las herramientas para darnos a entender por medio de la escritura.
Van Rossum dice que lo cierto es que la gente tiene algunas aplicaciones programables, como las planillas de cálculo y algunas bases de datos simples, pero restringidas a una forma matricial o tabular que no aplica a la resolución de cualquier problema.
Si bien su aspiración de máxima es que todos programen, y que, como las primeras letras y la matemática, se enseñen desde la escuela primaria, propone empezar de manera más conservadora, con estudiantes secundarios y universitarios de carreras no técnicas. En particular, a mí esta no me parece una buena idea, por las resistencias que generaría.
Él sugiere que Python, por su simplicidad, sería la herramienta ideal para lograr este objetivo.
Enseñanzas de la historia
La verdad es que la historia nos muestra que hubo, de maneras no exactamente iguales pero sí parecidas, varios intentos en la línea de lo de van Rossum.
Al fin y al cabo, el primer lenguaje de propósito general que logró gran aceptación, Fortran, fue presentado en sociedad como una forma de programar computadoras al alcance de todos. Se decía que la gente ya no tendría que programar, sino sólo “escribir fórmulas”, y ¿quién no sabe escribir fórmulas? Puede que a nosotros, 50 años más tarde, nos llame la atención el grado de candidez de estas afirmaciones, pero así se plantearon.
Al poco tiempo, dado que no todos sabían trabajar con fórmulas, se decidió crear un lenguaje de aspecto menos aritmético, que fuera una especie de inglés coloquial. Y adivinen qué nació: ¡Cobol, el lenguaje que incluso podría ser usado por abogados para programar computadoras!
No a todos les gustó Cobol. Por eso, los amantes de Fortran que quisieron acercarlo a la gente común, decidieron crear un lenguaje que fuera un subconjunto simple de Fortran, especialmente diseñado para la enseñanza. ¡Y así surgió Basic!
Mis lectores tal vez opinen que esto es muy distinto de la propuesta de van Rossum. Yo lo único diferente que veo es el tiempo que pasó entre aquellas primeras ideas y el año 1999.
En cuanto a la enseñanza en sí, también ha habido intentos.
Me acuerdo cuando en los años 1980 comenzó el proyecto Logo, mucho más es una filosofía de educación que un lenguaje. En realidad, con Logo no se pretendía enseñar a programar computadoras, sino a resolver problemas de una manera lógica. Por eso mismo no tenía mucho sentido la disyuntiva que muchos planteaban entre Logo y Basic.
Scheme también fue presentado como un lenguaje muy natural para enseñar a programar, pero quienes lo plantean lo hacen desde la perspectiva de usarlo como primer lenguaje de alguien que va a hacer una carrera informática. De hecho, requiere bastante formalismo matemático, lo que lo hace no apto para una audiencia masiva.
Mi visión
Lo que yo veo es que la preocupación por lograr que la gente pueda programar ha surgido generalmente de la propia comunidad informática. No conozco a ningún no informático que esté interesado en aprender a programar.
¿Por qué ocurrirá eso? ¿Estamos preocupados por ser incomprendidos? ¿Será una especie de frustración al ver que nuestros amigos abogados, ingenieros civiles y médicos pueden contarles a sus abuelitas en qué están trabajando, y nosotros no? No lo sé… pero sería interesante averiguarlo.
El otro tema es que en estos últimos 10 años, mal que le pese a van Rossum, poco ha cambiado: la programación sigue siendo un campo para los especialistas. Tal vez, y ojalá, Guido van Rossum tenga razón, pero por el momento no hay muchos indicios de que se vaya a producir un cambio.
Y respecto de enseñar a pensar de manera lógica, creo que el proyecto Logo estaba mejor orientado, y sin embargo fue sepultado por quienes dos grupos diferentes de personas:
- Los que decían que eso no era programar computadoras, y por lo tanto carecía de seriedad.
- Los que decían que eso era programar computadoras, y ¿para qué quería un chico aprender a programar?