Suite aux évènements suivants auxquels j’ai assisté, je tenais à vous faire partager mon ressenti, à savoir :
–Hands-on Scala
–Keynote de Martin Odersky
–Conférence sur Groovy et les DSL statiquement typés
Pour mon planning et les pointeurs vers les technologies que j’ai retenu, vous pouvez vous référez ici.
Programmation fonctionnelle avec Scala
En suivant le Hands-on Scala et la keynote de Martin Odersky, ce que j’en ai retenu c’est la puissance du paradigme de la programmation fonctionnelle et surtout la nécessité de programmer avec des structures immutables pour se prémunir des effets de bord, faciliter l’optimisation et la scalabilité des applications en les rendant ThreadSafe.
Scala est conçu nativement avec cette notion d’immutabilité. Il faut ajouter des mot clés pour rendre mutable des champs ce qui n’est évidemment pas le cas en Java où il faut du code technique supplémentaire pour y arriver. A ce titre, jetez un œil à l’api gs-collections.
Le paradigme de la programmation fonctionnelle apporte des nouveaux concepts qu’il faut impérativement maîtriser pour éviter de développer à 10 000 pieds. Je vous conseille cette très bonne vidéo Abstraction Distraction du Devoxx 2012. Neal Ford rappelle très justement que l’utilisation des abstractions nécessite la compréhension de leur niveau n-1.
Le Hands-On sur scala m’aura permis d’appréhender que ce langage, bien que puissant, est à mettre entre des mains expérimentées. Il faut bien comprendre les concepts et les mécanismes que masque le langage lors du développement. Ce qui rend peu aisé en première approche la création de son code d’une part et aussi sa relecture.
Si vous êtes intéressez pour faire de la programmation fonctionnelle avec le langage Scala allez sur l’excellent site Coursera et sinon jetez un œil à OCaml.
Bien sûr comme tout langage, il faut un temps d’adaptation et ce n’est pas en 3 heures que je peux juger mais c’est mon ressenti.
Groovy langage dynamique et DSL
Concernant la conférence Groovy et les DSL statiquement typés, je ne peux malheureusement en retirer que très peu de choses car je pensais trouver une conf sur comment utiliser Groovy pour créer des DSL :(.
Factuellement, cette présentation très technique montrait quelles fonctionnalités de Groovy permettaient de typer statiquement son DSL créé avec Groovy.
Il fallait une très bonne connaissances de Groovy pour assister à cette présentation ainsi que des bases en création de langage (structure, arbre de syntaxe abstraite, éditeur, syntaxe concrète, sémantique et comportement, …).
Afin que vous aillez aussi d’autres pointeurs, je vous conseille de vous renseigner sur Xtext qui vous permet d’arriver au même but, c’est à dire créer un DSL, mais avec une autre approche. Il permet de créer des DSLs et des langages puis de générer un IDE Eclipse avec tout les plugins paramétrés pour ce DSL ou langage . Un exemple concret d’implémentation est le langage Xtend. Si vous êtes intéressés aller voir Xtext et Xtend.
Il ne s’agit en aucun cas de comparer le langage Groovy et Xtext, mais au contraire de montrer qu’il existe des approches différentes pour atteindre le même but, en l’occurence créer un DSL, avec différentes technologies.
Dans les deux cas, il vous faudra décrire votre langage avec les apis de l’un des outils. De plus, ce ne sont pas les outils les plus importants mais votre connaissance de comment concevoir un DSL ou un langage adapté à votre contexte métier afin de vous faciliter les développements.