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, Expert éminent sénior
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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de oca oca - Membre averti https://www.developpez.com
le 24/08/2010 à 9:40
Je suis plutôt dans le monde JAVA. En regardant un peu haskell, j'ai été très intéressé par l'idée de la séparation du code qui interagit avec l'extérieur, de celui qui traite purement les données. J'avoue que cela me rendrait bien service en JAVA... ou il est si facile de tout mélanger...
Avatar de Alp Alp - Expert éminent sénior https://www.developpez.com
le 24/08/2010 à 15:00
Citation Envoyé par oca  Voir le message
Je suis plutôt dans le monde JAVA. En regardant un peu haskell, j'ai été très intéressé par l'idée de la séparation du code qui interagit avec l'extérieur, de celui qui traite purement les données. J'avoue que cela me rendrait bien service en JAVA... ou il est si facile de tout mélanger...

Disons qu'en plus de ne pas être aidé par le langage pour ça, les développeurs Java et autres se foutent pas mal de bien séparer les données de leur manipulation ET des intéractions de ces dernières avec l'extérieur. Généralement tout est "bêtement" mélangé ce qui fait de jolis spaghettis et rentabilise le budget "debugging" du projet
Avatar de CthulhuBoy CthulhuBoy - Nouveau Candidat au Club https://www.developpez.com
le 12/09/2010 à 18:58
Bonjour

