URL: https://linuxfr.org/news/sortie-du-livre-parallel-and-concurrent-programming-in-haskell Title: Sortie du livre « Parallel and Concurrent Programming in Haskell » Authors: neil tuiu pol, NeoX et patrick_g Date: 2013年07月24日T21:30:21+02:00 License: CC By-SA Tags: haskell, livre et programmation Score: 42 Le livre _Parallel and Concurrent Programming in Haskell_ de Simon Marlow est enfin [disponible](http://shop.oreilly.com/product/0636920026365.do) ! Pour ceux qui ne le connaîtraient pas encore, le langage [Haskell](http://www.haskell.org) est un langage de programmation fonctionnel, fortement typé, paresseux et concis. Haskell est issu de l’initiative d’une communauté de chercheurs en langages fonctionnels qui ont décidé, à la fin des années 80, de mettre en commun leurs compétences en utilisant tous un seul langage, qui devrait [rester libre](http://www.haskell.org/onlinereport/preface-jfp.html). Depuis, le langage est en constante évolution, la dernière version stable est définie dans le rapport [Haskell 2010](http://www.haskell.org/onlinereport/haskell2010/), mais de multiples extensions existent dans le compilateur GHC, dont les plus courantes viendront s’ajouter à la prochaine version du langage. Pour avoir une idée de sa syntaxe très particulière, voilà l’une des innombrables façons de définir la factorielle : ``` fac 0 = 1 fac n = n * fac (n-1) ``` En espérant que cela vous laisse sur votre faim, vous pourrez en apprendre plus dans les livres classiques [Learn You a Haskell for Great Good](http://learnyouahaskell.com/) qui est aussi librement accessible en [version HTML](http://learnyouahaskell.com/chapters), y compris [en français](http://lyah.haskell.fr/), et le plus vieux, mais plus développé et appliqué, [Real World Haskell](http://book.realworldhaskell.org/), lui aussi accessible [en ligne](http://book.realworldhaskell.org/read/). ---- [Le livre chez O’Reilly](http://shop.oreilly.com/product/0636920026365.do) [La version HTML en ligne](http://chimera.labs.oreilly.com/books/1230000000929/index.html) [Commentaires sur Reddit](http://www.reddit.com/r/haskell/comments/1iwr7x/parallel_and_concurrent_programming_in_haskell/) [Le langage Haskell](http://www.haskell.org) [Apprendre Haskell vous fera le plus grand bien !](http://lyah.haskell.fr/) ---- # L’auteur Simon Marlow est l’un des développeurs de [GHC](http://www.haskell.org/ghc/), le compilateur de facto standard du langage, et l’éditeur du dernier rapport du langage ([Haskell 2010](http://www.haskell.org/onlinereport/haskell2010/)). Il travaillait jusqu’il y a peu chez Microsoft Research à Cambridge, notamment avec [Simon Peyton Jones](http://research.microsoft.com/en-us/people/simonpj/), l’un des pères de Haskell, mais vient d’être débauché par Facebook. On peut remarquer que le financement de Microsoft n’a nullement entravé le développement d’un compilateur libre d’une grande qualité (GHC), ni les fondements libres du langage Haskell. Simon Marlow a en particulier travaillé sur les aspects parallèles du compilateur, ce qui en fait l’un des plus aptes à nous en expliquer son fonctionnement. # Le livre Le livre est disponible en versions électroniques (sans DRM) chez [O’Reilly](http://shop.oreilly.com/product/0636920026365.do). Il est aussi accessible en ligne dans son intégralité en [version HTML](http://chimera.labs.oreilly.com/books/1230000000929/index.html). La version papier sortira sous peu. La lecture de l’ouvrage nécessite d’avoir des connaissances de base du langage Haskell, par exemple au travers des livres cités ci-dessus. On y retrouve toutes les dernières avancés de Haskell, GHC et des bibliothèques associées, en ce qui concerne le parallélisme, tout ce qui fait d’Haskell un langage fortement parallèle, et va ainsi à l’encontre de son slogan officieux : _Avoid success at all cost!_ On peut ainsi apprendre comment paralléliser très simplement son code : ``` a <- rpar (f x) b <- rpar (f y) ``` Ici, les deux appels à `f` seront effectués en parallèle grâce à `rpar`. On apprend aussi comment utiliser la bibliothèque de tableaux multi-dimensionnels [repa](http://repa.ouroborus.net/), bibliothèque qui interagit avec le compilateur pour optimiser le parallélisme sur plusieurs processeurs, avec fusion de boucles par exemple : ``` sum3 a b c = a +^ b +^ c ``` Ici `a`, `b` et `c` sont des tableaux multi-dimensionnels qui verront leurs éléments additionnés de façon parallèle. À noter, il n’y aura pas de création d’un objet intermédiaire `a +^ b`, contrairement à un programme [NumPy](http://numpy.scipy.org) par exemple. Le dernier chapitre de la programmation parallèle est consacré à [Accelerate](https://github.com/AccelerateHS/accelerate), pour programmer du code qui sera compilé vers le GPU. Il s’agit principalement d’utiliser la plateforme CUDA, même si d’autres backends comme OpenCL ou Repa existent, ils sont bien moins développés. Enfin, la deuxième partie du livre est dédiée à la programmation concurrente, avec tous les _usual suspects_ : mutex, échange de messages, STM, multi-threading, programmation distribuée, etc. Le tout avec des exemples concrets (serveurs de chat, recherche de fichiers, ...). Toutes ces technologies sont en cours de développement intensif, et l’auteur nous fait non seulement un état de l’art des différentes publications sous-jacentes, mais nous met aussi en garde sur l’instabilité de certains composants.

AltStyle によって変換されたページ (->オリジナル) /