L'utilisation d'un langage de programmation approprié permettrait une réduction considérable des dépenses
Un développeur recommande Haskell

Le , par Stéphane le calme, Chroniqueur Actualités
Aaron Contorer, ancien employé Microsoft et fondateur de la compagnie FPComplete, une plateforme de développement Haskell, se fait promoteur de ce langage de programmation fonctionnel. Dans un petit exposé, il explique les avantages qu'offre Haskell aux entreprises.

« Des milliards de dollars sont gaspillés à cause de l'excès de défaillance des projets, corrections de bugs et maintenances cauchemardesques » explique Contorer qui rappelle que de nombreuses études ont démontré que les maintenances et corrections de bugs consomment à elles seules 50 à 75 % des projets informatiques. Pour lui, l'une des raisons de ces problèmes est l'utilisation de langages traditionnels à l'instar de Java, C/C++/C# , Python, ou encore Ruby pour ne citer que ceux-là. Il estime que l'approche est très sujette aux erreurs et génère du « code spaghetti qui dévore les coûts finaux. ».

Il explique que ce problème est relativement méconnu et perpétué parce que la grande majorité des programmeurs ne connaissent pas d'alternative viable et se contentent d'arrondir les angles de plusieurs façons : utilisation de meilleurs outils, développement Agile etc. Il précise que ce ne sont pas des solutions mais des contournements du problème.

Pourquoi Haskell serait une alternative viable ? Parce que son approche est fondamentalement différente des langages dominants d'aujourd'hui. Les programmes Haskell sont une série de fonctions généralisables de haut niveau qui définissent ce que le programme est censé faire. Le programmeur se concentre sur l'objectif, les meilleures conceptions et logiques pour apporter un résultat spécifique souhaité. Le compilateur produit du code propre, concis et correct. Contorer a d'ailleurs cité les nombreux avantages techniques de l'utilisation d'Haskell :

  • une réduction des lignes de code de 50 à 80 % ;
  • une réduction considérable des erreurs ;
  • une réduction considérable de la découverte et de la correction d'erreurs au moment de la compilation ;
  • maintenance du code facilitée et modification sans introduction d'erreurs ;
  • plus sécurisé car moins de failles exploitables.


Selon lui, tous ces avantages techniques auront pour conséquence d'accélérer le temps de mise sur le marché de 30 à 50 %, de réduire les coûts d'au moins 25 %, d'accroître la productivité du programmeur d'au moins 30 % mais surtout d'améliorer la qualité du produit.

« Ruby et Python sont populaires parce qu'ils permettent un prototypage rapide, surtout dans le développement d'applications web. Toutefois, ils sèment les graines de futurs problèmes dans les performances, la fiabilité, l'évolutivité et la dépendance qui rend la maintenance cauchemardesque. » affirme-t-il. D'ailleurs, selon lui, il est amplement prouvé que Haskell peut les résoudre.

A titre d'exemple pour illustrer ses dires, il cite Janrain qui, après avoir connu des taux élevés d'échec avec Ruby, a commencé à utiliser Haskell et a pu réduire de 75 % le temps qu'il consacrait à des corrections de bugs. D'ailleurs le NYT a déclaré utiliser Haskell pour présenter sa semaine de la mode qui est une application avec des quantités massives d'images et d'analyses.

Le rédacteur en chef Andrew Binstock de Dr. Dobb a tweeté récemment « J'ai remarqué plusieurs fois quand quelqu'un dit, "X a vraiment changé ma façon de penser sur la programmation," fréquemment X = Haskell. » Karthikeyan Mani, co-fondateur de Byteally en Inde a dit « C'est la façon naturelle de programmer. C'est la première fois que je suis en paix quand je code. Avec Ruby, c'est toujours des maux de tête et des énervements. Nous nous éloignons de la programmation traditionnelle ».

Source : Mozilla Open News, étude FPCompete, cas Janrain (au format PDF), blog FPCompete

Et vous ?

Avez-vous déjà utilisé Haskell ? Qu'en pensez-vous ?

Partagez-vous le point de vue de Aaron Contorer ?


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


 Poster une réponse

Avatar de Enerian Enerian - Membre éclairé http://www.developpez.com
le 14/10/2013 à 20:23
Les langages de programmations sont des outils créés pour répondre à des besoins. Chacun a ses qualités et ses défauts, et certains sont mieux conçus que d'autres.
Les programmeurs ont des outils de prédilection, des préférences. Mais aucun outil n'est LA solution universelle. Aucun outil n'est adapté à TOUS les problèmes.
Ce n'est pas parce qu'un homme (ou une équipe) a découvert un langage adapté à ses besoins et qu'il apprécie en tant que programmeur que ça en fait une solution universelle ! On peut trouver aux quatre coins du net des personnes qui te diront la même chose en remplaçant "Haskell" par "Python", par "Erlang", par "Go", par MetIciCeQuiTeFaitPlaisir…
Avatar de phili_b phili_b - Expert confirmé http://www.developpez.com
le 14/10/2013 à 20:30
Mouais article complétement illogique.

