Estou enfrentando uma escolha entre começar a criar componentes Haskell para um determinado aplicativo de produção que é tudo feito em Ruby.
Estou inclinado a Haskell por várias razões, principalmente velocidade (o Haskell compilado é 4-8x mais rápido), maior transparência (via sistema de tipos Haskell) e refatorabilidade mais segura (sistema de tipos). Já escrevi alguns programas de código aberto e de produção em Haskell e gosto muito de escrevê-lo.
Viabilidade não é um problema. Eu brinquei com a estrutura da Web Haskell Snap e as bibliotecas de banco de dados como o PostgreSQL.Simple e estou satisfeito com a possibilidade de reescrever um aplicativo Rails e vários programas de back-end com o Haskell.
O verdadeiro problema é contratar programadores quando precisamos escalar a equipe de desenvolvimento ou, eventualmente, entregar completamente as responsabilidades de programação. É muito mais fácil encontrar programadores em Ruby do que em Haskell. Por outro lado, a comunidade Haskell parece estar crescendo, e não é muito difícil treinar programadores para modificar partes de um programa Haskell se você o abordar como DSL (como Ruby on Rails). O sistema do tipo Haskell também parece prometer uma colaboração muito mais segura do que o Ruby dinâmico.
Em seu ensaio "Beating the Averages" ( http://www.paulgraham.com/avg.html ), Paul Graham argumenta que o uso de uma linguagem superior pode ser uma vantagem decisiva. Mas quando faz sentido abandonar o uso de uma linguagem superior para facilitar a adição de programadores à sua equipe?
Respostas:
Se os benefícios de velocidade, transparência e refatorabilidade do Haskell são mais importantes para o sucesso do seu aplicativo, então os riscos de ter que treinar desenvolvedores, você deve ficar com o Haskell.
Um programador razoavelmente inteligente com orientação deve ser capaz de contribuir para o seu desenvolvimento sem muita dor.
Apenas certifique-se de que você pode pagar (em tempo e custo) essa orientação.
fonte
Quantos dias você economizaria usando Haskell em vez de Ruby? Seria mais ou menos do que o número de dias necessário para encontrar programadores Haskell ou treinar programadores não-Haskell? Você já está preparado para ensinar programadores não-Haskell a usar o Haskell? Você está disposto a contratar programadores sabendo muito bem que eles não serão capazes de demonstrar sua capacidade de usar o Haskell até muito tempo após a contratação inicial?
Essas são perguntas difíceis de responder. Acho que o fator decisivo aqui deve ser se você pretende ou não continuar usando o Haskell no futuro ou se esse será apenas um projeto. Se você planeja continuar usando o Haskell no futuro, embora o programa demore mais, ele também pode ser considerado um investimento. No entanto, na minha humilde opinião, a linguagem não é tão importante quanto a arquitetura. Se você usar a estrutura correta e a estrutura correta do programa, poderá facilmente superar o mesmo programa em outra linguagem "superior" com a estrutura errada ou a estrutura do programa errada.
Em outras palavras, se for necessário investir tempo na execução adequada de um programa, acho que seria melhor gastar esse tempo analisando uma abordagem antes de escrever a primeira linha de código, que comprovadamente reduziu significativamente os tempos de programação, se bem feito.
fonte