IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage Haskell est-il suffisamment populaire
Dans l'industrie ? Non répond un développeur, qui propose des pistes de réflexion

Le , par Idelways

20PARTAGES

1  0 
Haskell est un langage de programmation fonctionnel fondé sur le lambda-calcul et la logique combinatoire. Créé en 1985, il doit son nom au mathématicien Haskell Brooks Curry.

Bien qu'ayant bénéficié d'énormément de recherches, il semble pourtant peiner à imposer.

C'est en tout cas la vision des choses de certains développeurs.

Sam Martin est un développeur Anglais, chef de projet à Geometrics où il travaille sur « Enlighten », une plateforme d'éclairage et de radiosité en temps-réel pour les jeux vidéo.

Dans un article sur son blog, il analyse les raisons de l'impopularité du langage de programmation fonctionnel « Haskell » dans le milieu industriel alors que celui-ci n'est pas dénué de qualité dans cet univers. Bien au contraire, il aurait tout pour s'y imposer.

Sam Martin avance plusieurs pistes – dont certaines plus ou moins ironiques – pour expliquer cet état de fait.

Tout d'abord « personne n'entend parler » de Haskell. Ce qui expliquerait qu'il soit « impopulaire » puisque l'on confondrait trop souvent popularité et qualité.

Cette impopularité le rendrait également « risqué ». Aucune entreprise ne veut être la première à l'utiliser surtout qu'il est difficile de recruter des développeurs maitrisant Hashkell. Ou à les y former.

Haskell serait enfin, et surtout, « différent » et la différence fait peur. Elle donnerait l'impression que le langage est difficile et liée à une communauté élitiste.

Mais la raison la plus importante, selon l'auteur, serait ses librairies. Elles seraient nombreuses mais de pas assez « bonne qualité », et « déconnectées du monde réel » et accusant de « multiples incompatibilités ».

Aussi, les plus importantes librairies ne peuvent « compiler sous Windows ».

L'« imprévisibilité des performances » des programmes écrits en Haskell seraient donc un frein à son adoption.

La conclusion, plus générale, de Sam Martin, pose la question de savoir où se situe l'objectif principal des sociétés.

Pour lui, elles ne sacrifieraient la correction et la qualité d'un code au bénéfice d'une sortie rapide, quitte à facturer les corrections par la suite aux clients.

Une logique ô combien contraire à Haskell. Et finalement le plus gros frein à son développement.

Une question de mentalité en quelque sorte ?

Et vous, en tant que développeur ou manager, quelles sont les raisons qui vous empêchent (ou vous empêcheraient) d'utiliser Haskell dans votre entreprise ?

Pensez-vous que les sociétés sacrifient la correction et la qualité d'un code au bénéfice d'une sortie rapide ?

Source : Blog Sam Martin

Lire aussi :

L'inventeur du XML plaide pour la programmation concurrente et fonctionnelle, elle serait mieux adaptée aux progrès liés aux CPU multi-coeurs

Qu'est-ce qu'un langage fonctionnel

Les rubriques (actu, forums, tutos) de Développez :

Langages
Forum Haskell
Solutions d'entreprise

En collaboration avec Gordon Fowler

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Alp
Expert éminent sénior https://www.developpez.com
Le 10/08/2010 à 15:45
Haskell n'a été fait ni par des mathématiciens, ni pour des mathématiciens. Il a été créé par des chercheurs en informatique, tout comme la plupart des langages qui existent.

Evidemment le post juste avant le mien est un ramassis de bêtises assez impressionnant. Il n'y a qu'à aller voir les perfs de Haskell sur le "language shootout"... Il se place souvent entre C++ et Java, bien qu'il arrive qu'il soit derrière Java.

Ensuite, les langages fonctionnels ne sont pas moins lisibles. C'est juste que le cerveau de 99.99999% des gens ici est formaté à l'OO ou au procédural. Et à des types de syntaxe très proches. Là ça change, et du coup faut se réadapter, c'est vrai que c'est beaucoup demander à un grand nombre d'entre vous. Pour les types, tu ne sais pas vraiment combien c'est important avant de programmer avec OCaml ou Haskell, leurs systèmes de type sont bien plus complet que les bêtes systèmes de type d'OO de Java, C# et compagnie.

De toute manière ça servirait à rien de trop développer le sujet ici bien que j'aurais beaucoup à dire, parce que 99.9999% d'entre vous sont trop fermés pour ne serait-ce qu'être réceptifs à une explication détaillée des avantages et défauts ***REELS*** d'Haskell, et non pas les bêtises balancées ici par 2 ou 3 clampins qui n'y connaissent rien.
1  0 
Avatar de pcaboche
Rédacteur https://www.developpez.com
Le 11/08/2010 à 0:58
Ce point là me paraît très important :
Correctness. Most companies don’t give a **** about correctness. They don’t care about quality. They just want to shovel code out the door as fast as possible and earn wads of cash. If there are bugs, they’ll charge the customer money to fix them. Getting code right is of no interest; getting code fast is what counts. Haskell is a language that rewards those who sit back and deeply analyse the problem, and then produce a beautiful solution. Most companies don’t care for this approach; let’s just hack something together as fast as possible, and worry about fixing it later (i.e., never).
Les 2 seules questions qui intéressent le client sont :

  1. combien ça va coûter ?
  2. quand est-ce qu'on est livré ?

