Cuando yo era pequeño aprendí a programar. No aprendí a programar demasiado, y aunque ahora programo un poco por hobby, para una herramienta crítica buscaría un profesional. Pero me gusta saber programar. Tener una idea básica, muy simple, de cómo se hace para que el ordenador haga cosas. Me resulta interesante y, en muchos casos, útil. Sin embargo, parándome a pensar, es mucho más difícil para un niño aprender a programar hoy que cuando yo lo hice.
Me explico: mi primer contacto con la programación fue con un Spectrum ZX en los gloriosos ochenta. Mi primer programa sería algo muy parecido a esto:
10 INK 6
20 PAPER 2
30 BORDER 3
40 CIRCLE 20, 20, 20
Por supuesto no es que hiciera gran cosa, sino que dibujaba un círculo en la pantalla y cambiaba un par de colores. Pero eso para un niño que se iniciaba en la programación, era todo un mundo. Y eran apenas cuatro líneas de código.
Mucho más adelante me aventuré con un amigo en HyperCard, una curiosísima aplicación para Macintosh que permitía construir colecciones complejas de hipermedia (hipertexto con imágenes, sonidos e incluso vídeo). El lenguaje incorporado en HyperCard, llamado HyperTalk —se rompían la cabeza para los nombres, en Apple— sin ser demasiado sofisticado permitía a un par de niños imaginativos construir aplicaciones muy sencillas pero muy divertidas. Incluso llegamos a hacer un par de juegos, aventuras gráficas, que era lo que nos gustaba. Por supuesto eran espantosas, pero eran mucho más de lo que un niño de once años puede hacer fácilmente hoy en día.
Hace poco un amigo me dijo que le gustaría aprender a programar. Sinceramente, si pudiera le diría que volviera atrás en el tiempo y jugase con un Spectrum ZX o una máquina virtual de Logo, que la mejor forma de aprender los principios básicos de la programación son esos dos lenguajes. Sin embargo, como mi amigo no sabe viajar en el tiempo, me puse a pensar otra respuesta.
Quedaban descartados lenguajes como C o Java por su complejidad. PHP era un buen candidato, pero tiene una sintaxis complicada y es demasiado laxo en temas de tipos y declaración de variables. Muy cómodo de usar, pero malo para aprender. Así que la cosa quedó entre Ruby y Python.
Seguramente Ruby sería hoy en día el lenguaje de programación más adecuado para un niño. Los conceptos en realidad tienen más sentido que en la programación funcional: tenemos objetos, que son como las cosas que hay en el mundo real, y esos objetos responden a mensajes, que son como las cosas que hacemos con las cosas en el mundo real. Sin embargo, la personalidad tan profundamente idiosincrática de Ruby, que no se parece a nada más en el mundo —excepto a SmallTalk, que es más raro todavía— sería seguramente contraproducente a la larga. Cuando aprendes a programar en Ruby no aprendes a programar en general, sólo aprendes a programar en Ruby.
Así que el ganador —por eliminación— fue Python. El invento de Guido van Rossum es lo suficientemente flexible para no requerir introducir conceptos complicados hasta que no son necesarios. El hecho de que trate el espacio en blanco como nosotros esperamos que lo trate y no como el resto de lenguajes —que lo ignoran— hace que sea muy adecuado para aprender, y su increíble alcance permite que comprendamos, cuando sea necesario, conceptos tan enrevesados como las lambdas.
¿Qué pensáis vosotros? ¿Cuál os parece que es el lenguaje de programación más adecuado para aprender a programar de cero hoy en día?