Necesidad de aprender la extensión de lenguaje haskell para producción

10

El lenguaje central de Haskell es realmente simple. Viniendo de un entorno OO, la principal dificultad es adaptarse al paradigma funcional puro.

Mientras aprendía Haskell "básico", siempre he considerado las extensiones de lenguaje como juguetes para personas con CS o como experimentos para futuras versiones del lenguaje (como from future import ???en Python).

Sin embargo, cuando comencé a mirar marcos web como Yesod, descubrí que muchos archivos fuente requieren entre 3 y 4 extensiones. Algunos parecen bastante simples (StringOverload). Otros son realmente intimidantes (GADT, Type Famillies, Template Haskell). Su documentación enlaza con trabajos de investigación, lo que da miedo a alguien que espera aprender "solo" una nueva biblioteca.

¿Es necesario aprender extensiones de lenguaje GHC para ser productivo en Haskell? Si contrataras a un desarrollador de Haskell para una aplicación de producción, ¿pedirías ese conocimiento?

Simon Bergot
fuente

Respuestas:

7

¿Es necesario aprender extensiones de lenguaje GHC para ser productivo en Haskell?

Si. Y eso es cierto para cualquier idioma / herramienta. Con el conocimiento básico / básico puede resolver los problemas del concurso en línea, puede ser un pequeño proyecto universitario, pero definitivamente no es una aplicación del mundo real.

Si tuviera que contratar a un desarrollador de Haskell para una aplicación de producción, ¿pediría ese conocimiento?

Eso ahora depende de si tienes alguna persona contigo que pueda compartir este conocimiento. En caso afirmativo, esa persona puede aumentar el nuevo empleado. Si no es así, primero debe obtener dicha persona con conocimiento. Y nuevamente esto es cierto para las nuevas tecnologías.

Por supuesto, también podrías tratar de contratar personas que tengan un conocimiento tan profundo en Haskell. Pero Haskell es relativamente nuevo en la industria y considerando que se han realizado muy pocos proyectos comerciales a su alrededor, encontrar a esa persona será difícil. La manera efectiva de formar un equipo de profesionales en Haskell será contratar personas que conozcan lo básico y que estén dispuestas a trabajar en Haskell, y luego educarlos.

Manoj R
fuente
Iba a protestar, pero luego vi que el mundo real Haskell enseña muchas extensiones de idiomas. Gracias por su respuesta.
Simon Bergot
2
"Y eso es cierto para cualquier lenguaje / herramienta", eso es completamente falso. Digamos, tome lenguajes como Java, C #, C ++; ninguno de ellos tiene extensiones de lenguaje que se encuentran comúnmente en el código de las aplicaciones del mundo real. Si tiene que usar extensiones de idioma cada vez que necesita escribir algo menos trivial que "las soluciones de problemas de concursos en línea", en mi opinión, hay algo muy malo con las especificaciones del idioma.
Malcolm
@Malcolm ¿Por qué encuentra "Si tiene que usar extensiones de idioma cada vez que necesita escribir algo menos trivial que" las soluciones de problemas de concursos en línea ", en mi opinión, hay algo muy malo con las especificaciones de idioma". ¿a decir verdad? ¿Cuál es la característica de una extensión que la hace negativa? Yo uso ghc y las extensiones proporcionadas. Agregar una extensión a un proyecto existente parece tan oneroso como agregar otra biblioteca.
Davorak
2
@Davorak Porque en lugar de un solo idioma tenemos millones de combinaciones de extensiones diferentes, y no sabes nada sobre si el código se compilará en un compilador determinado. Las extensiones hacen que el código no sea portátil. Y esto también hace que el lenguaje sea difícil de aprender porque en lugar de un solo conjunto de características que todos usan, hay una enorme cantidad de características adicionales, y no tienes ni idea de cuáles tienes que saber y usar y cuáles existen solo porque los investigadores se divierten
Malcolm
2
@Davorak Ese es exactamente el problema del que estoy hablando: todos usan GHC, porque este es el único compilador que aún se mantiene activamente. Otros compiladores no pueden seguir el ritmo, por lo que nadie puede usarlos, y hay pocas razones para invertir en ellos. En cuanto a las bibliotecas: elige bibliotecas para el problema y trabaja solo con ellas. Digamos que si necesita leer XML, solo necesita una biblioteca de lectura de XML. Con las extensiones, sin embargo, no es obvio cuando necesitas cuál. Aunque también hay un problema con las bibliotecas. Digamos, en Java solo hay matrices y colecciones, y en Haskell hay una gran cantidad de bibliotecas de matrices.
Malcolm