InfoQ

Interview

Jay Fields and Zak Tamsen on Domain Specific Languages

Interview with Jay Fields and Zak Tamsen on Oct 22, 2007 10:54 AM

Community
Architecture,
Ruby
Topics
Rule Engines ,
Domain Specific Languages
Tags
ThoughtWorks
Summary
Jay Fields and Zak Tamsen have successfully worked with non-technical domain experts to design Domain Specific Languages for some of their projects at ThoughtWorks. In this interview with InfoQ they describe their motivations for using DSLs, and describe how they can be used to empower the business, reduce development time, and increase the agility of projects.

Bio
Jay Fields and Zak Tamsen are software developers and consultants at ThoughtWorks. They have worked in the Domain Specific Language space where they have delivered applications that empowered subject matter experts to write the business rules of the applications.
We are here at Ruby Conf 2006, with Jay Fields and Zak Tamsen from ThoughtWorks. Why don't you tell our viewers a little bit about yourselves?
The reason we are here is to talk about DSLs. We've been doing some pretty cool stuff, domain specific languages, can you tell us a little bit about why that's such a hot topic ?
Subject matter expert in this case being a financial analyst and in general we talked about domain specific languages, we mean that we're actually writing executable code, which i is readable and maintainable by someone like a financial analyst. Can you say if that's the case?
Why is there a connection between the topic of DSLs and Ruby?
But wouldn't business users be afraid of a programming in a programming language?
Is there a language designer role?
What does it take to be a good language designer?
Can you expand on iterative in that context?
How did you get into that kind of role?
This code that's in DSL, that's either written or at least the writing of it is assisted by a business user. How does that fit into Rails code or other programming code? Do you write a whole application in DSL?
How is this approach compare to using a rules engine? A lot of people might be thinking "why go through all that trouble when there are off the shelf packages that you can get to let the business user define the business rules of their application"?
And there aren't any off the shelf or open source libraries that do this sort of thing?
Let's talk a little bit about the challenges that we ran into with our first shot at doing this.
After I rolled out that project you kept going for a little while. And did you find that the technical user had to author new DSL code?
Would you say you tried to make it more natural?
Let's talk about that term. On your blog, and in our usage at ThoughtWorks you've been introducing this three letter acronym BNL.
Wouldn't a typical IT response to that be "you shouldn't be giving him a textual interface to begin with, you should be giving him a GUI"?
That's executable code right even though it's in the database
We've blurred the distinction between data and executable code?
Why is it uncomfortable?
A change that used to take 2 to 3 days.
I'm actually challenge that quote a little bit, not the quote itself, but being familiar with the project, a change actually took more than 2 or 3 days, because they didn't deploy.
Before it was a 30 day window?
Is there a tie-in between DSL techniques like we've been discussing and Agile?
What do you have to put into that?
Like writing Ruby 2.0 using an XP team?
But you can do that?
There is a catch there isn't there? In the sense that even though it's not general purpose, you still have a body of scripts.
You are saying this because of the scope?
The skeptics will say right now "it sounds like a fantastic silver bullet" but why is it not a silver bullet?
What is the future for Ruby and DSLs?
What was the performance profile of our project?
It was a legacy that we replaced.
You guys are certainly contributing to that future
show all  show all
come senor fernandes by paul kamara Posted Oct 22, 2007 6:08 PM
Punctuation and DSLs by Dirk Ludwig Posted Oct 30, 2007 9:15 AM
  1. Back to top

    come senor fernandes

    Oct 22, 2007 6:08 PM by paul kamara

    obie man que pasa aqui? this release of the interview you had with jay and zak completely ***** up the timeline !!! now on a more positive note could you get jay and zak to look at the tape again and add their comments with regard to thoughtworks 's work with dsl's in the past year hay you guys still rock but dates are still important too

  2. Back to top

    Punctuation and DSLs

    Oct 30, 2007 9:15 AM by Dirk Ludwig

    "Ruby [is] concise and [does not require] things such as parentheses or semicolons, giving you a more friendly language for domain experts." IMHO whether punctuation for DSLs is a good or a bad thing strongly depends updon the domain, the domain experts, and the concrete syntax you are trying to establish. So you cannot say, that host languages which handle punctuation/paranthesis rather lax (e.g. Ruby) are better than others _per se_. For example, punctuation would have been a good thing in the comment of mr. kamara :-) Regards, Dirk

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.