Interview : les forces de Haskell

Interview : LeMag SFEIR Haskell

Nos Sfeiriens Emmanuel et Sébastien se sont entretenus avec les ceintures noires du Dojo que sont Christophe Thibaut et Xavier Detant, pour comprendre toutes les vertus du Haskell. edit : Ces deux derniers avaient animé un handson bien mené lors du dernier DevoxxFR. Une interview passionnante pour tout programmeur !

SFEIR : Comme c’est la coutume, c’est l’heure des présentations ! Un petit mot sur vous à nos lecteurs ?

Xavier Detant : Xavier Detant, je suis consultant chez SOAT et également coach craftsmanship. Qu’est-ce que j’aime dans la vie ? J’aime coder, j’aime aller au Dojo, j’aime découvrir de nouveaux langages… et j’aime manger !

Christophe Thibaut : Je suis Christophe Thibaut, je travaille chez Octo Technology, je suis un facilitateur, un coach agile, un coach craftsmanship aussi.. Je participe au Dojo depuis sa création, celui de Paris en 2003 et ce chaque semaine. Pendant une époque, j’apprenais un langage par an et un jour je suis tombé sur Haskell et je suis resté dessus. Mais je ne travaille pas professionnellement avec. En revanche, je fais plein de katas en Haskell et j’écris des livres sur le sujet, pour l’enseigner. J’adore programmer en groupe (mob, pair programming), faire de la musique, dessiner, entre autres !

SFEIR : Dans quel cadre recommandez-vous l’utilisation d’Haskell ?

Christophe Thibaut : Je pense que je le recommanderai pour un domaine où l’on veut avoir un coeur métier très clair, rigoureusement défini, composable, dans lequel on veut faire évoluer son domaine d’une manière qui soit assez modulaire. Je pense que ça peut s’appliquer à tous les domaines métier : il y a de plus en plus de librairies, de plus en plus d’entreprises qui l’utilisent. Mais j’avoue que je ne suis pas ça de très près. Je reste du côté des débutants, j’aime bien aider les gens à découvrir Haskell, mais je ne suis pas non plus un spécialiste avec des applis super complexes.

Xavier Detant : Je le recommanderai pour le même type d’usage, c’est-à-dire tout ce qui est métier complexe. Je le recommande aussi beaucoup pour essayer d’avoir une autre vision de la programmation. C’est très différent du C#, du Java, où on navigue dans la programmation-objet. Haskell propose autre chose et même si on n’utilise pas Haskell dans ses développements de tous les jours, ça change la façon dont on voit la programmation, même objet, et du coup ça peut nous aider à produire du code beaucoup plus lisible. Haskell force l’orientation vers le langage fonctionnel.

Christophe Thibaut : La courbe d’apprentissage de Haskell apporte assez vite une concision qu’on va mettre plus longtemps à atteindre avec d’autres langages du même type. Et cette concision ne rend pas le code obscur pour autant. En revanche c’est un langage très exigeant sur les types, les messages, etc. C’est intéressant de comparer Haskell avec Elm, parce que la philosophie de Elm c’est Haskell : on veut des fonctions pures. Mais Elm ne va pas décliner ce qu’a décliné Haskell sur les monades et certains types complexes, pour essayer de garder sa base et en estimant que son rôle ne nécessite pas ce genre de chose.

SFEIR : Quels outils / quel environnement conseillez-vous pour débuter l’apprentissage de Haskell ou tout simplement l’exploiter au mieux ?

Christophe Thibaut : C’est difficile pour moi de répondre à ça parce que je ne manipule pas des quantités énormes de code sources en Haskell. Je connais un programmeur qui a développé une application financière très complexe en Haskell, entièrement sous Emacs, ce qui ne s’est pas fait sans mal. Ça serait vraiment intéressant d’avoir un environnement de développement intégré qui tienne compte de toute la richesse du système Haskell. Ça commence à avancer, mais à ma connaissance, il n’y a rien de parfait actuellement. Encore une fois, comme je suis spécialisé dans le code source assez court, pour transmettre des connaissances, je n’ai pas vraiment besoin de ce type d’environnement.

Xavier Detant : Même chose, je travaille sur du code assez petit. En prime, pour un débutant, quel que soit le langage, je conseille de s’y mettre avec un éditeur de texte basique. Que ça soit VIM ou Emacs, je vais éviter d’utiliser des extensions qui m’aideraient dans le langage, pour m’habituer à bosser avec. En dehors de la coloration syntaxique, je ne vais rien rajouter. C’est seulement si je commence à l’utiliser plus que je vais chercher à m’outiller pour m’aider dans ma productivité. Pendant la phase d’apprentissage, mon but n’est pas d’être productif, mais d’assimiler de nouveaux concepts. Ce qui m’amène à totalement ignorer la problématique de l’IDE.

Christophe Thibaut : Je pense que dans les entreprises qui utilisent professionnellement Haskell, ils doivent avoir des outils dédiés.

SFEIR : Vous confirmez donc que c’est un bon langage pour une introduction au fonctionnel ?”

Christophe Thibaut : Oui, je pense vraiment que c’est un excellent langage pédagogique pour appréhender les paradigmes fonctionnels. Pas forcément pour aller jusqu’en production avec, ce n’est pas forcément l’enjeu. Il y a tellement d’éléments qui rentrent en compte dans le choix d’un langage en fonction du projet, que ça dépasse le langage lui-même. Mais pour apprendre les caractéristiques du paradigme fonctionnel, je trouve que c’est ce qui se fait de mieux, malgré son exigence.

Xavier Detant : Pour faire une parenthèse et comparer Haskell et Scala, je dirais que la force d’Haskell, c’est justement d’être exigent et de permettre peu de choses. En revanche, on peut vite faire quelque chose avec Scala, mais en gardant ses “mauvais” réflexes, acquis sur d’autres langages. Son côté multiparadigme autorise un peu tout et n’importe quoi. C’est aussi sa force, mais Haskell va justement obliger à bien comprendre le côté fonctionnel et tout ce qui va avec.

Christophe Thibaut :  

Ce qui est marrant c’est que quand on découvre Haskell, c’est super dur de faire un simple “Print Hello World”.* On peut ruser, mais pour le faire correctement et comprendre ce qu’il y a derrière, c’est plus complexe que de comprendre la composition de fonctions.

Je m’intéresse aux langages qui me placent à un nouveau point cardinal dans ma carte des langages de programmation. Je fais du Haskell comme je peux faire du Forth ou bien du C ou encore un langage-objet comme Smalltalk. Il y a vraiment des patterns et des constructions de caractéristiques qui n’ont rien à voir et c’est ça qui est intéressant. Quand on dit qu’on devrait posséder plusieurs langages, l’important c’est surtout de posséder plusieurs paradigmes. Ça donne plusieurs clés différentes pour penser une chose, pour voir le monde. Ça augmente ma capacité à traiter des problèmes courants dans mon travail, avec Java ou avec C# par exemple.

SFEIR : Merci à vous deux pour toutes ces explications !

 

*Update : suite à de nombreux retours, voici un « Print Hello World » en Haskell : 

 
module Main where 
main = putStrLn "Hello World !"

Vous aimerez aussi...

  • lucas di cioccio

    Hello World avec Haskell:

    $ echo ‘main = print « hello world »‘ | runhaskell
    « hello world »