domingo, abril 06, 2008

Charla de Haskell

Ayer, Sábado tuve la oportunidad de participar de una charla que dio Nicolas Passerini sobre Haskell en la UTN, junto a otros docentes de diferentes materias como Paradigmas de Programación, Técnicas Avanzadas de Programación y APIT.
La verdad que estuvo muy buena y fue muy al grano, hace tiempo que tenías ganas de cursar algunas clases de la materia PDP pero nunca pude coordinar con Nico para ir a los días de Funcional. Un par de cosas que me quedaron:
  • La verdad que hacía mucho que la cabeza no me funcionaba de esa manera, me hizo acordar a mis días en la facu con la pizarra totalmente llena y tratando de entender e interiorizar los conceptos, por momentos parecía AM2. La diferencia que aca no anotaba con lo cual no perdía el tiempo y podía seguir mucho mejor la clase.
  • El lenguaje en general me pareció bastante similar al Prolog, sobre todo en la separación de los predicados y las consultas, como también el manejo de listas y la recursividad.
  • Me gustó mucho la idea de no hay que abusar de la recursividad en el paradigma, no es que la recursividad es mala, pero en este tipo de ambiente, hay otras técnicas que permiten resolver los mismos problemas que la recursividad.
  • Me sorprendió gratamente el lenguaje como maneja la definición de listas por comprensión. Aca hay un par de ejemplos, seguramente me meta un poco más adelante.
  • Sin duda lo más interesante del lenguaje (o paradigma, no estoy muy seguro) es el manejo de Lazy Evaluation (evaluación perezosa), Composición de Funciones (esto es zarpado) y las Funciones de Orden Superior (esto no me provocó mucha sopresa, ya que de alguna manera lo vengo usando). Lo que si realmente me sorprendió fue el uso y potencia que pueden tener los dos primeros puntos.
  • Realmente también me quedé fascinado con la relación que tiene el lenguaje con las matemáticas, Nico comentó que fue diseñado por matemáticos, pero lo llevaron a un punto muy extremo. Ya saben que a mi los extremos no me gustan, y tampoco la matemática me agrada del todo, no me resultó complicada, pero definitivamente no me gusta.... y debe ser por eso que me considero un programador mediocre.
  • Otro temita que me quedó fue cuando preguntamos por TDD, y la respuesta ensayada fue algo como que la metáfora (esto lo agregué yo) que tienen en Haskell es poder demostrar que el programa va a funcionar gracias a la especificación / lenguaje formal que este tiene. Con lo cual el mismo código te demuestra que funciona. Sería lindo tener algo parecido en el mundo objetos, no? Igualmente IMHO algo para TDD es necesaria.
Sinceramente es un tema que voy a seguir, no se en que momento, pero me resultó muy muy interesante, no solo como Arquitecto y las posibles integraciones que podría llegar a haber entre plataformas como Java y Haskell, uno de los asistentes, Claudio Cancinos, comentó que se puede generar una DLL y llamarla, si no también como programador, muchas de las maneras de pensar y solucionar problemas (parecidas al Tell don't Ask) se pueden llevar con ciertos truquitos a Java o Ruby.
Aca les dejo algunos links que fui recolectando...
http://tadp.no-ip.org/paradigmas/uploads/Introduccion_al_lenguaje_Haskell.pdf
http://tadp.no-ip.org/paradigmas/uploads/ParadigmaFuncional2007-complemento.doc
Un libro que me recomendo la nerd de mi mujer. Introduction Functional Programming usin Haskell
Un Eclipse para Haskell

No hay comentarios.: