[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Rather, DSSLs increase modularity, productivity



On Sun, 16 Nov 2003, Mike Newhall wrote:

> This is consistent with the semi-humorous comment that all
> large systems eventually implement an ad hoc version of LISP -- perhaps
> what they are really doing is implementing a DSL, and a LISP-like
> language is the ideal type of language to implement DSLs.

I've been involved in a number of projects that either already implemented
a LISP-like language as a DSL or were in the process of doing so. The
two biggest (and, in fact, sole) reasons for a Lisp-like language were
ease of implementation and small memory footprint.

The size advantage was a big one when we were trying to wedge in a DSL
into programs on a PDP-11--32KWords of I and D space only go so far.
Forth-like languages share this advantage, and I've seen a number of
those as well. (Though fewer. Dunno why, exactly) With modern machines
that's much less of an issue, and indeed I've not seen any new Lisp-like
DSLs in ages.

The ease of implementation issue is also a big one -- naive lisp (and
forth) implementations are really simple to throw together. Infix
languages are much more of a pain to do, and when you've just grabbed a
few hours to toss together a DSL, well... Lispy things win. This advangate
is also much less of an advantage than it used to be as there are a bunch
of easily-embeddable languages handy with dynamic compilation features so
you don't have to write the parser, and that make writing parsers for new
languages easier.

I think we've seen the end of the wave of hand-rolled DSL/engine sets, and
we've moved solidly into an 'era' (if you want to dignify it with that
label) of embedded engines with pre-built languages. I expect the next
move will be towards pluggable languages in embedded engines. (And no, I'm
not talking about Parrot or .NET specifically -- I'm thinking of things
like the templating engines people are already writing in Perl, Python,
and Ruby, and embedding in apps by embedding the perl/python/ruby engine)

					Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                      teddy bears get drunk