Quelle langue est la meilleure pour la programmation générale, F # ou Haskell? [fermé]

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

  •  02-07-2019
  •  | 
  •  

Question

J'apprends actuellement Haskell. Quelle langue préférez-vous pour programmer des applications générales? (F # ou Haskell)?

Selon vous, quelle est la langue la plus forte?

Était-ce utile?

La solution

J'irais pour Haskell. HackageDB est une excellente collection de bibliothèques écrites spécialement pour cette langue. Dans le cas de F #, vous devriez utiliser principalement des bibliothèques qui ne sont pas écrites avec un langage fonctionnel à l'esprit afin qu'elles ne soient pas aussi "élégantes" à utiliser. Bien entendu, cela dépend en grande partie de la programmation fonctionnelle que vous souhaitez effectuer et des contraintes du projet pour lequel vous souhaitez l'utiliser. Même "à usage général" ne signifie pas qu'il devrait être utilisé dans tous les cas;)

Autres conseils

Je préfère Haskell.

L'affirmation de Jon Harrop selon laquelle Haskell dispose de mauvais outils m'a fait réfléchir un peu, car je ne suis pas du tout d'accord avec cela. Je pense que la question ici est en partie celle du style de développement. Comparons quelques caractéristiques de F # et de GHC relatives aux outils:

  1. F # a de nombreux outils visuels et GHC n'en a aucun. Pour moi, le manque d'outils visuels est sans importance: je travaille avec vi, une ligne de commande Unix et un système de construction très personnalisé. Le manque de soutien pour mon style de développement en fa serait très éprouvant pour moi. Par contre, si vous préférez travailler dans un environnement de type Visual Studio, vous auriez une opinion totalement opposée.

  2. F # et / ou .NET Je comprends un très bon débogueur. GHC ne dispose que d'un débogueur limité qui s'exécute dans l'interpréteur. Je n'ai pas utilisé de débogueur depuis des années (en grande partie grâce au développement piloté par les tests) et lorsque vous travaillez principalement avec des fonctions pures, comme dans Haskell, un débogueur est beaucoup moins nécessaire. Donc, pour moi, le manque de cet outil est assez peu important.

  3. Bibliothèques. Cela dépend principalement des bibliothèques dont vous avez besoin, n'est-ce pas? Beaucoup de bonnes ne sont d'aucune utilité si celle dont vous avez besoin n'est pas là, et disposer de nombreuses bibliothèques mal conçues peut ne pas être aussi utile. Haskell a certes moins de bibliothèques que .NET, mais sa sélection est raisonnable et la qualité de la conception des API est très élevée dans bon nombre d’entre elles.

Je ne sais pas à quoi ressemble l'interface de F # dans les bibliothèques de code natif, mais GHC est idéal pour cela, en raison de la fantastique FFI. J'ai écrit un serveur DDE Windows entièrement en Haskell (oui, pas une ligne de C, même pas pour gérer les rappels à partir de bibliothèques Windows C) et cela a pris beaucoup moins de temps et était beaucoup plus simple que de faire la même chose en C ou C ++. Si vous avez besoin d’interfaces en code natif, Haskell est certainement le meilleur choix.

L’imprévisibilité " de l'utilisation de la mémoire et des performances est un bon point. Haskell me semble en fait raisonnablement prévisible si vous savez ce que vous faites, mais vous ne saurez pas ce que vous faites lorsque vous débutez et vous aurez beaucoup à apprendre. F # ressemble beaucoup plus aux autres langages .NET.

Dans l’ensemble, cette question revient probablement plus à la plate-forme qu’à la langue: l’énorme différence entre le "monde Unixy" et de GHC générant du code natif et le "Windowsy world" L’exécution de F # sur .NET n’est pas un problème de langage.

Je dirais F #, car vous pouvez accéder à l'intégralité de la structure .Net. Cependant, c'est plus une chose de la bibliothèque.

Cela dépend de ce que vous voulez faire:

Haskell est le langage le plus purement fonctionnel des deux.

F # est plus un langage hybride, et pas purement fonctionnel, mais possède un excellent ensemble de bibliothèques de classes de base que vous pouvez utiliser pour effectuer facilement des tâches modernes sous Windows ou Mono.

Je pense que Jon Harrop a un ennui grave sur Haskell pour une raison quelconque. Ce n'est tout simplement pas vrai qu'il n'est pas utilisé en dehors du monde universitaire, mais en fait, il est largement utilisé dans les banques d'investissement et bien plus que ne le sont F # et OCaml et pour de bonnes raisons. Si vous voulez une programmation fonctionnelle, apprenez Haskell, car il y a beaucoup plus de publications de programmeurs Haskell que F # ou OCaml. Je suis sûr que F # gagnera en popularité car Microsoft l’a derrière et cela commence à zéro, mais pour le moment, Haskell a une nette avance.

Il y a probablement deux ou trois ans, OCaml était leader dans le domaine des langages fonctionnels pratiques, mais depuis lors, Haskell l'a dépassé avec plus de bibliothèques, plus de fonctionnalités, de meilleures performances et une utilisation commerciale plus large.

Vous trouverez peut-être cet article de blog de Neil Mitchell informatif:

F # dans une perspective Haskell

Les commentaires sont également éclairants.

Je dirais que cela dépend de la raison pour laquelle vous l’apprenez. Si vous le faites pour l'expérience d'un langage fonctionnel pur, optez pour Haskell. Mais si vous comptez utiliser le langage plus longtemps, F # est peut-être le meilleur choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top