Question A quoi sert réellement Haskell? [fermé]


Par exemple, si je commence à apprendre Haskell, à quoi puis-je me servir? Quelles sont les utilisations courantes pour cette langue que j'entends est un un fonctionnel?


415
2017-10-22 03:00


origine


Réponses:


Quelles sont les utilisations courantes pour cela   la 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?AvantagesOfFonctionnelProgrammation):

  • Les programmes fonctionnels ont tendance à être beaucoup plus laconiques que leurs homologues ImperativeLanguage. Cela conduit souvent à une amélioration   productivité des programmeurs

  • FP encourage le prototypage rapide. En tant que tel, je pense que c'est le meilleur paradigme de conception de logiciel pour ExtremeProgrammers ... mais qu'est-ce que je sais?

  • FP est modulaire dans la dimension de la fonctionnalité, où ObjectOrientedProgramming est modulaire dans la dimension de   Composants.

  • La capacité d'avoir votre gâteau et le manger. Imaginez que vous ayez un système OO complexe traitant les messages - chaque composant peut créer un état   change en fonction du message, puis transmet le message à certains   objets auxquels il a des liens. Ne serait-ce pas trop cool de pouvoir   reculer facilement chaque changement si un objet profond dans l'appel   hiérarchie a décidé que le message est défectueux? Que diriez-vous d'avoir une histoire de   différents états?

  • De nombreuses tâches de gestion interne ont été réalisées pour vous: déconstruire des structures de données (PatternMatching), stocker des liaisons de variables (LexicalScope avec   fermetures), fort typage (TypeInference), GarbageCollection, stockage   affectation, qu’il s’agisse d’utiliser une boîte (pointer-to-value) ou unboxed (valeur   directement) représentation ...

  • Multithreading sûr! Les structures de données immuables ne sont pas soumises à des conditions de course de données et ne doivent donc pas être protégées par   serrures Si vous allouez toujours de nouveaux objets, plutôt que   en manipulant de manière destructive des dispositifs existants, le verrouillage 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 de grandes formules.
  • Haskell est complètement référentiellement 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 fonctionnalité vraiment intéressante:
    • 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 pourriez mettre 1 / 0 en tant que 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 comme celui-ci solveur de sudokucar il ne charge pas toutes les combinaisons en même temps, il les génère simplement au fur et à mesure. Vous pouvez le faire dans d'autres langues, mais seul Haskell le fait par défaut.

Vous pouvez consulter les liens suivants:


268
2017-10-22 03:12



Je pense que les gens 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 débutez en programmation fonctionnelle, Haskell vous fera réfléchir d'une manière que vous n'aviez jamais imaginée auparavant. En conséquence, votre programmation dans d'autres domaines et d'autres langues va s'améliorer. Combien? Difficile à quantifier.


192
2017-10-22 14:33



Il y a une bonne réponse à ce pour quoi une langue à usage général comme Haskell est bonne: écrire des programmes en général.

Pour ce qu'il est utilisé dans la pratique, j'ai trois approches pour établir cela:

Indique que c'est bon pour les graphiques, les réseaux, la programmation de systèmes, les structures de données, les bases de données, le développement, le traitement de texte ...

Et enfin, mon avis sur ce qu'il est vraiment fort à:

J'espère que cela vous donne une idée de la portée de votre question, si vous voulez y répondre de façon précise.


75
2017-10-22 05:20



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


26
2017-10-22 03:22



De le wiki Haskell:

Haskell a une gamme variée d'utilisation   commercialement, de l'aérospatiale et   défense, financer, aux startups web,   entreprises de conception de matériel et tondeuse à gazon   fabricants. Cette page recueille   ressources sur l'utilisation industrielle de   Haskell.

Selon Wikipedia, le Haskell Le langage a été créé par la nécessité de consolider les langages fonctionnels existants en un langage commun qui pourrait être utilisé pour de futures recherches dans la conception de langage fonctionnel.

Il est évident, d'après les informations disponibles, qu'il a dépassé son objectif initial et qu'il est utilisé 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 encore, "Pourquoi devrais-je l'utiliser?", Puis lisez le Pourquoi l'utiliser? section du Wiki Haskell Introduction.


15
2017-10-22 03:48



Haskell est un langage de programmation généraliste. Il peut être utilisé pour tout ce que vous utilisez n'importe quelle autre langue à faire. Vous n'êtes limité par rien d'autre que votre propre imagination. En ce qui concerne ce qu'il convient? 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 programmation fonctionnelle est un paradigme comme la programmation orientée objet 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.

Ce n'est pas parce qu'une langue n'est pas une langue orientée objet que la langue est limitée par quoi que ce soit. Haskell est un langage de programmation à usage général, et est tout aussi générique que Java.


12
2017-10-22 14:26



J'ai un cool, facebook a créé un outil automatisé pour réécrire le code PHP. Ils analysent la source dans un arbre de syntaxe abstraite, font quelques transformations:

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

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

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. Suivi des scripts (nous avons un DSL qui fonctionne bien avec munin, il est beaucoup plus facile d'écrire du code de contrôle 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.


9
2018-03-11 13:31