Ça commence bien en parlant de langage approprié, c'est-à-dire un langage pour un problème donné, et ça part tout de suite en vrille en préconisant un langage qui peut faire le café et répondre à n'importe quel problématique.

Ce langage que je ne connais pas, le Haskell, est sans doute super génial mais c'est impossible qu'il puisse répondre aux besoins de bas niveau, comme aux besoin de haut niveau, comme à l'informatique de gestion qui se trouve entre les deux.

En fait le présenter comme un concurrent à la fois de java, C++, et Python est aussi risible car chacun a un domaine d'utilisation différent.
Avatar de Jarodd Jarodd - Membre expérimenté http://www.developpez.com
le 14/10/2013 à 21:02
Il faut donc utiliser un langage appropié selon le besoin, mais utiliser Haskell ! Ah bon, celui-ci répondrait donc à tous les besoins possibles ?

Ou bien "un développeur" qui parle est développeur Haskell et prêche pour sa paroisse parce qu'il n'y a pas beaucoup de boulot sur ce langage ?
Avatar de spyserver spyserver - Membre averti http://www.developpez.com
le 14/10/2013 à 21:12
Tiens c'est marrant ça me rappel le débat que j'ai eu avec un collègue pro-Haskell (et autre langage fonctionnel), ce que l'article oublie de dire c'est que la syntaxe du code Haskell est inbouffable et pas très user friendly, les puristes vont me dire qu'on s'en fou, un langage ça reste un langage blablabla mais bon voila, le fait est la, ça explique pourquoi il nécessite bien moins de ligne justement, et c'est pas le 1er langage à faire ça ! Mais comme tjrs les puristes de ces langages sont certes dans le vrai pour le niveau de performance de ces langages qui reste imbattable mais pour tous le reste, il faudra revoir la copie, comment ces langages s'embarquent ou s'imbriquent dans des architectures existantes, proposent-ils des frameworks adaptés à tous les contraintes "rééls" des projets actuels ? (drivers Oracle ou NoSQL proposés ? etc. etc.). Je pense pas que le Graal existe ds les langages de programmation, ils sont juste chacun bons dans un domaine mais ne peuvent l'être dans tous. Point.
Avatar de RaphAstronome RaphAstronome - Membre actif http://www.developpez.com
le 14/10/2013 à 21:18
code spaghetti qui dévore les coûts finaux

Dites moi si je dis une bêtises mais ce que l'on appelle "code spaghetti" c'est bien un code avec des sauts non structurés, typiquement des goto ?

C'est plus très courant ce genre de chose surtout dans des langages comme Python ou Ruby où je ne crois pas que ça existe réellement du moins dans le langage de base.
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 14/10/2013 à 21:20
Pour avoir un peu joué avec, je pense qu'Haskell est un langage très intéressant d'un point de vue académique ; et c'est vrai qu'en général on a moins de surprises (et donc moins de bugs) qu'avec des langages plus traditionnels, c'est une des conséquences de l'approche fonctionnelle.

Par contre je suis un peu sceptique sur la possibilité de développer de "vraies" applications avec ce langage. Haskell est un langage fonctionnel pur, c'est à dire qu'il ne permet pas les effets de bord (du moins pas directement). Or, toute application concrète nécessite forcément des effets de bord : afficher un texte à l'écran est un effet de bord ! Evidemment, il est possible de le faire en Haskell, indirectement, via les monades ; mais comprendre le concept des monades, c'est tout sauf intuitif. Ca m'a pris très longtemps rien que pour comprendre à peu près en quoi ça consistait.

