Escolhendo o idioma para criar um aplicativo com base no mercado de contratação versus desempenho e capacidade de manutenção [fechado]

8

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?

dan
fonte
5
Você está esquecendo uma coisa: embora poucos conheçam Haskell, provavelmente há mais que o conhecem e desejam usá-lo no trabalho, mas não são permitidos do que são, criando um local onde é permitido, embora possa ser difícil encontrar Haskellers em comparação com Rubistas, os poucos que você encontrar será um degrau acima e têm uma grande motivação para trabalhar para você (eu assim melhor estar trabalhando em Haskell de .NET ...)
Jimmy Hoffa
4
Apenas um pensamento: Scala está se tornando popular muito mais rápido que Haskell, a partir de agora. Mas alguém que tenha dominado os conceitos básicos de Scala terá muito mais facilidade em entender Haskell. Portanto, o mercado de contratações pode não ser tão ruim quanto parece.
9000
5
Minha primeira reação à pergunta foi verificar seu perfil para ver se sua empresa está perto de onde eu moro. Estou apenas dizendo.
Psr

Respostas:

11

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.

Joel
fonte
5

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.

Neil
fonte
3
Sim, mas quem deseja escrever o código COBOL, independentemente da "estrutura correta" ou da "estrutura correta do programa"? : P O ensaio de Paul Graham postula que a própria linguagem de programação é importante.
Andres F.
1
É verdade que eu não disse que seria divertido. No entanto, se escrever programas fosse sobre qual linguagem eu queria usar, eu teria parado de usar Java há um bom tempo. :)
Neil