A lire ce fil on pourrait penser qu'Haskell est un langage difficile d'approche.
C'est totalement faux !
J'ai plus de 40 ans, je ne suis pas programmeur, je suis curieux, j'ai un niveau correct en Math (niveau que doit avoir n'importe quel programmeur) et je peux vous assurer qu'Haskell est réellement facile d'accès et jubilatoire.
Je pense même que cette simplicité en fait le meilleur langage pour une introduction à la programmation fonctionnelle.

Yves
Avatar de OPi OPi - Membre actif https://www.developpez.com
le 19/09/2010 à 0:35
Une remarque rétrospective.

Il me semble que le côté mathématique que l'on colle aux langages fonctionnelles c'est que l'on appelle théorie de la calculabilité, une branche de l'informatique théorique, qui est elle-même une branche des mathématiques.
Et l'informatique théorique c'est vraiment des mathématiques (et/ou de la logique), même que ça existait avant l'informatique !

Maintenant ce qui me trouble c'est que l'on masque le caractère mathématique des autres langages.
Car l'origine de l'informatique théorique c'est des tentatives de formaliser la notion de calculabilité. Et pour ce qui nous occupe deux tentatives se sont confrontées, avant de se rejoindre car équivalentes, le calcul lambda et les machines de Turing. Ce qui, il me semble, correspond assez bien aux langage fonctionnels et aux langage procéduraux. Soit des mathématiques ET des mathématiques.

Pour l'aspect procédural il y a l'exemple classique de la recette de cuisine à suivre étape par étape, qui est aussi l'image classique utilisée pour expliquer la notion d'algorithme. Quelle image conviendrait pour l'aspect fonctionnel ? Là je ne vois pas très bien... Peut-être que trouver une telle image nous éclairerait sur les difficultés de ce genre de langages à se répandre...
Avatar de pcaboche pcaboche - Rédacteur https://www.developpez.com
le 19/09/2010 à 22:09
Citation Envoyé par OPi  Voir le message
Pour l'aspect procédural il y a l'exemple classique de la recette de cuisine à suivre étape par étape, qui est aussi l'image classique utilisée pour expliquer la notion d'algorithme. Quelle image conviendrait pour l'aspect fonctionnel ?

C'est une très bonne métaphore.

Disons que la finalité est la même, mais la manière de faire est différente.

Par exemple, pour couper des patates, en procédural on fera certainement une boucle. En fonctionnel, on préférera définir une fonction récursive :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
 
Soit rec couper_les_patates  
   est_de_taille_acceptable boutDePatate 
= 
  si est_de_taille_acceptable boutDePatate 
    retourne [boutDePatate] 
  sinon 
    soit (bout1, bout2) = couper boutDePatate 
    retourne concat (couper_les_patates bout1) (couper_les_patates bout2) 
;;
À noter que la fonction couper_les_patates prend en paramètre la fonction est_de_taille_acceptable, ce qui en fait une fonction d'ordre supérieur.

À noter que grâce à l'inférence de type, ça marche aussi avec des carottes ou des poireaux.

Par ailleurs, la recette de cuisine à suivre étape par étape, c'est bien quand on cuisine tout seul chez soit. Maintenant imaginons que l'on fasse de la cuisine parallèle dans un restaurant 5 étoiles, avec plusieurs commis de cuisine qui peuvent cuisiner en même temps. Là, le plus gros du travail sera de synchroniser les commis pour envoyer tous les plats en même temps.
Avatar de kaukau kaukau - Membre du Club https://www.developpez.com
le 05/10/2010 à 12:19
Hello,
je suis daccord avec CthulhuBoy, Haskell est jubilatoire!
Je programme tous les jours en Haskell. C'est un vrai plaisir, meme si ca demande un investissement de depart quand on vient de l'imperatif.

Bien souvent, voir pratiquement tout le temps, une fois que "ca compile"... Ca marche.
J'en suis parfois "sur le cul"! Le systeme de types est tres utile et efficace pour vous aider a ecrire du code juste du premier coup. C'est parfois difficile d'arriver a compiler, mais si ca ne compile pas, c'est que vous n'avez pas bien compris votre probleme...

Pour moi Haskell est "beau", dans le sens mathematique du terme: il permet d'ecrire les choses de maniere simple, concise, comprehensible.
La purete, ainsi que d'autres proprietes d'Haskell comme les fonctions de premiere classe font que le code est selon moi facile a lire et a maintenir. Mais meme en imperatif, je considere la purete comme une propriete importante, et des que possible une fonction devrait etre pure. C'est tellement plus facile de raisonner sur, transformer ou tester une fonction pure!

Haskell est-il populaire? En France, non. Mais j'ai l'impression qu'il devient de plus en plus populaire a l'etranger...
Et il est vrai que la communaute est tres sympatique... Mais pas francophone.
Avatar de viro viro - Nouveau membre du Club https://www.developpez.com
le 02/11/2010 à 10:49
Citation Envoyé par Oscar Hiboux  Voir le message
Pourtant la pratique le démontre souvent. Prends par exemple un script ECMA écrit par un programmeur moyen, transforme le avec ton esprit si brillant et mets-y quelques fonctions anonymes, fermetures & compagnie. Quand le reste de l'équipe jetteront un œil à ton travail ils seront très probablement atteint d'irritation oculaire aigüe... Eh ouais, leur cerveau n'est pas prêt à assimiler ton génie.

Contre-exemple : jquery.
Avatar de viro viro - Nouveau membre du Club https://www.developpez.com
le 02/11/2010 à 10:54
Citation Envoyé par Oscar Hiboux  Voir le message
La plupart des informaticiens dignes de ce nom ayant étudié en informatique et l'informatique, notamment la programmation, étant une discipline impliquant largement les mathématiques on en est quand même assez proche...

Ma compagne est prof de math. Pour motiver des BTS IG (informatique de gestion), elle m'a demandé (je suis développeur) quel genre de math ils auraient besoin.

J'ai pas trop su quoi lui répondre. En caricaturant, pour faire une gestion de stock, une prise de commande, une facturation, que sais-je... Il faut du très haut niveau comme l'addition, soustraction, multiplication, division.... Voire même maitriser la règle de trois.
Avatar de OPi OPi - Membre actif https://www.developpez.com
le 03/11/2010 à 2:09
Citation Envoyé par viro
Ma compagne est prof de math. Pour motiver des BTS IG (informatique de gestion), elle m'a demandé (je suis développeur) quel genre de math ils auraient besoin.

À chaud là comme ça, je dirais le principe de récurrence, ça devrait facilité l'apprentissage de la récursivité. C'est un truc important à comprendre pour utiliser un langage fonctionnel. Il me semble ?
Avatar de Alp Alp - Expert éminent sénior https://www.developpez.com
le 03/11/2010 à 19:55
En programmation fonctionnelle, on parle plutôt de récursivité (une fonction récursive est une fonction qui s'appelle elle-même dans son code). C'est différent, même si ça fait un peu appel au même genre de raisonnements.
Avatar de pcaboche pcaboche - Rédacteur https://www.developpez.com
le 04/11/2010 à 12:05
Citation Envoyé par viro  Voir le message
J'ai pas trop su quoi lui répondre. En caricaturant, pour faire une gestion de stock, une prise de commande, une facturation, que sais-je... Il faut du très haut niveau comme l'addition, soustraction, multiplication, division.... Voire même maitriser la règle de trois.

Pour ce genre de système, il faut des bases de données, donc de l'algèbre relationnelle.

Et puis faire un système de données pour 1 utilisateur, c'est bien. Mais faire un système de données pour de multiples utilisateurs, des accès concurrents, des volumes de données importants et parfois distribués, ça demande un minimum de logique et d'optimisation.

Pour l'informatique en général, il faut aussi de l'algèbre de Boole, de la logique des prédicats, des calculs de complexité d'algorithme, etc.
Offres d'emploi IT
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil