Thu Sep 3 13:27:14 CEST 2009

Prototyping and DSLs

I prefer my prototyping systems to have the semantics of full
programming languages.  Compared to special purpose prototyping tools,
this approach is both more powerful and `simpler' (in the sense of
less actual complexity) because it avoids corner cases.

The cost of this is a higher abstraction level: you essentially have
to also define the DSL.  In practice, with some experience, this cost
can be amortized, especially when you use systems that make expressing
language definitions easier (i.e. PLT Scheme).

Like anyone I want the prototyping app (DSL).  Systems that are
limited in generic power and shift to application-centric
expressability are definitely useful, but in addition I want an escape
hatch into an enclosing general purpose programming language in cases
where my DSL is too simple to express some corner cases.  (And I could
write _another_ DSL if another consistent domain emerges.)