2 puntos por GN⁺ 2023-08-26 | 1 comentarios | Compartir por WhatsApp
  • El autor comparte su proceso de alejarse de Haskell, un lenguaje de programación funcional que usó durante 10 años como ingeniero de software.
  • Al autor le atrajeron la capacidad de Haskell para entender el código de forma simbólica y algebraica, así como su sólido sistema de tipos.
  • El sistema de tipos de Haskell permite una verificación estricta de tipos sin ser excesivamente restrictiva ni ruidosa, lo que facilita escribir y mantener código.
  • El autor valoró mucho la capacidad de Haskell para expresar invariantes mediante tipos, lo que hace que el compilador verifique la lógica una segunda vez y mejora la seguridad y la precisión del código.
  • A pesar de estas ventajas, el autor se alejó de Haskell por tres razones principales: el deseo de novedad estilística, herramientas incómodas y el cambio constante.
  • La novedad estilística se refiere a la tendencia de la comunidad de Haskell a experimentar con nuevas abstracciones, lo cual es innovador pero puede dificultar el mantenimiento del código.
  • El autor calificó las herramientas de Haskell como "aceptables", pero señaló que no existe nada tan fácil de usar y estable como cargo de Rust.
  • El cambio constante en Haskell, especialmente las modificaciones periódicas sin compatibilidad hacia atrás, incrementó la fricción al usar el lenguaje.
  • Aunque se alejó de Haskell, el autor sigue reconociendo sus fortalezas: la capacidad de refactorizar código de forma algebraica, su sistema de tipos y su ecosistema de bibliotecas declarativas.
  • El autor concluye que usar o no Haskell depende de los objetivos de cada persona, y recomienda aprenderlo para convertirse en mejor programador, aunque aconseja cautela al usarlo como lenguaje principal debido a los desafíos que describe.

1 comentarios

 
GN⁺ 2023-08-26
Opiniones de Hacker News
  • La comunidad de Haskell es conocida por poner un fuerte énfasis en el aprendizaje y por fomentar un entorno de curiosidad y de intercambio de conocimientos.
  • Sin embargo, a la comunidad a menudo le cuesta probar ideas y luego descartarlas, lo que hace que las bases de código profesionales en Haskell se vuelvan confusas.
  • Las herramientas de Haskell reciben críticas, pero también hay quienes sostienen que la mayoría de los lenguajes de programación tienen herramientas inferiores.
  • Las herramientas de Haskell cuentan con una función única llamada Hoogle, que es muy valorada por su utilidad.
  • El desarrollo de Haskell y de su única implementación pública razonable, GHC, es criticado por los cambios constantes y la falta de consistencia.
  • La vinculación entre GHC y versiones específicas de la biblioteca estándar base se percibe como un problema porque obliga a hacer cambios en las dependencias cada vez que se lanza una nueva versión de GHC.
  • La pérdida de interés del autor en Haskell se atribuye a tres factores principales: novedad estilística, herramientas incómodas y cambios continuos.
  • La documentación y las herramientas de Haskell eran difíciles de usar, y el cambio de la comunidad de Cabal a Stack, y luego de vuelta a Cabal, se considera una señal de mejora.
  • Otros lenguajes de programación han incorporado elementos de la programación funcional, lo que los hace más atractivos para algunos desarrolladores.
  • Algunos desarrolladores se pasaron de Haskell a F# porque escribir código les resultaba más sencillo.
  • Se considera que Haskell es difícil de aprender y que sus bibliotecas suelen estar desactualizadas o a medio hacer.
  • El rendimiento de Haskell es criticado, y la evaluación perezosa provoca problemas de memoria y un desempeño lento.
  • Se considera que las perspectivas laborales para los desarrolladores de Haskell son limitadas debido a la especialización del lenguaje.
  • La depuración en Haskell se describe como desafiante debido a la complejidad del lenguaje.
  • Scala es considerada una buena alternativa a Haskell, ya que ofrece lo mejor de ambos mundos.
  • Algunos cuestionan la necesidad de funciones avanzadas del lenguaje en las tareas cotidianas de ingeniería de software.
  • Se considera que el enfoque de Haskell en la investigación y la búsqueda académica puede entrar en conflicto con las necesidades de la programación práctica.
  • La publicación sugiere que Haskell necesita una forma de separar las funciones experimentales de las funciones estables.
  • El autor señala que no se siente presionado a usar nuevas funciones avanzadas de tipos en Haskell y sugiere desarrollar intuición sobre cuánto usar tipos complejos.