
Domain-Specific Language Engineering (2007) [pdf] - davidjnelson
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.95.8432&rep=rep1&type=pdf
======
bbrazil
The main challenge I've observed with DSLs is maintaining and growing them
over time. It's not unusual for a DSL to grow organically based on individual
use cases that seem like a good idea, and the end result is a language that's
not quite consistent or orthogonal.

"A foolish consistency is the hobgoblin of little minds" is the rallying cry
of those who only have to deal with a small number of
libraries/languages/tools/systems, and don't realise the true externalities of
having to memorise hundreds to thousands of special cases. Small consistent
languages are good languages.

~~~
ExpiredLink
Not only maintaining and growing a DSL is challenging but also designing it at
first. You need a lot of both domain and technical experience to achieve a
half-decent result. That's why the "hype" around 2007 didn't lead to
widespread practice. DSLs are costly.

~~~
scottious
I'm currently developing a DSL. I definitely agree with what you're saying.
Domain and technical expertise are needed in abundance. Writing a spec is
HARD. It takes a certain perseverance to learn good parser design (I've
written a great parser generator and I still feel inadequate in this area
sometimes).

DSLs are costly. My concern is that the cost will outweigh the benefit and
people won't like it and we'll be suck with it. My hope is that it'll
stabilize and be expressive enough to fit everybody's needs.

Did you ever write a DSL used in a production environment? How complex was the
DSL, more declarative or closer to a general purpose language?

~~~
sklogic
> Writing a spec is HARD.

Chances are that you're severely over-engineering it. Just take the English
specification for any particular problem your DSL is supposed to solve and
slightly tweak it into looking like a formal language. That's it. Extremely
easy with a bit of practice.

~~~
ExpiredLink
You have no idea.

~~~
sklogic
Yes, tell me more. I build eDSLs professionally. You can take a look at some
of the stuff I'm building:
[https://github.com/combinatorylogic](https://github.com/combinatorylogic)

~~~
ExpiredLink
But where is the domain in your Domain Specific Languages? You built SLs but
not DSLs.

~~~
sklogic
In this case domain itself is language construction: I built a system of DSLs
that make implementing any other DSLs easy. And I am using this and the other
similar toolchains (like Racket) to build DSLs for a very wide range of
domains.

------
sjorsvb
Funny, I was a student of his and as soon as I read the title, I thought it
might be his work :)

------
gronkh21
Interesting article

