{"id":587,"date":"2011-02-02T00:15:41","date_gmt":"2011-02-01T23:15:41","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=587"},"modified":"2011-02-02T00:21:33","modified_gmt":"2011-02-01T23:21:33","slug":"livre-language-implementation-patterns-create-your-own-domain-specific-and-general-programming-languages-pragmatic-programmers-par-terence-parr","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=587","title":{"rendered":"Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages  par Terence Parr"},"content":{"rendered":"<p><a href=\"http:\/\/oreilly.com\/catalog\/9781934356456\/\">Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers) by Terence Parr<\/a><\/p>\n<p>Les DSL, un sujet int\u00e9ressant et parfois myst\u00e9rieux ou du moins opaque. Ce livre permet de d\u00e9mystifier et de montrer comme il peut dans certains cas \u00eatre simple de faire des DSL.<br \/>\nLe focus est sur les impl\u00e9mentation ANTLR et StringTemplate, Mais l&rsquo;important reste les patterns. Malgr\u00e9 tout, j&rsquo;aurai \u00e9t\u00e9 curieux de voir d&rsquo;autres impl\u00e9mentation (notamment XText).<\/p>\n<p>Les exemples de codes sont tous en JAVA et dans un style tr\u00e8s concis, plus proche du Python que du C. Tout \u00e0 fait surprenant et rafra\u00eechissant ! Je suis tellement habitu\u00e9 \u00e0 voir le code Java format\u00e9 dans un style ancien et industriel, que j&rsquo;ai presque l&rsquo;impression de lire un nouveau langage ! Le code Java parait plus \u00ab\u00a0jeune\u00a0\u00bb avec le style de Terence  Parr.<br \/>\nLes DSL sont incontournable, ne serait-ce que pour comprendre comment fonctionnent beaucoup d&rsquo;outils actuels (compilateurs, annotations, parser XML, parser JSON, analyse de code source &#8230;) et sans doute de plus en plus d&rsquo;actualit\u00e9. Bref, ce livre permet de connaitre les principes de base et de cr\u00e9e ses propres DSL de la mani\u00e8re la plus adapt\u00e9e.<\/p>\n<p>Il n&rsquo;est pas trop th\u00e9orique, comme c&rsquo;est souvent le cas dans ce domaine. Il introduit de mani\u00e8re pratique et didactique les lexer, parser, puis comment lire un fichier de configuration, un fichier de donn\u00e9es, g\u00e9n\u00e9rer du code \u00e0 partir d&rsquo;un model, analyser du code source. Les structures de donn\u00e9es s\u2019\u00e9toffent peu \u00e0 peu et leur parcours varie d&rsquo;un pattern \u00e0 l&rsquo;autre sans qu&rsquo;on perde pied.<\/p>\n<p>Attention, ce n&rsquo;est pas un livre de recette pour passer en revue des DSL. Ici il s&rsquo;agit d\u2019impl\u00e9menter des DSL. Il ne vous dira pas ce qui fait un bon ou un mauvais DSL du point de vue de l&rsquo;utilisateur. En revanche il permet d&rsquo;appr\u00e9hender leur fonctionnement, leur logique et contraintes du point de vue du concepteur. <\/p>\n<p>Terence est tr\u00e8s dynamique et son enthousiasme communicatif.<\/p>\n<p>Et n&rsquo;oubliez pas: ce livre est disponible \u00e0 <a href=\"http:\/\/www.alpesjug.fr\/?p=419\">la biblioth\u00e8que du JUG<\/a> !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers) by Terence Parr Les DSL, un sujet int\u00e9ressant et parfois myst\u00e9rieux ou du moins opaque. Ce livre permet de d\u00e9mystifier et&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[371,30,44],"class_list":["post-587","post","type-post","status-publish","format-standard","hentry","category-livre","tag-dsl","tag-livre-bibliotheque","tag-pattern"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=587"}],"version-history":[{"count":8,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/587\/revisions"}],"predecessor-version":[{"id":701,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/587\/revisions\/701"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}