Tuesday, April 7, 2009

DSLs - Do we have to love them?

DSL stands for "domain-specific language". And, according to Wikipedia (http://en.wikipedia.org/wiki/Domain-specific_programming_language), it is "a programming languaage or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique." Most likely, because the tools to produce them are programmer-oriented, DSLs define specific syntax (usually with seemingly bizarre semi-colons at the end of each definition) providing the inputs to computer frameworks or applications. Some examples are syntax to define security or systems management policies, definitions of how an application should be created or deployed, or even something simple like giving your name and a list of friends.

Why do systems engineers think that these are cool? Because they are fun to create, and are simpler to write and use than writing in a programming language or XML.

But, when is enough enough? Every application could end up with its own DSL - because each application expects specific data in some specific format. So, just like today, there are tons of user interfaces (but the industry is trying to standardize on a few due to customer pushback), we have (or if you don't think that we are there yet, will likely have) tons of DSLs. Talk about a business/IT nightmare!
Think about everything that you have to remember!

What are some alternatives? How about natural language? Not the messy grammar and slang of everyday natural language ... but a "controlled" version of this. What does this mean? Well, I like using Wikipedia (when its definitions are solid) - so, let's take their definition (http://en.wikipedia.org/wiki/Controlled_natural_language). Controlled NLs are "subsets of natural languages, obtained by restricting the grammar and vocabulary in order to reduce or eliminate ambiguity and complexity. Traditionally, controlled languages fall into two major types: those that improve readability for human readers (e.g. non-native speakers), and those that enable reliable automatic semantic analysis of the language."

Two excellent examples of the latter category are Attempto Controlled English (http://attempto.ifi.uzh.ch/site/) and a translation of OMG's Semantics of Business Vocabulary and Business Rules into English (in the appendices of the spec at http://www.omg.org/spec/SBVR/1.0/). (Note: the "official" SBVR definition is XML-based, and not very human readable/writable or anything close to controlled English.) :-) An interesting fact is that Attempto Controlled English has an add-in for Protege which allows the translation of English-defined vocabulary and rules into OWL and SWRL! (If you don't know what these are - no worries - I plan on spending some time defining them ... they are semantic computing standards.)

At the end of the day, I think that we need more natural interfaces and input mechanisms for business and IT people, and less techy specific languages (insert here: DSLs).

No comments:

Post a Comment