Pergunta

As linguagens funcionais são bons porque evitam erros, eliminando estado, mas também porque eles podem ser facilmente paralelizado automaticamente para você, sem você ter que se preocupar com a contagem da linha.

Como um desenvolvedor Win32 embora, eu posso usar Haskell para algumas dlls da minha aplicação? E se eu fizer isso, há uma vantagem real que seriam tomadas automaticamente para mim? Se assim o que me dá essa vantagem, o compilador?

O F funções # paralelizar você escreve em vários núcleos e CPU é automaticamente para você? Será que você nunca ver a contagem da linha no aumento gerenciador de tarefas?

Basicamente a minha pergunta é, como posso começar a usar Haskell, de forma prática, e eu realmente ver alguns benefícios se eu fazer?

Foi útil?

Solução

Parece que o livro Real World Haskell é apenas o que você está procurando. Você pode lê-lo online gratuito:

http://book.realworldhaskell.org/

Outras dicas

F # não contém qualquer pó mágico duende que vai passar funções off a diferentes CPU ou máquinas. O que F # / Haskell e outras linguagens de programação funcionais fazer é torná-lo mais fácil para você escrever funções que podem ser processados ??independente do segmento ou CPU eles foram criados por diante.

Eu não me sinto bem postar um link aqui para um podcast que eu participar, parece um pouco fora, mas no episódio Código Herding onde conversamos com Matt Podwysocki pedimos a mesma pergunta e ele deu algumas respostas interessantes. Há também um monte de boas ligações relacionadas com a programação funcional nesse episódio. Eu encontrei um link títulos " Por Funcional Programação Matters " Isso pode fornecer algumas respostas para você.

Este também pode ser interessante: " Real World Programação Funcional "

Os exemplos estão em F # e C #, mas a teoria é bastante genérico. Pelo que tenho lido (pré-lançamento) é definitivamente interessante, mas até agora eu acho que está me fazendo querer ficar mais e mais com C #, usando bibliotecas como extensões paralelas.

Você não mencionou, mas eu estou supondo que você está usando C ++. Uma maneira potencialmente fácil de entrar funcional é via C ++ / CLI para F #. C ++ contém "pó mágico pixie" (chamado IJW: ele simplesmente funciona) para que você possa chamar dentro e fora do código gerenciado. Com isso, chamando F # código é quase tão simples como é a partir de C #.

Eu usei isso em um programa (FreeSWITCH), que é inteiramente escrito em C / C ++. Com um único gerenciado C ++ / CLI (use a opção / clr), magicamente transições para código gerenciado, e de lá, eu posso ir carregar o meu # plugins F e executá-los. Para tornar as coisas ainda mais fácil para a implantação, F # pode estaticamente vincular todas as suas dependências, assim você não precisa implementar os arquivos # tempo de execução F. Uma outra coisa que torna o código CLR atraente é que você pode passar o código gerenciado (delegados) para código C, eo tempo de execução automaticamente faz uma conversão para você.

Se você decidir ir a maneira Haskell, o recurso que você vai estar procurando é FFI: Foreign Function Interface. No entanto, eu não acho que ele vai lhe dar o mesmo nível de integração como C ++ / CLI com F #.

Atualmente estou aprendendo Haskell eu mesmo, quando você começa a aprender que, não parece muito intrigante porque a experiência de aprendizagem é nada como aprender uma linguagem como C #, é um mundo totalmente novo, mas percebi que eu poderia escrever expressões muito complexas em apenas algumas linhas de código, quando eu olhei para o código era muito mais concisa, era pequeno e apertado. Eu estou absolutamente amando isso! Você pode realmente escrever programas do mundo real que vai ser menor, mais fácil de manter, e muito mais complexa, então a maioria das outras línguas permitir, eu voto para você aprender isso !!

Boa sorte.

Uma vez que você menciona Win32 e DLLs, eu presumo que você está trabalhando com código não gerenciado. Nesse caso, GHC vai funcionar muito bem para você. No ano passado eu escrevi um servidor DDE no Windows usando FFI para falar com as bibliotecas MS DDE, e, surpreendentemente, foi uma experiência extremamente agradável (especialmente tendo em conta que eu sou um cara Unix). FFI de Haskell é poderoso (mesmo apoiando, por exemplo, chamadas de retorno em funções Haskell de C ou outras bibliotecas), e tendo a verificação de tipo de Haskell ao escrever código de nível C é como um sonho tornado realidade.

Esse último ponto é uma das principais vantagens do Haskell: o sistema de tipos é incrível. Dito isto, é como qualquer outra ferramenta poderosa; ele precisa de tempo e esforço para fazer bom uso dela.

Então, sim, é possível começar a escrever pequenos pedaços de código em Haskell que apontam para o resto do seu código (embora você pode achar que é mais fácil começar com programas Haskell pequenas que apontam para o seu outro código), e é vale a pena gastar uma boa quantidade de tempo aprendendo sobre isso e usá-lo sempre que puder. Você pode acabar como eu, planejando um bastante grande projeto totalmente integrado com o código do Windows (no meu caso, um sofisticado Excel add-in) em Haskell.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top