¿Para qué se utiliza Haskell en el mundo real? [cerrado]
Hay mucho revuelo en torno a Haskell, sin embargo, es difícil obtener información sobre cómo se utiliza en aplicaciones del mundo real. ¿Cuáles son los proyectos/usos más populares de Haskell y por qué destaca en la resolución de estos problemas?
¿Cuáles son algunos usos comunes de este idioma?
Desarrollo rápido de aplicaciones.
Si desea saber "¿por qué Haskell?", debe considerar las ventajas de los lenguajes de programación funcionales (tomado de https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Los programas funcionales tienden a ser mucho más concisos que sus homólogos en ImperativeLanguage. A menudo, esto conduce a una mayor productividad del programador.
FP fomenta la creación rápida de prototipos. Como tal, creo que es el mejor paradigma de diseño de software para ExtremeProgrammers... pero ¿qué sé yo?
FP es modular en la dimensión de funcionalidad, mientras que ObjectOrientedProgramming es modular en la dimensión de diferentes componentes.
La posibilidad de tener tu pastel y comértelo. Imagine que tiene un sistema OO complejo que procesa mensajes: cada componente puede realizar cambios de estado según el mensaje y luego reenviarlo a algunos objetos a los que tiene enlaces. ¿No sería genial poder revertir fácilmente cada cambio si algún objeto en lo más profundo de la jerarquía de llamadas decidiera que el mensaje es defectuoso? ¿Qué tal tener una historia de diferentes estados?
Muchas tareas de limpieza hechas para usted: deconstrucción de estructuras de datos (PatternMatching), almacenamiento de enlaces de variables (LexicalScope con cierres), escritura segura (TypeInference), GarbageCollection, asignación de almacenamiento, si usar en caja (puntero a valor) o sin caja (valor directamente). ) representación...
¡Multiproceso seguro! Las estructuras de datos inmutables no están sujetas a condiciones de carrera de datos y, en consecuencia, no necesitan estar protegidas por bloqueos. Si siempre está asignando nuevos objetos, en lugar de manipular destructivamente los existentes, el bloqueo se puede ocultar en el sistema de asignación y GarbageCollection.
Aparte de esto, Haskell tiene sus propias ventajas como:
- Sintaxis clara e intuitiva inspirada en la notación matemática.
- Listas por comprensión para crear una lista basada en listas existentes.
- Expresiones lambda: crea funciones sin darles nombres explícitos. Por eso es más fácil manejar fórmulas grandes.
- Haskell es completamente transparente referencialmente . Cualquier código que utilice E/S debe marcarse como tal. De esta manera, le anima a separar el código con efectos secundarios (por ejemplo, poner texto en la pantalla) del código sin (cálculos).
- La evaluación diferida es una característica realmente interesante:
- Incluso si algo normalmente causa un error, seguirá funcionando siempre que no utilice el resultado. Por ejemplo, podrías ponerlo
1 / 0
como primer elemento de una lista y seguirá funcionando si solo usas el segundo elemento. - Es más fácil escribir programas de búsqueda como este solucionador de sudoku porque no carga todas las combinaciones a la vez, simplemente las genera a medida que avanza. Puedes hacer esto en otros idiomas, pero solo Haskell lo hace de forma predeterminada .
- Incluso si algo normalmente causa un error, seguirá funcionando siempre que no utilice el resultado. Por ejemplo, podrías ponerlo
Puedes consultar los siguientes enlaces:
- https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming
- https://learn.microsoft.com/archive/blogs/wesdyer/why-functional-programming-is-important-in-a-mixed-environment
- https://web.archive.org/web/20160626145828/http://blog.kickino.org/archives/2007/05/22/T22_34_16/
- https://useless-factor.blogspot.com/2007/05/advantage-of-functional-programming.html
Creo que a las personas en esta publicación se les escapa el punto más importante para cualquiera que nunca haya usado un lenguaje de programación funcional: expandir su mente. Si eres nuevo en la programación funcional, Haskell te hará pensar de una manera que nunca antes habías pensado. Como resultado tu programación en otras áreas y otros lenguajes mejorará. ¿Cuánto cuesta? Difícil de cuantificar.
Hay una buena respuesta sobre para qué sirve un lenguaje de propósito general como Haskell: escribir programas en general.
Para qué se utiliza en la práctica, tengo tres enfoques para establecerlo:
- Una nube de etiquetas de la biblioteca y las áreas de aplicaciones de Haskell , ponderadas por frecuencia en Hackage.
Indica que es bueno para gráficos, redes, programación de sistemas, estructuras de datos, bases de datos, desarrollo, procesamiento de textos...
- Áreas en las que se utiliza en la industria : muchos DSL, aplicaciones web, diseño de compiladores, redes, análisis, programación de sistemas, ...
Y finalmente, mi opinión sobre en qué es realmente fuerte:
- Problemas donde la corrección importa, lenguajes específicos de dominio y programación paralela y concurrente
Espero que esto le dé una idea de cuán amplia es su pregunta, si debe responderse con alguna especificidad.
Un ejemplo de Haskell en acción es xmonad , un "administrador de ventanas funcional en menos de 1200 líneas de código".