Is “Higher Level” Better? A programming language can be viewed as an interface to an abstract machine. Assembly language is just the right abstraction for a CPU. Why do some languages better match some applications than others?
We Need Domain Specificity A domain-specific language (or DSL) is a language that precisely captures a domain semantics; no more, and no less. We also need domain specific: specifications (starting point!) optimizations and transformations software tools type systems, aspects, constraints, etc.
Advantages of DSL Approach Programs in the target domain are: more concise quicker to write easier to maintain easier to reason about can often be written by non-programmers Contribute to higher programmer productivity Dominant cost in large SW systems Verification, transform- ation, optimization These are the same arguments in favor of any high-level language. But in addition: Helps bridge gap between developer and user
The Bottom Line
DSL’s Allow Faster Prototyping Using the “Spiral Model” of Software Development design specify design specify build test build test Without DSL With DSL