Bref, l'approche fonctionnelle a beaucoup de qualités, mais à mon avis un langage fonctionnel un peu plus pragmatique qu'Haskell (comprendre : pas purement fonctionnel) serait sans doute plus approprié pour faire de vraies applications concrètes. D'autant plus que la syntaxe de Haskell est relativement imbitable au début, avec plein d'opérateurs bizarres dont la signification n'est pas évidente du tout car ils représentent généralement à des fonctions d'ordre supérieur (higher-order functions, c'est à dire des fonctions qui manipulent des fonctions)

Cela étant dit, ce n'est pas une raison pour ne pas apprendre Haskell ; je l'ai fait il y a 2 ans par curiosité, et c'est vrai que ça ouvre l'esprit sur une façon très différente de programmer (surtout pour quelqu'un qui vient des langages procéduraux et orientés objet). Pour ceux que ça intéresse, je recommande vivement ce tutoriel : Learn You a Haskell for Great Good

Pour donner un avant-goût des possibilités, voilà à quoi peut ressembler un quicksort en Haskell :

Code Haskell : Sélectionner tout
1
2
3
4
5
6
quicksort :: Ord a => [a] -> [a] 
quicksort []     = [] 
quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) 
    where 
        lesser  = filter (< p) xs 
        greater = filter (>= p) xs

Difficile de faire plus concis... l'implémentation correspond de très près à la description de l'algorithme.

(évidemment cette implémentation est un peu simpliste ; elle n'est pas "in-place", et utilise toujours le 1er élément comme pivot, ce qui n'est pas idéal)

Bref, pour conclure, c'est un langage super, mais je me vois mal développer des applis complètes avec ça... Ce qui peut être intéressant, par contre, c'est d'utiliser Haskell pour les parties métier où il y a des algorithmes complexes, et autre chose pour la partie UI.
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 14/10/2013 à 21:23
Citation Envoyé par RaphAstronome  Voir le message
Dites moi si je dis une bêtises mais ce que l'on appelle "code spaghetti" c'est bien un code avec des sauts non structurés, typiquement des goto ?

Pas forcément... on peut faire du bon code spaghetti sans jamais utiliser goto
En gros c'est du code complexe, mal structuré, avec beaucoup de dépendances entre les différents modules. Quand tu modifies un truc quelque part, tu n'es jamais sûr que ça ne va pas casser quelque chose à un autre endroit, même s'il n'y a pas de lien évident.
Avatar de transgohan transgohan - Expert confirmé http://www.developpez.com
le 14/10/2013 à 21:24
Haskell est en fait une belle bête (même si je ne l'ai jamais pratiqué).

Il permet par exemple de faire du temps réel et du système embarqué, allant même jusqu'à un temps de granularité d'une milliseconde.
Bon après c'est ses retranchements les plus critiques et c'est pas donné à tout le monde de l'utiliser ainsi... On ferra pas de systèmes demandant un niveau encore plus critique avec.

A ce que j'avais lu dessus il est aussi capable de tenir la charge dans le traitement des grosses données.

Après, avis perso, sa syntaxe est à vomir et je comprends pourquoi il n'évolue que dans le domaine de la recherche (qui est aussi très friand des langages tels que Prolog ou Lisp).
Avatar de laerne laerne - Membre éclairé http://www.developpez.com
le 14/10/2013 à 23:24
1ère chose, l'article suggère Haskell pour les domaines suivant :
Two commercial applications Haskell is ideal for stand out:
1. Enhancing existing software environments such as Ruby and Python.
2. Proprietary business logic and data analysis.

Et*:
Another noteworthy Haskell benefit is performance.

Pour le reste il parle pas de «*language adapté*».

J'ai déjà utilisé Haskell pour faire un raytracer, et c'est vrai que les erreurs ont été exclusiment*:
* mathématique (erreurs dans les algorithmes)
* de compilation
Maintenant au niveau de la compilation, quelle dureté avec le typage. Tout les cast doivent être explicites. Seul le fait qu l'on utilise silencieusement des méthodes templates permet de s'en sortir un peu. Les runtimes errors avait disparu au prix d'une compilation plus douloureuse mais tout de même préférable je pense.

Quand au commentaire du dessus qui se plaint de sa syntaxe, je répondrais que c'est bien comme du chinois. Non la syntaxe n'est pas si horrible (en tout cas pas plus que le C++), mais elle est tellement différente de ce que cette communauté est habituée.
Tout comme le chinois est tellement différent du français/anglais/allemand/espagnol que vous peinerez probablement bien le jour où vous voudrez l'apprendre, l'haskell demande de recommencer presque à zero. (Alors que pour moi le java, le C++ et le C# sont plus comme des patois éloignés comme le sont le danois, le norvégien et le suédois) Comme le C, la syntaxe d'Haskell s'inspire des notations mathématiques, mais de manières encore plus proche. Vous n'écrivez pas une fonction comme un algorithme comme en C, mais plutôt comme une espèce de formule, vraiment plus proche de comme on le fait de manière mathématique. C'est pas seulement une syntaxe différente, c'est carrément une manière de penser différente.
Avatar de JeyJer JeyJer - Nouveau Candidat au Club http://www.developpez.com
le 14/10/2013 à 23:55
"Il n'y a pas de mauvais langage... Il n'y a que de mauvais développeurs".
Offres d'emploi IT
Analyste SI-métier (H/F)
Société Générale - Ile de France - Val-de-Marne
Expert sécurité en audit d'applications (H/F)
Société Générale - Ile de France - Val-de-Marne
Architecte fonctionnel et applicatif (H/F)
Société Générale - Ile de France - Val-de-Marne

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