À quoi sert réellement Haskell?

Par exemple, si je commence à apprendre Haskell, à quoi puis-je me servir? Quels sont les usages courants de cette langue que j’entends est une fonctionnalité ?

Quelles sont les utilisations courantes de cette langue?

Développement rapide d’applications.

Si vous voulez savoir “pourquoi Haskell?”, Alors vous devez considérer les avantages des langages de programmation fonctionnels (tirés de http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):

  • Les programmes fonctionnels ont tendance à être beaucoup plus laconiques que leurs homologues ImperativeLanguage. Cela conduit souvent à une meilleure productivité du programmeur

  • La PF encourage le prototypage rapide. En tant que tel, je pense que c’est le meilleur paradigme de conception de logiciel pour ExtremeProgrammers … mais que sais-je?

  • FP est modulaire dans la dimension de la fonctionnalité, où ObjectOrientedProgramming est modulaire dans la dimension des différents composants.

  • La possibilité d’avoir votre gâteau et de le manger. Imaginez que vous ayez un système OO complexe traitant les messages – chaque composant peut faire des changements d’état en fonction du message, puis transférer le message à certains objects auxquels il est lié. Ne serait-il pas trop cool de pouvoir annuler facilement chaque modification si un object situé au plus profond de la hiérarchie des appels décidait que le message était défectueux? Que diriez-vous d’avoir une histoire de différents états?

  • Nombreuses tâches de ménage effectuées pour vous: déconstruire des structures de données (PatternMatching), stocker des liaisons de variables (LexicalScope avec fermetures), typage fort (TypeInference), GarbageCollection, allocation de stockage, utiliser des boîtes (pointeur à valeur) ou unboxed (valeur directement) ) représentation…

  • Multithreading sûr! Les structures de données immuables ne sont pas soumises à des conditions de concurrence et ne doivent donc pas être protégées par des verrous. Si vous allouez toujours de nouveaux objects, plutôt que de manipuler de manière destructive des objects existants, le locking peut être masqué dans le système d’allocation et GarbageCollection.

Haskell a ses propres avantages, tels que:

  • Syntaxe claire et intuitive inspirée par la notation mathématique.
  • Liste des compréhensions pour créer une liste basée sur des listes existantes.
  • Expressions lambda: créez des fonctions sans leur donner de noms explicites. Il est donc plus facile de manipuler les grandes formules.
  • Haskell est complètement référent transparent . Tout code utilisant des E / S doit être marqué comme tel. De cette façon, il vous encourage à séparer le code avec les effets secondaires (par exemple, mettre du texte à l’écran) du code sans (calculs).
  • L’évaluation paresseuse est une très bonne fonctionnalité:
    • Même si quelque chose provoque généralement une erreur, cela fonctionnera aussi longtemps que vous n’utiliserez pas le résultat. Par exemple, vous pouvez mettre 1 / 0 comme premier élément d’une liste et cela fonctionnera toujours si vous n’utilisiez que le deuxième élément.
    • Il est plus facile d’écrire des programmes de recherche tels que ce solveur de sudoku, car il ne charge pas toutes les combinaisons à la fois. Il les génère simplement au fur et à mesure. Vous pouvez le faire dans d’autres langages, mais seul Haskell le fait par défaut .

Vous pouvez consulter les liens suivants:

Je pense que les personnes dans ce post manquent le point le plus important pour quiconque n’a jamais utilisé un langage de programmation fonctionnel: élargir votre esprit. Si vous êtes novice en functional programming, Haskell vous fera réfléchir de manière inédite. En conséquence, votre programmation dans d’autres domaines et dans d’autres langues s’améliorera. Combien? Difficile à quantifier

Il y a une bonne réponse à la question de savoir si un langage général comme Haskell est bon pour écrire des programmes en général.

Pour ce qui est utilisé dans la pratique, j’ai trois approches pour établir que:

  • Un nuage de tags de la bibliothèque et des zones d’application Haskell , pondéré par la fréquence sur Hackage.

