Estoy enfrentando la opción de comenzar a construir componentes Haskell para una determinada aplicación de producción que se hace todo en Ruby.
Me inclino por Haskell por varias razones, principalmente la velocidad (Haskell compilado es como 4-8 veces más rápido), una mayor transparencia (a través del sistema de tipo Haskell) y una refactorabilidad más segura (sistema de tipo). Ya escribí algunos programas de código abierto y producción en Haskell y disfruto mucho escribirlo.
La viabilidad no es un problema. He jugado con el marco web Haskell Snap y las bibliotecas de bases de datos como PostgreSQL. Simple y estoy satisfecho de que es posible reescribir una aplicación Rails y varios programas de back-end con Haskell.
El verdadero problema es contratar programadores cuando necesitamos escalar el equipo de desarrollo, o eventualmente entregar las responsabilidades de programación por completo. Es mucho más fácil encontrar programadores en Ruby que en Haskell. Por otro lado, la comunidad de Haskell parece estar creciendo, y no es demasiado difícil capacitar a los programadores para modificar partes de un programa de Haskell si lo enfocas como un DSL (al igual que Ruby on Rails). El sistema de tipo Haskell también parece prometer una colaboración mucho más segura que la dinámica Ruby.
En su ensayo "Batir los promedios" ( http://www.paulgraham.com/avg.html ), Paul Graham argumenta que usar un lenguaje superior puede ser una ventaja decisiva. Pero, ¿cuándo tiene sentido renunciar al uso de un lenguaje superior para facilitar la incorporación de programadores a su equipo?
Respuestas:
Si la velocidad, la transparencia y los beneficios de refactorización de Haskell son más importantes para el éxito de su aplicación, entonces los riesgos de tener que capacitar a los desarrolladores, entonces debe seguir con Haskell.
Un programador razonablemente inteligente con tutoría debería poder contribuir a su desarrollo sin demasiado dolor.
Solo asegúrese de que pueda pagar (en tiempo y costo) para hacer esa tutoría.
fuente
¿Cuántos días ahorrarías usando Haskell en lugar de Ruby? ¿Sería más o menos la cantidad de días necesarios para encontrar programadores de Haskell o capacitar a programadores que no son de Haskell? ¿Ya estás preparado para enseñar a los programadores que no son de Haskell cómo usar Haskell? ¿Está dispuesto a contratar programadores sabiendo que no podrán demostrar su capacidad para usar Haskell hasta mucho después de su contratación inicial?
Estas son preguntas difíciles de responder. Creo que el factor decisivo aquí debería ser si tiene la intención de continuar utilizando Haskell en el futuro o si esto será solo para un proyecto. Si planea continuar usando Haskell en el futuro, si bien el programa tomará más tiempo, también podría considerarse como una inversión. Sin embargo, en mi humilde opinión, el lenguaje no es tan importante como la arquitectura. Si utiliza el marco correcto y la estructura de programa correcta, podría superar fácilmente el mismo programa en otro lenguaje "superior" con el marco incorrecto o la estructura de programa incorrecta.
En otras palabras, si se invierte tiempo en hacer un programa correctamente, creo que este tiempo se gastaría mejor analizando un enfoque antes de escribir la primera línea de código, que se ha demostrado que reduce significativamente los tiempos de programación si se hace correctamente.
fuente