Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming

Journal TrixX's Journal: Getting Lazy

Como dije antes, la última optativa que me queda es "Implementación de lenguajes funcionales". El proyecto consiste en implementar un lenguaje funcional (duh) llamado "Core" basándose en el texto de Peyton Jones: http://research.microsoft.com/Users/simonpj/Papers/pj-lester-book/student.pdf.gz; después de eso hay que extender la implementación de alguna forma (lo usual es agregar algún feature al lenguaje, que es muy básico).

La cosa es que con el proyecto este, he estado programando bastante en un lenguaje funcional (estoy implementando, siguiendo el libro, en Haskell); siendo esto tal vez lo más grande que haya escrito en mi vida en Haskell. Haskell es el único lenguaje funcional que he programado más o menos seriamente (he leído/jugado con variantes de Lisp, ML, Miranda, pero nada de más de 10 líneas).

Con todo esto estoy aprendiendo mucho, por el hecho de usarlos, y a la vez de implementar uno por dentro. Mi "descubrimiento" más interesante es que la parte más distintiva de estos lenguajes (Haskell, Core) no es tanto que sean funcionales, como que sean lazy. La parte funcional (el tema de que las funciones sean bichos de primer orden, poder construir funciones de forma más o menos dinámica) ya está en un montón de lenguajes imperativos (Python, Eiffel, y si uno tiene ganas y es masoquista hasta se lo puede hacer en C), y la gente lo usa y no es nada muy raro. Pero la laziness es algo que realmente cambia la forma de pensar los programas, y lo que cambia el paradigma (tarea pendiente: aprender de todos modos un lenguaje funcional estricto moderno como OCaml).

Cuando uno empieza a decir "escribo una función primes que me devuelve la lista infinita de primos y cuando quiero 10 hago take 10 primes" es que llego al punto en que uno piensa lazy... y muchas cosas quedan más elegantes: por ejemplo, la función que me da los primos, que no necesito indicarle adentro _cuantos_ voy a querer.

Aunque la programación funcional me pareció una idea interesante, y con esto le encontré cosas más lindas y elegantes, todavía no puedo decidirme si me termina de gustar o no. A la hora de describir algoritmos es hermoso, pero cuando hay que salir al mundo (teniendo side-effects) todo se vuelve engorroso, lo que me hace dudar de la sensatez de escribir cosas importantes en un lenguaje funcional puro. También es complicado en algo lazy evaluar performance de cosas, las formas de analizar complejidad son muy distintas a lo que la intuición de programador imperativo me dice.

Pero bueno. tal vez algún día me decida si me gusta o no.

PD: OK, tal vez estoy mal. Leyendo esto, me reí con varios (en especial el "iterative haskell programmer").

This discussion has been archived. No new comments can be posted.

Getting Lazy

Comments Filter:

The hardest part of climbing the ladder of success is getting through the crowd at the bottom.

Working...