45 votes

Haskell et programmation procédurale dans le monde réel

Ces jours-ci, je m'intéresse sérieusement à la programmation fonctionnelle.

Bien que je sois vraiment enthousiasmé par Haskell et les possibilités qu'il semble offrir, je vois aussi maintenant qu'il va me falloir un certain temps pour l'apprendre. Dans une question de l'OS sur Comment apprendre Haskell une réponse indique qu'il faudra des mois, voire des années, pour le "maîtriser" réellement.

Maintenant, je connais le C, le PHP, quelques trucs orientés objet, etc. Et comme on m'a dit que Haskell n'est pas très utilisé dans le "monde réel", ne vaudrait-il pas mieux que j'améliore mes compétences dans les langages ordinaires que je connais ? Haskell vaut-il la peine de se battre ?

Dans cette question sur Pourquoi les gens pensent que la programmation fonctionnelle va s'imposer la conclusion semble être que la programmation fonctionnelle va "s'imposer". Mais la programmation procédurale restera sûrement au sommet, n'est-ce pas ?

EDIT : keparo clarifie joliment ma question : Par opposition aux langages procéduraux, me sera-t-il utile d'étudier Haskell et les paradigmes de programmation fonctionnelle ?

53voto

Rayne Points 14518

Haskell n'est pas aussi difficile à apprendre qu'on veut bien le dire. Haskell vous ouvre un nouveau monde dont vous ne soupçonniez pas l'existence. Il est aussi utile à apprendre que n'importe quel autre langage. Il se peut que vous ne trouviez pas un emploi nécessitant de programmer en Haskell, mais cela signifie-t-il vraiment qu'un langage n'a pas de valeur ?

Haskell vous apprendra beaucoup de nouvelles choses et vous montrera comment programmer encore mieux dans les langages avec lesquels vous travaillez. Vous pouvez réaliser vos propres projets personnels pendant votre temps libre avec ce langage.

Haskell n'est pas vraiment utilisé dans le "monde réel" si vous définissez le "monde réel" comme un "générateur d'argent". Donc si c'est votre objectif, vous devriez peut-être revoir vos objectifs :p

De plus, je n'aime pas vraiment cette partie de la réponse choisie "comment apprendre haskell". Il faut des mois ou des années pour maîtriser n'importe quel langage, pas seulement Haskell. Cela dépend de la façon dont vous définissez "maîtriser". Je peux utiliser Haskell avec un assez bon degré d'efficacité et je ne l'ai appris que depuis un mois, et j'y suis allé doucement.

20voto

aneccodeal Points 3176

Le changement d'état d'esprit que procure l'apprentissage de Haskell vous sera utile lorsque vous devrez revenir aux langages procéduraux qui sont encore utilisés sur le lieu de travail.

Le paradigme fonctionnel commence à faire son chemin dans diverses applications et langages grand public. Même le C++ va ajouter un lambda (paralysé) dans C++0x.

Vous pouvez également vous intéresser à certains langages hybrides comme Scala ou OCaml. Scala est utilisé par Twitter, et OCaml est utilisé par Jane's Street dans une plateforme d'échanges financiers.

10voto

keparo Points 13747

Vous ne devez probablement pas vous attendre à utiliser Haskell aussi souvent qu'un langage de la famille C dans un cadre professionnel. Si la question est de savoir s'il vous sera utile d'étudier Haskell et les paradigmes de programmation fonctionnelle, la réponse est oui. Vous pourrez appliquer votre compréhension enrichie de la programmation à l'ensemble de votre travail.

8voto

Andrew Points 783

J'ai appris Haskell parce que c'était de loin le meilleur langage fonctionnel que j'ai essayé parmi Scala, Clojure, OCaml et Scheme, mais je ne m'attendais pas sérieusement à l'utiliser pour mon travail.

Il s'avère qu'il est parfait pour les petits travaux qui sont trop petits pour une équipe et qui prendraient trop de temps en Java. Jusqu'à présent, je l'ai utilisé pour des migrations de données ad hoc, c'est-à-dire pour transformer des exportations CSV en un autre format, pour des conversions par lots de XML (HXT est plus concis et plus puissant que XSLT), pour faire du screen-scraping sur Internet et pour estimer des projets logiciels, y compris la modélisation des risques à l'aide de la monade de probabilité et la production de diagrammes de Gantt optimaux à l'aide du backtracking. Il s'agit d'un travail réel qui devait être fait, que je n'aurais même pas pris la peine d'essayer de faire en Java, car cela aurait pris plusieurs jours.

Je l'utilise maintenant à la place d'Excel pour tout ce qui est vaguement mathématique, car il n'est guère plus difficile de créer une liste de valeurs en source haskell dans un éditeur de texte que de les saisir dans Excel. Une fois dans haskell, je peux alors faire toutes sortes de magie comme le retour en arrière, les distributions de probabilité, etc. qu'Excel ne peut pas faire. Si j'ai besoin d'un graphique, je sors les valeurs en CSV (2 lignes de code) et je les charge dans Excel.

Le seul inconvénient est qu'il faut plusieurs mois pour devenir compétent, mais cela en vaut la peine, à mon avis.

7voto

Don Stewart Points 94361

Par opposition aux langages procéduraux, me sera-t-il utile d'étudier Haskell et les paradigmes de programmation fonctionnelle ?

Si le fait de disposer d'un ensemble de compétences élargi est utile, alors : oui.

Un avantage que vous pourriez saisir : la programmation parallèle et concurrente. Les langages procéduraux du passé ont tendance à ne pas avoir de notion claire des effets secondaires, ce qui fait qu'il est difficile d'écrire correctement des programmes parallèles dans ces langages. Les langages fonctionnels (en particulier, ceux qui limitent les effets secondaires comme Haskell) ont beaucoup plus à dire sur la programmation parallèle productive.

Avoir cette compétence dans sa manche ne peut pas faire de mal.

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