Blog Arolla

F# Open Forum

f-sharp-meetup-320C’est avec un très grand enthousiasme que je me suis rendu lundi 21 octobre au premier meetup F# organisé à Paris, dans les locaux d’Arolla. Cela fait déjà deux ans que j’ai eu l’occasion de participer à une formation F#, également organisée par Arolla. Depuis, mon intérêt pour la programmation fonctionnelle n’a pas cessé de s’accroitre.

Tout d’abord, je tiens à remercier Thomas pour son initiative d’organiser ce groupe meetup, auquel je souhaite toute la réussite possible. La création de ce groupe français a reçu un accueil très positif, non seulement à Paris mais aussi à l’international, et j’espère que nous aurons la chance d’avoir dans les mois qui viennent des invités prestigieux !

Ce premier rassemblement a attiré les pratiquants les plus visibles de la communauté, comme Robert Pickering et Jérémie Chassaing, mais aussi de nombreuses personnes heureuses d’échanger sur le sujet de la programmation fonctionnelle, et de F# en particulier. L’idée aujourd’hui était de prendre un premier contact avec la communauté, d’identifier les attentes et les envies des uns et des autres.

Un foisonnement d’idées

Après une courte introduction de Thomas, chacun s’est présenté et a exposé la motivation de sa présence, puis nous avons distribué des post-it et répertorié des sujets que nous aimerions voir aborder dans les prochains événements. En vrac :f-sharp-meetup-2-320

  • Parallélisme en F#
  • F# pour le web
  • DSLs & parsor combinators
  • Structure d’un projet
  • Retours d’expérience
  • Modèle acteurs
  • DDD – CQRS – EventSourcing
  • Undertone
  • FsUnit
  • F# pour le développeur C#
  • F# pour le développeur OCaml
  • Hands-on & katas

Pour la suite de la soirée, deux thèmes ont été retenus par les participants.

Asynchronisme et modèle acteurs

La première discussion a porté sur le modèle de programmation asynchrone en F#. Jérémie s’est lancé sur le fonctionnement de async en F#, les différences de conception avec le async de C# 5, et les possibilités de composition des workflows asynchrones. Le côté “parallélisme” n’a au final pas été vraiment évoqué, mais il s’agissait ici d’une discussion non préparée ! Le sujet s’est ensuite déplacé vers le modèle acteurs, en expliquant le fonctionnement des MailboxProcessor. Par la suite, Julien Delhomme a pris la parole pour exposer les limitations de ce fonctionnement par rapport à un modèle acteurs intégré au langage, comme en Erlang, ou à une bibliothèque plus aboutie, comme Akka en Scala. En F#, le projet à regarder sur le même sujet semble être FSharpActors. Le sujet a captivé la salle, et je ne doute pas qu’une présentation plus complète puisse être organisée sur le même thème dans le futur.

DSLs et parsor combinators

Les DSL (Domain Specific Language) sont classiquement séparés entre DSL internes et externes, selon qu’ils s’expriment dans la syntaxe d’un langage hôte ou définissent leur grammaire propre. F# est reconnu comme un excellent langage pour créer ses propres DSL internes, notamment par sa capacité à manipuler facilement des AST (Abstract Syntax Trees). L’utilisation de Discriminated Unions et de pattern matching rend en effet la manipulation d’arbre beaucoup plus simple et puissante qu’elle peut l’être avec une représentation objet avec un pattern visiteur. Jérémie a mentionné qu’il avait manipulé des AST en F# pour son projet Duck, et que la différence avec C# était flagrante.

Après ces échanges assez généraux sur le sujet, Jérémie a refait un tour au tableau pour nous expliquer succinctement le fonctionnement des computation expressions, et la possibilité de construire un “expression builder” pour construire un arbre syntaxique. Comme pour le sujet précédent, un présentation plus complète avec des exemples de code semble toute indiquée !

Prochains rendez-vous

Un premier sujet est déjà dans les tuyaux, au cours duquel Robert va nous proposer le talk qu’il aura préparé pour la conférence BuildStuff, “Expression Orientend Programming with F#”. Et au moment de la rédaction de ce billet, une autre présentation semble également se profiler au mois de décembre par Mathias Brandewinder…

En ce qui me concerne, je suis très motivé pour animer des initiations à F#, constituées d’une courte partie théorique, et de premiers exercices sélectionnés pour permettre de rentrer dans le monde de la programmation fonctionnelle. Si vous êtes intéressés pour participer à un évènement comme celui-ci, n’hésitez pas à laisser un commentaire sur le meetup ou à me contacter directement sur Twitter.

@pirrmann

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *