domain.dot.net team

Domain Specific Languages : Moving us to Strategic

Martin Fowler

First I’d like to recognize one of the worlds most accomplished computer scientists for his continued contribution to our field, after already hitting more home-runs related to modern software engineering then anyone I can think of. I’m speaking of Martin Fowler, the man who many not invent everything (he invents enough), but formulates and executes the dissemination of the concepts in a way that fundamentally change everything.

For example, a DSL could be very ‘horizontal’ yet specialized. Regular Expressions are absolutely a DSL in my definition, so there is nothing magical about these three letters.

The different is the ease people can now create DSLs.  Today with C# 3.0/.NET 3.5 and the DSL empowering addition of  ‘extension methods’ as well as the amzing power of Linq, as well as the Java language evolution, this will be expected.

The pure genius of ‘language designers/creatosr’ is not a requirement dor DSLs with now a movement into the highly ‘company specific’.

It will not be long until every developer is by definition a DSL developer and the distinction will be a historical discussion point, as so many past points in time now are.

Today most successful DSL examples are ‘generalpurpose’ in the need served, yet the need

by definition is narrow in scope.

A great example would be Regular Expressions.

This is very important but they tend to solve as ‘code languages’ very technical solutions. We need strategic domain solutions not based on an all technology focus. Indeed we must empower any domain expert to understand the language and semantics.

This happens often in our practice by combining ‘graphical DSL’ implmentation with ‘textual and internal fluent style DSLs’.

A great example would be one of the many DSLs now being used in large corporate development for say strategic product development using proprietary company algorithms that the organization wants accessible beyond reuse, beyond a framework API even. They want the concepts actually embedded in the very essence of the act of writing code at their organization.

Often, adopters (typically leaders in whatever they do in my research for a long overdue book and often not in the US due to our limited ability to ‘forget’ our American Industrial Revolution model which DOES NOT WORK in software).

They combine ‘common’ languages such as C# in an IDE with one or more of these ‘tiny languages’ with utter obsession in their suitability to their purpose.

The point of this post is simply this: The new features including (especially the next one) of Extension Methods, Lambada Expressions, Linq, and the near ubiquity of ORM (NHibernate is preferred but just use one), near total acceptance of ‘power shifting’ patterns and concepts (such as dependency injection) has created this reality.

This site is dedicated to providing the work we do in DSLs. We use as our foundation a lot of sources we had a very hard time discovering. Our obligation is to make it easy for you.

If interested we strongly encourage you to read and follow Fowler’s work here. Start with ‘Expression Builder’ if you a developer looking to improve. Wrapping existing code in a Fluent API is very common tody.

Here is the link: http://martinfowler.com/dslwip/ExpressionBuilder.html

Damon Wilder Carr

WikipediaWictionaryChambers (UK)Google imagesGoogle defineThe Free DictionaryJoin exampleWordNetGoogleUrban DictionaryAnswers.comrhymezone.comMerriam-Webster

1 Comment »

  1. [...] I continue the discussion of what a DSL is here. I will be adding to this section of the site over time but if you just want the listed info, no need to go on a tangent now. Now that new .NET 3.5 C# 3.0 features are allowing us to make the Framework API of .NET work in ways not present ‘out of the box’ the scope of what is possible can be deep and broad. [...]

    Pingback by Advanced C# 3.0: Part 3 - New Language Features as ‘Domain Specific’ as well as General Purpose Extensions « damon wilder carr — 05.31.08 @ 10:43 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.