Esta respuesta es más una historia que una respuesta integral, pero utilicé una mezcla de Haskell, Python y C++ para mi disertación en lingüística computacional, así como varias herramientas C y Java que no escribí. Me pareció más simple ejecutar todo como un proceso separado, utilizando Python como código de pegamento para iniciar los programas Haskell, C++ y Java.
El C++ era un bucle bastante simple y apretado que contaba las apariciones de características. Básicamente todo lo que hizo fue matemática y E/S simple. De hecho, controlé las opciones haciendo que el código de pegamento de Python escribiera un encabezado lleno de #define
sy volviendo a compilar. Tipo de hacky, pero funcionó.
El Haskell fue todo el procesamiento intermedio: tomando la salida compleja de los diversos analizadores C y Java que utilicé, filtrando datos extraños y transformándolo en el formato simple que el código C++ esperaba. Luego tomé la salida C++ y la transformé en marcado LaTeX (entre otros formatos).
Esta es un área que esperaría que Python fuera fuerte, pero descubrí que Haskell facilita la manipulación de estructuras complejas; Es probable que Python sea mejor para transformaciones simples de línea a línea, pero estaba cortando y cortando árboles de análisis y descubrí que olvidé los tipos de entrada y salida cuando escribí el código en Python.
Dado que usaba Haskell mucho más como un lenguaje de scripting más estructurado, terminé escribiendo algunas utilidades de E/S de archivos, pero más allá de eso, bastaba con las bibliotecas integradas para la manipulación de árboles y listas.
En resumen, si tiene un problema como el mío, sugeriría C++ para la parte de velocidad crítica crítica, Haskell para las transformaciones de alto nivel y Python para ejecutarlo todo.
Sería útil describir qué tipo de aplicación planea construir. –
Tengo varios proyectos. Cada uno realmente diferente. Lo que es importante es en lo que Haskell es bueno, mejor que C++ en, y luego intenta codificar a Haskell en tal parte para aprender Haskell y juzgar por mí mismo. –