518 votes

A quoi sert réellement Haskell?

J'espère vraiment que personne ne considère cette question comme étant cliquable, car elle est assez simple.

J'ai googlé cette question, mais je n'ai pas trouvé beaucoup d'informations concises et instructives pour moi.

Par exemple, si je commence à apprendre Haskell, à quoi puis-je me servir pour l'utiliser? Quelles sont les utilisations courantes de ce langage que j'entends est un fonctionnel. ?

326voto

Xinus Points 7693

Quelles sont certaines des utilisations les plus courantes pour ce de la langue?

Développement rapide d'applications.

Si vous voulez savoir pourquoi Haskell? Ensuite, vous devez considérer les avantages de la programmation fonctionnelle de la langue (prises à partir de http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):

  • Les programmes fonctionnels ont tendance à être beaucoup plus laconique que leurs ImperativeLanguage homologues. Souvent, cela conduit à l'amélioration de la la productivité du programmeur

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

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

  • La possibilité d'avoir votre gâteau et le manger. Imaginez que vous avez un complexe OO système de traitement des messages - chaque composant peut faire état modifications selon le message, puis de transférer le message à certains les objets qu'il a des liens. Ne serait-il pas tout simplement trop cool pour être en mesure de facilement revenir chaque changement si un objet de profondeur dans l'appel la hiérarchie a décidé le message est défectueux? Comment le fait d'avoir une histoire de les différents états?

  • De nombreuses tâches d'entretien fait pour vous: la déconstruction des structures de données (PatternMatching), le stockage de la variable de liaisons (LexicalScope avec fermetures), le typage fort (TypeInference), GarbageCollection, stockage l'allocation, soit pour l'utiliser en boîte (pointeur de la valeur) ou "unboxed" (valeur directement) de la représentation...

  • Coffre-fort multithreading! Immuable structures de données ne sont pas sujettes à des conditions de course, et, par conséquent, n'ont pas à être protégés par la les verrous. Si vous êtes toujours de l'attribution de nouveaux objets, plutôt que de de façon destructrice, la manipulation de celles existantes, le verrouillage peut être caché dans la répartition et GarbageCollection système.

En dehors de cette Haskell a ses propres avantages tels que

  • Claire, intuitive syntaxe inspirée par la notation mathématique.
  • Interprétations de la liste pour créer une liste basée sur des listes existantes.
  • Les expressions Lambda: créer des fonctions sans donner des noms explicites. Il est donc plus facile de traiter de grands volumes de formules.
  • Haskell est complètement referentially transparent. Le code qui utilise les e/S doivent être marqués comme tels. De cette façon, il vous encourage à séparer le code avec des effets secondaires (par exemple, mettre du texte sur l'écran) à partir du code sans (calculs).
  • L'évaluation différée est vraiment une fonctionnalité intéressante:
    • Même si quelque chose pourrait normalement causer une erreur, il faudra encore travailler aussi longtemps que vous n'utilisez pas le résultat. Par exemple, vous pourriez mettre 1 / 0 comme le premier élément d'une liste et il fonctionnera toujours si vous ne l'utilisiez le deuxième élément.
    • Il est plus facile d'écrire des programmes de recherche tels que ce solveur de sudoku , car il ne prend pas en charge toutes les combinaisons à la fois qu'il génère au fur et à mesure. Vous pouvez le faire dans d'autres langues, mais seulement Haskell ne présente par défaut.

Vous pouvez consulter les liens suivants:

249voto

wheaties Points 20917

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.

91voto

Don Stewart Points 94361

Il y a une bonne réponse pour ce qui d'un usage général de la langue comme Haskell est bon pour: l'écriture de programmes en général.

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

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

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

J'espère que ça vous donne une idée sur le degré de votre question est de savoir s'il sera répondu à aucune spécificité.

31voto

unutbu Points 222216

Xmonad, un « gestionnaire de fenêtres libre en moins de 1200 lignes de code » en est un exemple de Haskell en action.

20voto

Robert Groves Points 3867

De le Haskell Wiki:

Haskell a un large éventail d'utilisation commercialement, de l'aérospatiale et de la de la défense, de la finance, web, startups, matériel des entreprises de conception et de tondeuse à gazon les fabricants. Cette page recueille ressources sur l'utilisation industrielle de l' Haskell.

Selon Wikipedia, le Haskell langue a été créée à partir de la nécessité de consolider les langages fonctionnels dans une commune qui pourrait être utilisé à l'avenir pour la recherche fonctionnelle-conception de langage.

Il est évident, sur la base des informations disponibles qu'il a dépassé l'objectif initial et est utilisé pour beaucoup plus que la recherche. Il est maintenant considéré comme un objectif général de langage de programmation fonctionnel.

Si vous êtes encore à vous demander, "Pourquoi devrais-je l'utiliser?", puis lire le Pourquoi l'utiliser? la section de la Haskell Wiki Introduction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X