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