Le reste, il s'en fout.

En effet, essayez donc de dire à votre client : "je peux vous faire votre projet, mais ça prendra un peu plus de temps et coûtera donc un peu plus cher. En contrepartie, le programme sera mieux écrit et plus correct", comme ça, juste pour rigoler. Il y a de fortes chances que votre client confie le projet à un concurrent...

Le client ne voit quasiment jamais à long terme. Il choisit l'offre la moins chère, et quand les problèmes arrivent, il paye des correctifs.

Le client ne sait pas définir ses besoins, il veut "un truc qui marche" mais il ne sait pas dire comment. Et puis il change tout le temps d'avis, donc ça sert à rien de faire un truc bien pensé dès le départ.

Le client se fout de la flexibilité. Si le produit ne peut pas s'adapter au besoin, et bien on facturera une fonctionnalité supplémentaire.

Sachant tout cela, autant faire un truc "vite fait, mal fait" et pas cher. Une fois qu'il est coincé avec votre architecture bancale, vous pouvez le saigner avec des correctifs et des mises à jour.

Le "vite fait, mal fait" fait vivre pas mal de monde :
- le consultant qui arrive tel le chevalier blanc en criant fièrement: "pour améliorer la qualité logiciel, on n'a qu'à faire plus des tests" (et par "on", il veut dire "VOUS". Les tests, c'est bien, mais ça ne fait pas tout. De plus, cela implique de détecter les erreurs à l'exécution... c'est-à-dire un peu tard. Ne serait-il pas mieux de réfléchir à un moyen de détecter plus d'erreurs à la compilation ? Surtout pas ! Réfléchir, c'est perdre du temps sur l'implémentation, t'arriveras pas à atteindre les objectifs du sprint...

- le ScrumMaster, qui fixe les objectifs à atteindre pour la fin du sprint. Ce qui compte, c'est ce que ça marche (même mal) à la fin du sprint. Le reste on verra après. Pas le temps de réfléchir, code !

- le responsable Software Quality Assurance qui vous dit comment bien coder... avec de mauvais langages. Il explique aussi comment faire de la documentation, des procédures, des contrôles... On vous explique même "la programmation pour les nuls", c'est à dire comment coder pour que même un gros nul ait une chance de vous comprendre (au détriment de tout le reste bien sûr: qualité de code, performances, etc.). Parce que des nuls, il y en a beaucoup... et même des fois ce sont ceux qui vous expliquent comment gérer votre projet...

On dirait que toutes les méthodes liées à la gestion de projet convergent vers le même objectif : produire du code en masse, ainsi que toute la documentation, les tests et les procédures qui vont avec. C'est à croire que tout ce beau monde est payé au poids !

C'en est à un point où lors d'un entretien d'embauche, on entend parfois la question: "et quelle est le plus gros projet sur lequel vous ayez travaillé en terme de nombre de lignes de code ?". Autant dire que je n'ai pas donné suite.

Je suis désolé, mais le "nombre de lignes de code" n'a jamais été une unité pour mesurer ni la complexité d'un programme, ni l'état d'avancement d'un projet, et surtout pas la qualité logicielle ! Le "nombre de lignes de code" ne sert à mesurer qu'une chose : le facteur "ce programme est une vraie usine à gaz".

Cependant le "nombre de lignes de code" est une unité mesurable, alors que la "qualité logicielle" peut difficilement être mesurée. Or pour récompenser les gens, on a besoin de quantités mesurables, comme la production de code, de tests, de documentation, de procédures... L'ère du Stakhanovisme logiciel est en marche !

Maintenant, émettons une hypothèse : "et si le développement logiciel était exactement l'inverse de ce qui a été dit précédemment ?", c'est-à-dire :
- prendre le temps de réfléchir au problème plutôt que produire bêtement du code (produire mieux plutôt que produire plus)
- fournir le même nombre de fonctionnalités avec un code avec un code réduit (small is beautiful !)
- factoriser : rendre chaque fonction aussi générale que possible, plutôt que d'écrire des fonctions hyper-spécialisées
- détecter un maximum d'erreurs avant qu'elles ne puissent se produire (à la compilation plutôt que dans les tests)

Quand on voit sur quels critères se base toute l'industrie informatique, on réalise que ceci n'est qu'une douce utopie.

Dans ces conditions, un langage qui ne ressemble à aucun autre, qui oblige à s'arrêter pour réfléchir et qui freine l'obtention d'une promotion parce qu'on ne produit pas assez de code/documentation/procédure... n'a effectivement aucune chance de percer dans l'industrie.
1  0 
Avatar de zaventem
Membre expérimenté https://www.developpez.com
Le 11/08/2010 à 14:16
Citation Envoyé par Alp Voir le message
Dans la boîte d'info moyenne oui.
Ce sont ces boites qui représentent la très grande majorité des besoins.
1  0 
Avatar de zaventem
Membre expérimenté https://www.developpez.com
Le 13/08/2010 à 9:29
Citation Envoyé par zul Voir le message
Si l'OO était une approche si efficace, pourquoi 90% des projets informatiques continuent d'échouer ?
Parce qu'en général, les raisons des échecs sont à des années lumières de la technique
1  0 
Avatar de bhamp0
Membre averti https://www.developpez.com
Le 09/08/2010 à 13:29
Haskell est très peu répandu en France ... Globalement, j'ai fait de l'ocaml en France et du Haskell au Royaume-Uni.
Mais à l'heure actuelle, allez sur Monster, et faites une recherche du terme "Haskell" sur le territoire national : il n'y a pas d'offre. S'il n'y a pas d'offre, il n'y aura pas de demande
0  0 
Avatar de david06600
Inactif https://www.developpez.com
Le 09/08/2010 à 13:38
Citation Envoyé par bhamp0 Voir le message

Mais à l'heure actuelle, allez sur Monster, et faites une recherche du terme "Haskell" sur le territoire national : il n'y a pas d'offre. S'il n'y a pas d'offre, il n'y aura pas de demande
Pareil pour Caml ou Ocaml sur Monster. Je pense qu'il y a pas vraiment de demandes de développeurs sur un langage fonctionnel. Les entreprises n'y voient pas d'avantages et ne connaissent pas vraiment, ou ne sont pas prêtes à investir.
L'aspect mathématique pourrait aussi en refroidir plus d'un, je pense que l'on peut ajouter cela à la liste des raisons.
0  0 
Avatar de csperandio
Membre habitué https://www.developpez.com
Le 09/08/2010 à 13:46
Quelle coïncidence pour moi. Je me suis intéressé à Haskell depuis 2 semaines et je suis en train de lire Real World Haskell. Ce langage est vraiment trés intéressant mais, mon coeur balance entre soit apprendre ce langage soit approfondir mes connaissances Groovy qui mélange programmation objet, impérative et fonctionnelle.
Mon plus gros problème avec Haskell est l'absence d'idée sur ses performances :/ Dans mon travail, je travaille avec des chaines textes que j'analyse, transforme, codifie. Ces données venant essentiellement de fichier texte CSV. Quelq'un sait-il si Haskell est performant pour ce genre de travail ? Cela m'embêterait de prendre de temps à son apprentissage pour à la fin me rendre compte qu'il n'est pas utilisable :/
0  0 
Avatar de ChipsterJulien
Membre du Club https://www.developpez.com
Le 09/08/2010 à 14:42
Citation Envoyé par csperandio Voir le message
Dans mon travail, je travaille avec des chaines textes que j'analyse, transforme, codifie. Ces données venant essentiellement de fichier texte CSV. Quelq'un sait-il si Haskell est performant pour ce genre de travail ? Cela m'embêterait de prendre de temps à son apprentissage pour à la fin me rendre compte qu'il n'est pas utilisable :/
Pour traiter les chaines de caractères, le langage le plus adapté est certainement perl
0  0 
Avatar de palnap
Membre averti https://www.developpez.com
Le 09/08/2010 à 14:44
Je connais pas vraiment Haskell, mais les langages fonctionnels permettent effectivement une productivité accrue (plus d'expressivité => moins de lignes de code => moins de temps passé à coder) mais je pense qu'outre le temps de formation des pros du C++/Java/que-sais-je aux langages fonctionnels (qui nécessitent tout de même un cheminement intellectuel différent), le principal problème est la difficulté lors de la relecture de code.

Je me rappelle d'un point assez intéressant dans la doc de Qt qui pour justifier la verbosité de l'API disait qu'une ligne de code est écrite une fois mais est relue beaucoup plus et qu'il était nécessaire d'adopter une syntaxe et des conventions de nommage allant dans ce sens. Du coup le choix d'Haskell n'est-il pas dangereux en ce qui concerne la maintenance et l'évolutivité d'une app?

De plus, je pense que les langages fonctionnels sont souvent écrits par/pour des mathématiciens, je ferai donc moyennement confiance aux types me vantant leur simplicité et leur adéquation au milieu industriel !
0  0 
Avatar de lex2004
Membre régulier https://www.developpez.com
Le 09/08/2010 à 14:44
L'impression que j'en ai toujours eu c'est que c'est clairement un truc de fac.
0  0