Qual idioma é melhor para a programação de fins gerais, F# ou Haskell? [fechado

StackOverflow https://stackoverflow.com/questions/142878

  •  02-07-2019
  •  | 
  •  

Pergunta

Atualmente, estou aprendendo Haskell, qual idioma (F# ou Haskell) você prefere programar aplicativos de uso geral?

Qual você acha que é a linguagem mais forte?

Foi útil?

Solução

Eu iria para Haskell. HackagedB é uma ótima coleção de bibliotecas que são escritas especificamente para o idioma. No caso de F#, você teria que usar principalmente bibliotecas que não são escritas com uma linguagem funcional em mente, para que não sejam tão 'elegantes' para usar. Mas, é claro, depende em grande parte da quantidade de programação funcional que você deseja fazer e das restrições do projeto para o qual deseja usá -lo. Mesmo 'propósito geral' não significa que deve ser usado em todos os casos;)

Outras dicas

Eu prefiro Haskell.

A alegação de Jon Harrop de que Haskell tem ferramentas ruins me fez pensar um pouco, já que eu discordo disso. Eu acho que a questão aqui é em parte um estilo de desenvolvimento. Vamos comparar algumas características relacionadas à ferramenta de F# e GHC:

  1. F# possui extensas ferramentas visuais e o GHC não possui. Para mim, a falta de ferramentas visuais é irrelevante: trabalho com VI, uma linha de comando do UNIX e um sistema de construção fortemente personalizado. A falta de apoio ao meu estilo de desenvolvimento em F# seria muito difícil para mim. Por outro lado, se você preferir trabalhar sob um ambiente do tipo-estádio visual, você teria a opinião bastante reversa.

  2. F# e/ou .net que eu entendo tem um depurador muito bom. O GHC tem apenas um depurador limitado que é executado no intérprete. Eu não usei um depurador há anos (muito disso devido ao uso de desenvolvimento orientado a testes) e quando você trabalha principalmente com funções puras, como em Haskell, um depurador é muito menos necessário. Então, para mim, a falta dessa ferramenta é bastante irrelevante.

  3. Bibliotecas. Isso depende principalmente de quais bibliotecas você precisa, não é? Muitos bons não ajudam se o que você precisa não estiver lá, e ter muitas bibliotecas mal projetadas pode não ser tão útil. Haskell certamente tem menos bibliotecas que o .NET, mas possui uma seleção razoável, e a qualidade do design da API em muitos deles é muito, muito alta.

Não sei como é a interface de F#nas bibliotecas de código nativas, mas o GHC é ótimo para isso, devido à FFI fantástica. Eu escrevi um servidor Windows DDE inteiramente em Haskell (sim - não uma linha de C, nem mesmo para lidar com retornos de chamada das bibliotecas do Windows C) e demorou consideravelmente menos tempo e era consideravelmente mais simples do que fazer a mesma coisa em C ou C ++. Se você precisa de interfaces de código nativas, Haskell é certamente a melhor escolha.

A "imprevisibilidade" do uso e desempenho da memória é um bom ponto. Haskell me parece previsível razoavelmente se você souber o que está fazendo, mas não saberá o que está fazendo quando começar e terá muito a aprender. F# é muito mais semelhante a outros idiomas .NET.

No geral, essa questão provavelmente se resume mais à plataforma do que ao idioma: a enorme diferença entre o "mundo Unixy" do GHC que gera código nativo e o "mundo do Windowsy" de F# em execução no .NET não é um problema de idioma.

Eu diria F#, como você pode acessar toda a estrutura do .NET. No entanto, isso é mais uma coisa da biblioteca.

Depende do que você quer fazer:

Haskell é a linguagem mais puramente funcional dos dois.

F# é mais uma linguagem híbrida e não é puramente funcional, mas possui um ótimo conjunto de bibliotecas de classe base que você pode usar para fazer coisas modernas facilmente no Windows ou Mono.

Eu acho que Jon Harrop tem um desaceleimento sério em Haskell por algum motivo. Simplesmente não é verdade que não é usado fora da academia, de fato, é amplamente utilizado no banco de investimentos e muito mais do que F# e OCAML são e por boas razões. Se você deseja uma programação funcional do trabalho, aprenda Haskell, pois há muito mais postagens anunciadas para programadores Haskell do que F# ou OCAML. Tenho certeza de que F# ganhará popularidade, pois tem a Microsoft por trás e está começando de zero, mas no momento Haskell tem uma liderança clara.

Provavelmente, 2 ou 3 anos atrás, a OCAML liderou o campo em idiomas funcionais práticos, mas desde então Haskell o ultrapassou com mais bibliotecas, mais recursos, melhor desempenho e uso comercial mais amplo.

Você pode encontrar esta postagem do blog de Neil Mitchell Informativo:

F# de uma perspectiva de Haskell

Os comentários também são esclarecedores.

Eu diria que depende de por que você está aprendendo. Se você estiver fazendo isso pela experiência de uma linguagem funcional pura, vá para Haskell. Mas se você definitivamente vai usar o idioma para mais do que isso, F# pode ser a melhor escolha.

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