Coopetition

Both my colleague Alan Cameron Wills and Steven Kelly from our esteemed competitor MetaCase have announced a joint workshop at the XP2005 conference in the UK.
It's pretty nice to be able to work together to discuss and promote the parts of our respective visions that we share.
Still, just to show that the competition part is as healthy as the cooperation, Steven has a post comparing a fragment of code I posted with how you'd do the same thing in MetaEdit. The code shows how to access link instances in a model using our respective templating languages. OK, so I'm biting ;-). What Steven doesn't mention is that he's comparing their product with an unfinished technical preview (to be fair, that's all he has to compare with right now).
Right now, the domain-specific API onto models that we generate is fairly strong in the area of classes, but weak in the area of relationships. You can access everything you need using our generic API, but today you don't get a nice, friendly, strongly-typed API for accessing your relationship instances.
Imagine for a moment that we did have such an API today.
The code we have for accessing class instances looks like this:
foreach ( ConceptB b in this.ConceptA.Bs)
{
}
It's not too big a stretch to imagine a nested loop:
foreach ( BReferencesB relationship in b.GetReferringBsLinks() )
{
}
Suddenly, the sample has much the same complexity as Steven's example.
In a later CTP, we'll have APIs more like this for link instance management.
The key here is to create the right domain-specific API, which is why we're not finalizing it in our early CTPs.
When you look at working with domain-specific APIs, then you have a good platform for making a decision on whether there is enough power in custom operators and the like to justify the extra learning needed to use a domain-specific language for the control-flow in templated artefact generation.
This Power vs Learning tradeoff will be one that will become familiar to all working with Domain Specific Languages when deciding whether they are a good fit as a solution for any given problem space.
Published 24 May 05 03:24 by GarethJ

Comments

# Steven Kelly said on May 24, 2005 5:04 PM:
That's great news, Gareth! It will be interesting to see how things evolve over the course of the CTPs. Of course I'm flattered if some of that evolution is towards things we have in MetaEdit+, but it's also interesting to find areas where you head in a different direction. Even after ten years of commercial use, MetaEdit+ is still evolving, and it's good to re-examine things occasionally. Seeing you go through the same decision points we hit earlier is a good chance to look at those issues in a new light.

All the best with your ongoing development!
New Comments to this post are disabled

Search

Go

This Blog

Disclaimer
The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.
All code samples are provided "AS IS" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

Tags

Archives

Architects who Model

DSL Tools Team

Links

Syndication

Page view tracker