Hace poco comencé de nuevo a intentar aprender Haskell. Los lenguajes funcionales me interesan, más de forma teórica que práctica, soy psicólogo y lo de la programación para mí se ha convertido sólo en un «jobi» –aunque hace algún tiempo trabajara como analista-programador–. Mi primer contacto con los lenguajes funcionales fue hace algún tiempo, cuando me dedicaba a hacer algún que otro script en Python para Blender3D y me iniciaba en el uso de Wings3d. Echaba de menos alguna cosilla y quería hacer un plugin para automatizar la entrada-salida con POV-Ray. Tropecé con Erlang. Y he de confesar que no conseguí hacer el plugin. Mi mente de programador estaba hecha a imagen y semajanza de la Programación Orientada a Objetos
Poco después me llegaron noticias de un lenguaje funcional en el que todo –o casi todo– es una función. Ese tipo de simplificaciones me gustan –por eso también aprendí Smalltalk en el que todo es un objeto–, investigué sobre Haskell y después de varios intentos desistí. Como me pasó con Erlang, el paradigma funcional supera un poco mis dotes de programación.
He de decir que a esos primeros intentos le siguieron otros hace un par de años. Hace unas semanas un amigo me contó que estaba intentando –por n vez– aprender ese lenguaje. Le deseé suerte, después de varios fracasos no me planteaba darle más oportunidades. Me hacía sentirme un poco tonto y esa sensación no me gusta (ya sé que no le gusta a nadie, pero yo estoy mirándome el ombligo). Me pasó un enlace al vídeo que pongo a continuación. ¡Uff! ¡Qué pereza! Más de dos horas y media de magia arcana o algo parecido –pensé–. Pero comencé a verlo porque en ese momento no tenía nada mejor que hacer.
Después de verlo llegué a algunas conclusiones interesantes:
- No soy más tonto que la media –bueno, eso ya lo sabía, siendo psicólogo he hecho decenas de pruebas de inteligencia y sé que, sin ser un genio, tonto-tonto tampoco soy–.
- Necesito cambiar de forma de pensar sobre un programa: estoy acostumbrado a pensar en procesos mientras que un lenguaje funcional lo que hace es describir el fenómeno. Y además lo hace de una forma bastante matemática.
- Necesito demostrarme que soy capaz de comprender la programación funcional. Es una cuestión de principios, o si quieres, es una cuestión personal.
Así, pues, en ello me hallo. Y como dice en el vídeo tengo altibajos. Unas veces me parece haber comprendido todo y otras me da un bajón y necesito oxigenarme escribiendo estas necedades en el blog.
Un amigo me pasó un enlace a este libro en red para aprender lo básico. Con él mi relación de amor-odio con Haskell sigue poco a poco adelante. Hay momentos de subidón cuando aprecio la elegancia de la sencilled expresiva del lenguaje –sobre todo cuando parece que lo entiendo y todo– o la potencia de sus librerías Data –impresionantes, especialmente List–. Pero también hay momentos de bajón, en los que pienso que no llegaré a ser capaz de producir nunca ni aunque sea un poco de código usable.
