Necessidade de aprender a extensão da linguagem haskell para produção

10

A linguagem principal do Haskell é realmente simples. Vindo de uma experiência OO, a principal dificuldade é se adaptar ao paradigma funcional puro.

Enquanto aprendia Haskell "básico", sempre considerei as extensões de linguagem como brinquedos para as pessoas de CS ou como experimentos para futuras versões da linguagem (como from future import ???em python).

No entanto, quando comecei a olhar para estruturas da web como o Yesod, percebo que muitos arquivos de origem exigem entre 3 e 4 extensões. Alguns parecem bastante simples (StringOverload). Outros são realmente intimidadores (GADT, Famílias de tipos, Modelo Haskell). A documentação deles tem links para trabalhos de pesquisa, o que é assustador para quem espera aprender "apenas" uma nova biblioteca.

É necessário aprender as extensões de idioma do GHC para serem produtivas em Haskell? Se você fosse contratar um desenvolvedor Haskell para um aplicativo de produção, solicitaria esse conhecimento?

Simon Bergot
fonte

Respostas:

7

É necessário aprender as extensões de idioma do GHC para serem produtivas em Haskell?

Sim. E isso é verdade para qualquer idioma / ferramenta. Com o conhecimento básico / básico, você pode resolver os problemas do concurso on-line, pode ser um projeto universitário pequeno, mas definitivamente não é um aplicativo do mundo real.

Se você contratasse um desenvolvedor de haskell para um aplicativo de produção, solicitaria esse conhecimento?

Agora isso depende de você ter alguém com quem possa compartilhar esse conhecimento. Se sim, então essa pessoa pode acelerar o novo funcionário. Caso contrário, você deve obter essa pessoa com conhecimento primeiro. E, novamente, isso é verdade para novas tecnologias.

É claro que você também pode tentar contratar pessoas com um conhecimento tão profundo em Haskell. Mas Haskell é relativamente novo na indústria e, considerando que muito poucos projetos comerciais foram realizados, encontrar essa pessoa será difícil. A maneira eficaz de formar uma equipe de profissionais em Haskell será contratar pessoas que conheciam o básico e dispostas a trabalhar em Haskell e depois educá-las.

Manoj R
fonte
Eu ia protestar, mas depois vi que o Mundo Real Haskell ensina muitas extensões de idiomas. Obrigado pela sua resposta.
Simon Bergot
2
"E isso é verdade para qualquer idioma / ferramenta" - isso é completamente falso. Digamos, adote linguagens como Java, C #, C ++ - nenhuma delas possui extensões de linguagem comumente encontradas no código de aplicativos do mundo real. Se você precisar usar extensões de idioma sempre que precisar escrever algo menos trivial do que "as soluções de problemas de concursos on-line", na minha opinião, há algo muito errado com as especificações de idioma.
Malcolm
@ Malcolm Por que você acha "Se você precisar usar extensões de idioma sempre que precisar escrever algo menos trivial do que" as soluções de problemas de concursos on-line ", na minha opinião, há algo muito errado com as especificações de idioma". ser verdadeiro? Qual é a característica de uma extensão que a torna negativa? Eu uso o ghc e as extensões fornecidas. Adicionar uma extensão a um projeto existente parece tão oneroso quanto adicionar outra biblioteca.
21413 Davorak
2
@ Davidorak Porque, em vez de um único idioma, temos um zilhão de combinações de extensões diferentes, e você não sabe nada sobre se o código será compilado em um determinado compilador. As extensões tornam o código não portátil. E isso também torna o aprendizado difícil de aprender porque, em vez de um único conjunto de recursos que todo mundo usa, há uma quantidade enorme de recursos adicionais, e você não tem idéia de quais você precisa conhecer e usar e quais existem apenas porque os pesquisadores estão se divertindo.
Malcolm
2
@ Davorak Esse é exatamente o problema que estou falando: todo mundo usa o GHC, porque esse é o único compilador ainda em manutenção. Outros compiladores não conseguem acompanhar, então ninguém pode usá-los, e há poucas razões para investir neles. Quanto às bibliotecas: você escolhe bibliotecas para o problema e trabalha apenas com elas. Digamos, se você precisar ler XML, precisará de apenas uma biblioteca de leitura XML. Com extensões, no entanto, não é óbvio quando você precisa de qual. Embora também haja um problema com as bibliotecas. Digamos, em Java, existem apenas matrizes e coleções e, em Haskell, há uma carga de bibliotecas de matrizes.
Malcolm