Elección del idioma para construir una aplicación basada en el mercado de contratación vs rendimiento y mantenibilidad [cerrado]

8

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?

dan
fuente
55
Estás olvidando una cosa: aunque pocos conocen a Haskell, probablemente haya más que lo sepan y quieran usarlo en el trabajo, pero no están permitidos de lo que están, creando un lugar donde está permitido, aunque puede ser difícil encontrar Haskellers en comparación con rubístas, los pocos que encuentres estarán a un nivel superior y tendrán una gran motivación para trabajar para ti (preferiría trabajar en Haskell que en .NET ...)
Jimmy Hoffa
44
Solo un pensamiento: Scala se está volviendo popular mucho más rápido que Haskell, a partir de ahora. Pero alguien que haya dominado los conceptos básicos de Scala tendrá mucho más fácil hacer un recorrido por Haskell. Por lo tanto, el mercado de contratación puede no ser tan malo como parece.
9000
55
Mi primera reacción a la pregunta fue verificar su perfil para ver si su empresa está cerca de donde vivo. Sólo digo.
PSR

Respuestas:

11

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.

Joel
fuente
5

¿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.

Neil
fuente
3
Sí, pero ¿quién quiere escribir el código COBOL, independientemente del "marco correcto" o la "estructura de programa correcta"? : P El ensayo de Paul Graham postula que el lenguaje de programación en sí mismo importa.
Andres F.
1
Es cierto, no dije que sería divertido. Sin embargo, si escribir programas tuviera que ver con el lenguaje que quería usar, habría dejado de usar Java hace bastante tiempo. :)
Neil