Conclusion#
A Very Little Language is like a knife, which can be used in thousands of different ways, from cutting food to cutting down trees. A DSL is like an electric drill: it is a powerful tool with a wide variety of uses, but a specific context, namely, putting holes in things (although it might also be used to mix paint or remove screws). A GPL is a complete workbench, with a variety of tools intended for performing a variety of tasks. DSLs should be used by programmers who, looking at their current workbench, realize they need a better drill, and find that a specific DSL provides exactly that.
Problems#
Before one ever can built a good domain language one must learn the domain.Which is true for software development in general.
Designing a new a programming language from ground up is not as evident as it seems.
Also true for API design, a good api should designed as if it was domain language
Creating a new languages can be very expensive task in terms of development.
Lucky there are tools that can help you along the way such as XML tools and parser
generators. A domain specific language is a very powerfull concept which especially in larger
projects reduce cost significalty
May be very temping to go out of scope. Every domain langauge may become a
general purpose langauge sooner or later.
Yes it is!, keep it simple, nail down the scope!!!
IDE support for your new language would be very limited.
Luckly tools support for technology like XML is almost built in most editors
Extra training, as nobody will know your langauge.
The new language offers new benefits learning this would be acceptable.
Using existing syntaxes and semantics is a way to reduce the learning curve.
Should be more natural than it's general counterpart.
Could be so simple that seeing is learning.
Resources#
- http://www.martinfowler.com/articles/languageWorkbench.html
- http://www.onboard.jetbrains.com/is1/articles/04/10/lop/
- http://www.program-transformation.org/Transform/DomainSpecificLanguages
- http://compose.labri.fr/documentation/dsl/dsl_overview.php3
- http://www.spinellis.gr/pubs/jrnl/2000-JSS-DSLPatterns/html/dslpat.html
- http://en.wikipedia.org/wiki/Domain-specific_programming_language
- http://www.dur.ac.uk/martin.ward/martin/papers/middle-out-t.pdf
- http://www1.cs.columbia.edu/~conway/papers/conway-2004-ndl.pdf