Indique qu’il convient aux graphiques, à la mise en réseau, à la programmation système, aux structures de données, aux bases de données, au développement, au traitement de texte …

  • Domaines utilisés dans l’indussortinge – beaucoup de DSL, d’applications Web, de conception de compilateurs, de réseautage, d’parsing, de programmation de systèmes, …

Et enfin, mon avis sur ce qui est vraiment fort à:

  • Problèmes liés à la correction, langages spécifiques à un domaine et programmation parallèle et simultanée

J’espère que cela vous donnera une idée de l’ampleur de votre question, si vous voulez y répondre avec précision.

Un exemple de Haskell en action est xmonad , un “gestionnaire de fenêtres avec moins de 1200 lignes de code”.

Du Wiki Haskell :

Haskell a divers usages commerciaux, de l’aérospatiale et de la défense à la finance, en passant par les start-ups, les entresockets de conception de matériel et les fabricants de tondeuses. Cette page recueille des ressources sur l’utilisation indussortingelle de Haskell.

Selon Wikipedia, le langage Haskell est né de la nécessité de consolider les langages fonctionnels existants en un langage commun qui pourrait être utilisé pour de futures recherches sur la conception de langages fonctionnels.

Il est évident sur la base des informations disponibles qu’elles ont dépassé leur objective initial et sont utilisées pour beaucoup plus que la recherche. Il est maintenant considéré comme un langage de programmation fonctionnel à usage général.

Si vous vous demandez toujours, “Pourquoi devrais-je l’utiliser?”, Lisez alors le Pourquoi l’utiliser? section du Wiki Haskell Introduction.

Haskell est un langage de programmation généraliste. Il peut être utilisé pour tout ce que vous utilisez dans une autre langue. Vous n’êtes pas limité par autre chose que votre propre imagination. Pour quoi est-il adapté? Eh bien, à peu près tout. Il y a peu de tâches dans lesquelles un langage fonctionnel n’excelle pas.

Et oui, je suis le Rayne de Dreamincode. 🙂

Je voudrais également mentionner que, si vous n’avez pas lu la page Wikipedia, la functional programming est un paradigme comme la programmation orientée object est un paradigme. Juste au cas où vous ne le sauriez pas. Haskell est également fonctionnel dans le sens où cela fonctionne; ça marche assez bien à ça.

Le fait qu’une langue ne soit pas un langage orienté object ne signifie pas que la langue est limitée par quelque chose. Haskell est un langage de programmation généraliste, tout comme Java.

J’en ai un cool, facebook a créé un outil automatisé pour réécrire le code PHP. Ils parsingnt la source dans un arbre de syntaxe abstrait, effectuent des transformations:

 if ($f == false) -> if (false == $f) 

Je ne sais pas pourquoi, mais cela semble être leur style particulier et ensuite ils l’impriment assez bien.

https://github.com/facebook/lex-pass

Nous utilisons des haskell pour créer des langages spécifiques à de petits domaines. D’énormes quantités de traitement de données. Développement web. Web spiders. Test des applications. Rédaction de scripts d’administration système. Scripts backend, qui communiquent avec d’autres parties. Les scripts de surveillance (nous avons un DSL qui fonctionne bien avec munin, il est beaucoup plus facile d’écrire du code de moniteur correct pour vos applications).

Toutes sortes de choses en fait. Il s’agit simplement d’un langage généraliste avec des fonctionnalités très puissantes et utiles, si vous êtes un peu mathématiquement enclin.

De Haskell :

Haskell est un langage de programmation standardisé, à usage général, purement fonctionnel , avec une sémantique non ssortingcte et un fort typage statique. Il porte le nom du logicien Haskell Curry.

Fondamentalement, Haskell peut être utilisé pour créer à peu près tout ce que vous créez normalement en utilisant d’autres langages d’usage général (par exemple, C #, Java, C, C ++, etc.).

Par exemple, pour développer des applications Web HTML5 temps réel interactives. Voir Elm , dont le compilateur est implémenté dans Haskell et dont la syntaxe emprunte beaucoup à celle d’Haskell.

Ceci est une très bonne source d’informations sur Haskell et ses utilisations:

Open Source Haskell Communiqués et croissance