Existe muito hype em torno do Haskell, no entanto, é difícil obter informações sobre como ele é usado nos aplicativos do mundo real. Quais são os projetos / usos mais populares da Haskell e por que ela se destaca na solução desses problemas?
Existe muito hype em torno do Haskell, no entanto, é difícil obter informações sobre como ele é usado nos aplicativos do mundo real. Quais são os projetos / usos mais populares da Haskell e por que ela se destaca na solução desses problemas?
Respostas:
Quais são alguns usos comuns para esse idioma?
Desenvolvimento de Aplicação Rápida.
Se você quiser saber "por que Haskell?", Precisará considerar as vantagens das linguagens de programação funcional (extraídas de https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Os programas funcionais tendem a ser muito mais concisos do que os equivalentes do ImperativeLanguage. Muitas vezes, isso leva a uma maior produtividade do programador
O FP incentiva a prototipagem rápida. Como tal, acho que é o melhor paradigma de design de software para ExtremeProgrammers ... mas o que eu sei?
O FP é modular na dimensão da funcionalidade, onde o ObjectOrientedProgramming é modular na dimensão dos diferentes componentes.
A capacidade de ter o seu bolo e comê-lo. Imagine que você tem um sistema OO complexo processando mensagens - cada componente pode fazer alterações de estado dependendo da mensagem e encaminhá-la para alguns objetos aos quais tem links. Não seria muito legal poder reverter facilmente todas as alterações se algum objeto na hierarquia de chamadas decidir que a mensagem é falha? Que tal ter uma história de diferentes estados?
Muitas tarefas de limpeza feitas para você: desconstruindo estruturas de dados (PatternMatching), armazenando ligações variáveis (LexicalScope com fechamentos), digitação forte (TypeInference), GarbageCollection, alocação de armazenamento, se deseja usar em caixa (ponteiro para valor) ou não em caixa (valor diretamente ) representação ...
Multithreading seguro! As estruturas de dados imutáveis não estão sujeitas às condições de corrida de dados e, consequentemente, não precisam ser protegidas por bloqueios. Se você está sempre alocando novos objetos, em vez de manipular destrutivamente os existentes, o bloqueio pode ser oculto no sistema de alocação e GarbageCollection.
Além disso, Haskell tem suas próprias vantagens, como:
1 / 0
como o primeiro item de uma lista e ainda funcionará se você tiver usado apenas o segundo item.Você pode conferir os seguintes links:
x = 5;
garante que, após a execução, x
contenha o valor 5
.
operator =
é chamado. E garante o que acontece se você não definir umoperator =
Acho que as pessoas neste post estão perdendo o ponto mais importante para quem nunca usou uma linguagem de programação funcional: expandir sua mente. Se você é novo na programação funcional, o Haskell fará com que você pense de maneiras que nunca pensou antes. Como resultado, sua programação em outras áreas e outros idiomas será aprimorada. Quanto? Difícil de quantificar.
Há uma boa resposta para o que uma linguagem de propósito geral como Haskell é boa: escrever programas em geral.
Para o que é usado na prática, tenho três abordagens para estabelecer isso:
Indica que é bom para gráficos, redes, programação de sistemas, estruturas de dados, bancos de dados, desenvolvimento, processamento de texto ...
E, finalmente, minha opinião sobre o que é realmente forte em:
Espero que isso lhe dê uma idéia de quão ampla é a sua pergunta, para que seja respondida com alguma especificidade.
Do Wiki Haskell :
Haskell tem uma gama diversificada de uso comercial, desde aeroespacial e de defesa, a finanças, a startups da Web, empresas de design de hardware e fabricantes de cortadores de grama. Esta página coleta recursos sobre o uso industrial de Haskell.
Segundo a Wikipedia, a linguagem Haskell foi criada a partir da necessidade de consolidar as linguagens funcionais existentes em uma linguagem comum que poderia ser usada para futuras pesquisas em design de linguagem funcional.
É aparente, com base nas informações disponíveis, que superou seu objetivo original e é usado para muito mais que pesquisas. Agora é considerada uma linguagem de programação funcional de uso geral.
Se você ainda está se perguntando: "Por que devo usá-lo?", Então leia o Por que usá-lo? seção da Introdução ao Haskell Wiki.
Haskell é uma linguagem de programação de uso geral. Pode ser usado para qualquer coisa que você use em qualquer outro idioma. Você não está limitado por nada além de sua própria imaginação. Quanto ao que é adequado? Bem, praticamente tudo. Existem poucas tarefas nas quais uma linguagem funcional não se destaca.
E sim, eu sou o Rayne do Dreamincode. :)
Também gostaria de mencionar que, caso você não tenha lido a página da Wikipedia, a programação funcional é um paradigma, como a programação orientada a objetos é um paradigma. Apenas no caso de você não saber. Haskell também é funcional no sentido em que funciona; funciona muito bem nisso.
Só porque um idioma não é um idioma orientado a objetos não significa que o idioma seja limitado por qualquer coisa. Haskell é uma linguagem de programação de uso geral e é tão genérica quanto Java.
Eu sou legal, o facebook criou uma ferramenta automatizada para reescrever o código PHP. Eles analisam a fonte em uma árvore de sintaxe abstrata, fazem algumas transformações:
if ($f == false) -> if (false == $f)
Não sei por que, mas esse parece ser o estilo particular deles e eles o imprimem bastante.
https://github.com/facebook/lex-pass
Usamos o haskell para criar pequenos idiomas específicos de domínio. Enormes quantidades de processamento de dados. Desenvolvimento web. Aranhas da Web. Testando aplicativos. Escrevendo scripts de administração do sistema. Scripts de back-end, que se comunicam com outras partes. Scripts de monitoramento (temos uma DSL que funciona muito bem com munin, facilita muito a gravação do código de monitor correto para seus aplicativos.)
Todo tipo de coisa, na verdade. É apenas uma linguagem de uso geral todos os dias, com alguns recursos muito poderosos e úteis, se você tiver alguma inclinação matemática.
false
à esquerda, não vejo o objetivo de usar uma ferramenta para fazê-lo automaticamente: se você já ==
possui um operador, já sabe que não tem o bug que faz parte dessa parte. O lex-pass deve ser usado, e se você tiver um, =
não há como saber se é ou não assim deliberadamente.
De Haskell :
Haskell é uma linguagem de programação puramente funcional de uso geral padronizada, com semântica não estrita e tipagem estática forte. É nomeado após o lógico Haskell Curry.
Basicamente, o Haskell pode ser usado para criar praticamente qualquer coisa que você criaria normalmente usando outras linguagens de uso geral (por exemplo, C #, Java, C, C ++, etc.).
Esta é uma boa fonte de informações sobre o Haskell e seus usos: