{"id":200,"date":"2005-06-26T10:06:19","date_gmt":"2005-06-26T09:06:19","guid":{"rendered":"http:\/\/www.andrewj.com\/blog\/index.php\/2005\/domain-specific-languages\/"},"modified":"2010-06-21T11:49:04","modified_gmt":"2010-06-21T10:49:04","slug":"domain-specific-languages","status":"publish","type":"post","link":"https:\/\/www.andrewj.com\/blog\/2005\/domain-specific-languages\/","title":{"rendered":"Domain-Specific Languages"},"content":{"rendered":"<p>There seems to be quite a lot of activity on the &#8220;Domain Specific Language&#8221; front at the moment. Martin Fowler published <a href=\"http:\/\/www.martinfowler.com\/articles\/languageWorkbench.html\" target=\"_blank\">&#8220;Language Workbenches: The Killer-App for Domain Specific Languages?&#8221;<\/a>, in which he concludes that the common programming pattern of setting up repeating data structures via either very similar lines of code, or an external configuration file, is actually a DSL. He also republished a paper by Dave Thomas entitled <a href=\"http:\/\/www.martinfowler.com\/ieeeSoftware\/accChange.pdf\" target=\"_blank\">&#8220;Design to Accomodate Change&#8221;<\/a> on the related topic of table-driven programming.<\/p>\n<p>However, Martin&#8217;s essay goes beyond common programming and data techniques to look at the development of specialist tools which he calls &#8220;Language Workbenches&#8221;. I&#8217;m not completely convinced that we need these in the world of XML and XSD. If you have a defined schema for you XML-based DSL (and aren&#8217;t all the many *ML langauges just different DLSs?) then any schema-sensitive editor will provide you with good design and editing support. The leading IDEs (e.g. Visual Studio) all have such a tool built into their core capabilities. Surely we now have a sufficiently sophisticated set of XML-based tools and standards that we have an opportunity to exploit synergies rather than re-inventing the wheel?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There seems to be quite a lot of activity on the &#8220;Domain Specific Language&#8221; front at the moment. Martin Fowler published &#8220;Language Workbenches: The Killer-App for Domain Specific Languages?&#8221;, in which he concludes that the common programming pattern of setting &hellip; <a href=\"https:\/\/www.andrewj.com\/blog\/2005\/domain-specific-languages\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,9,2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts\/200"}],"collection":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/comments?post=200"}],"version-history":[{"count":0,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts\/200\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/media?parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/categories?post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/tags?post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}