Siguen creciendo las aplicaciones "del mundo real" desarrolladas en Haskell. Es el turno de los CMS, y se llama Hope. Alguno de la comunidad interesado en implantar este CMS en nuestro servidor?
Creo que el 'unico problema con algunas aplicaciones 'del mundo real' en haskell es el desempeño, para hacer un deploy de una aplicaci'on hay que tener en cuenta la escalabilidad y el rendimiento, solo es una opini'on, no digo que sea as'i en la realidad (a'un no hice el 'stress test' de el paquete Network de Ghc), lo digo porque le'i sobre algunos casos de aplicaciones hechas en Ruby que ahora sufren por falta de recursos.
Alvaro, hay una tienda virtual escrita en Haskell y al parecer hasta el dia de hoy no he escuchado problemas sobre ella. Los lenguajes de alto nivel suelen tener problemas de recursos. Hay cosas sobre las que pierdes el control, por ejemplo en Haskell el orden de evaluacion y el manejo de memoria. Hay herramientas y tecnicas para analizar estos problemas y mejorar el codigo. Decir que algo es más lento o mas ineficiente sin entender lo que pasa por debajo y sin entender los verdaderos problemas echando la culpa solamente al lenguaje no es responsable. Es otra forma de programar, que esta madurando recién y que puede ocasionar problemas como cualquier otra forma de programar. No hay que tener miedo hay que estudiar los problemas y resolverlos, con un claro convencimiento de que por allí pueden estar las formas futuras interesantes de programación.
Recordemos que hace muchos años se decia lo mismo de los lenguajes estructurados, sin embargo hoy en dia ya no se programa en lenguaje de máquina.
En ocasión de los concursos de programación en la UMSS, hemos tenido la oportunidad de estudiar algo de la eficiencia de los programas en Java y en Haskell. De hecho los algoritmos para esos tipos de problemas están optimizados para lenguajes imperativos con manejo de memoria manual. Sin embargo hay poco hecho para lenguajes con máquina virtual y manejo de memoria automático. Con pequeños cambios que uno va haciendo a los programas, la ejecución se vuelve más rápida. Por supuesto uno no espera llegar a tener un cien por ciento de velocidad, pero con algo razonablemente cercano uno está feliz. Es el precio que hay que pagar por programar a otro nivel (en Haskell muchos algoritmos son unas cuantas líneas). Supongo que en mi tiempo libre en algún momento de fin de año voy a tener tiempo de experimentar algunas cosas más respecto a este tipo de problemas y espero tener algún resultado para comentar en este blog. De hecho hay que mejorar los algoritmos para escribir programas eficientes en lenguajes de alto nivel. En este contexto, "algoritmo" significa la estrategia de computo elegida para realizar un cálculo tomando en cuenta las estrategias preprogramadas en las máquinas subyacentes (que ahora ya no son las reales sino son virtuales), usando el paradigma de programación de la implementación. Es difícil, pero no imposible. Vale la pena, pienso que si. Estamos empezando una era de cambio en la forma de programación. No sabemos como se entrelazan los cálculos en una computadora con dos procesadores, y tal vez no tenemos por qué saberlo si estamos programando en alto nivel, para los que nos gusta el bajo nivel y entender los lenguajes de programación, estudiar esto es una responsabilidad ... :-)
Cristian: Hope es esperanza :-) - el título tiene doble sentido
Pablo Azero on Tuesday, 10 July 2007, 08:36 BOT # |
Sab'ia que mi comentario iba a causar controversia, pero lo bueno es que aprendemos un poco mas cada d'ia ;)
Alvaro Sejas on Tuesday, 10 July 2007, 10:21 BOT # |
De eso se trata, provocar controversias para profundizar un poco el tema en discusión. Sería un poco aburrido que todos estuvieran de acuerdo.
Pablo Azero on Tuesday, 10 July 2007, 10:40 BOT # |
Me imagino que a la fecha ya existen herramientas de profiling para Haskell, creo que eso puede ayudar bastante. Por lo menos en el mundo Java, si que han demostrado su utilidad.
Comentarios
Creo que el 'unico problema con algunas aplicaciones 'del mundo real' en haskell es el desempeño, para hacer un deploy de una aplicaci'on hay que tener en cuenta la escalabilidad y el rendimiento, solo es una opini'on, no digo que sea as'i en la realidad (a'un no hice el 'stress test' de el paquete Network de Ghc), lo digo porque le'i sobre algunos casos de aplicaciones hechas en Ruby que ahora sufren por falta de recursos.
Por ejemplo:
http://www.codinghorror.com/blog/archives/000838.html
Alvaro, hay una tienda virtual escrita en Haskell y al parecer hasta el dia de hoy no he escuchado problemas sobre ella. Los lenguajes de alto nivel suelen tener problemas de recursos. Hay cosas sobre las que pierdes el control, por ejemplo en Haskell el orden de evaluacion y el manejo de memoria. Hay herramientas y tecnicas para analizar estos problemas y mejorar el codigo. Decir que algo es más lento o mas ineficiente sin entender lo que pasa por debajo y sin entender los verdaderos problemas echando la culpa solamente al lenguaje no es responsable. Es otra forma de programar, que esta madurando recién y que puede ocasionar problemas como cualquier otra forma de programar. No hay que tener miedo hay que estudiar los problemas y resolverlos, con un claro convencimiento de que por allí pueden estar las formas futuras interesantes de programación.
Recordemos que hace muchos años se decia lo mismo de los lenguajes estructurados, sin embargo hoy en dia ya no se programa en lenguaje de máquina.
En ocasión de los concursos de programación en la UMSS, hemos tenido la oportunidad de estudiar algo de la eficiencia de los programas en Java y en Haskell. De hecho los algoritmos para esos tipos de problemas están optimizados para lenguajes imperativos con manejo de memoria manual. Sin embargo hay poco hecho para lenguajes con máquina virtual y manejo de memoria automático. Con pequeños cambios que uno va haciendo a los programas, la ejecución se vuelve más rápida. Por supuesto uno no espera llegar a tener un cien por ciento de velocidad, pero con algo razonablemente cercano uno está feliz. Es el precio que hay que pagar por programar a otro nivel (en Haskell muchos algoritmos son unas cuantas líneas). Supongo que en mi tiempo libre en algún momento de fin de año voy a tener tiempo de experimentar algunas cosas más respecto a este tipo de problemas y espero tener algún resultado para comentar en este blog. De hecho hay que mejorar los algoritmos para escribir programas eficientes en lenguajes de alto nivel. En este contexto, "algoritmo" significa la estrategia de computo elegida para realizar un cálculo tomando en cuenta las estrategias preprogramadas en las máquinas subyacentes (que ahora ya no son las reales sino son virtuales), usando el paradigma de programación de la implementación. Es difícil, pero no imposible. Vale la pena, pienso que si. Estamos empezando una era de cambio en la forma de programación. No sabemos como se entrelazan los cálculos en una computadora con dos procesadores, y tal vez no tenemos por qué saberlo si estamos programando en alto nivel, para los que nos gusta el bajo nivel y entender los lenguajes de programación, estudiar esto es una responsabilidad ... :-)
Cristian: Hope es esperanza :-) - el título tiene doble sentido