On Fri, Dec 04, 2009 at 01:43:42PM +0000, Matthias Görgens wrote:
> > _So my strong opinion that solution is only DSL not EDSL_
>
> Why do you think they will learn your DSL, if they don't learn any
> other language?
I didn't said that they didn't learn any language. They learn languages, but
only part that is necessary to do particular task.
f.e. ROOT CINT(C++ interpreter) didn't distinguish object from pointer to object, i.e.
statement h.ls(); works as well as h->ls(); independently of either h has type TH1F or TH1F*,
so beginning ROOT user didn't need know what is pointer, memory management helps him.
But early or latter one need to write more complicated code,
then one need to spend months to reading big C++ books, and struggling with compilers errors, segfaults etc..^(1) (instead of doing assigned task!) or, what is more usually, trying Ad hoc methods for writing software.
So people will learn DSL because:
1. DSL is simpler than general purpose language
2. DSL describe already known domain for user, (one probably don't need monads, continuations, virtual methods, template instantiation etc...etc...)
so learning is easy, and didn't consume much time.
> And if your DSL includes general purpose stuff, like
> functions, control structures, data structures, you'll re-invent the
> wheel. Probably porly.
You didn't need to reinvent the wheel, because you DSL compiler can
produce Haskell code:
DSL -> General Purpose Language -> Executable
And ever if you do, it saves allot of time of experts.
Roman.
(1) In Haskell this probably will sound like: reading allot of small tutorials and articles, grokking monads,
struggling with type-check errors, infinite loops, laziness, etc...