Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages par Terence Parr

Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers) by Terence Parr

Les DSL, un sujet intéressant et parfois mystérieux ou du moins opaque. Ce livre permet de démystifier et de montrer comme il peut dans certains cas être simple de faire des DSL.
Le focus est sur les implémentation ANTLR et StringTemplate, Mais l’important reste les patterns. Malgré tout, j’aurai été curieux de voir d’autres implémentation (notamment XText).

Les exemples de codes sont tous en JAVA et dans un style très concis, plus proche du Python que du C. Tout à fait surprenant et rafraîchissant ! Je suis tellement habitué à voir le code Java formaté dans un style ancien et industriel, que j’ai presque l’impression de lire un nouveau langage ! Le code Java parait plus « jeune » avec le style de Terence Parr.
Les DSL sont incontournable, ne serait-ce que pour comprendre comment fonctionnent beaucoup d’outils actuels (compilateurs, annotations, parser XML, parser JSON, analyse de code source …) et sans doute de plus en plus d’actualité. Bref, ce livre permet de connaitre les principes de base et de crée ses propres DSL de la manière la plus adaptée.

Il n’est pas trop théorique, comme c’est souvent le cas dans ce domaine. Il introduit de manière pratique et didactique les lexer, parser, puis comment lire un fichier de configuration, un fichier de données, générer du code à partir d’un model, analyser du code source. Les structures de données s’étoffent peu à peu et leur parcours varie d’un pattern à l’autre sans qu’on perde pied.

Attention, ce n’est pas un livre de recette pour passer en revue des DSL. Ici il s’agit d’implémenter des DSL. Il ne vous dira pas ce qui fait un bon ou un mauvais DSL du point de vue de l’utilisateur. En revanche il permet d’appréhender leur fonctionnement, leur logique et contraintes du point de vue du concepteur.

Terence est très dynamique et son enthousiasme communicatif.

Et n’oubliez pas: ce livre est disponible à la bibliothèque du JUG !