[racket] DSLs and complexity

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Fri Jun 21 08:39:15 EDT 2013

On Fri, Jun 21, 2013 at 8:26 AM, John Gateley <racket at jfoo.org> wrote:
> Subject for discussion:
>
> http://firstround.com/article/The-one-cost-engineers-and-product-managers-dont-consider#
>
> Interesting sentence in the middle:
>
> Consider DSLs, abstractions and the attraction to being the one to build a
> framework that gets leveraged for years.
>
>
> I think Racket is a different target: education vs. engineering (is this
> true?).

Racket is certainly targeted at software engineering -- we all do lots
of it to build Racket *in* Racket, and people build complex software
systems on top of Racket.

> As a software
> engineer, I really agree with the article. Complexity is almost always a
> terrible thing,
> whether it is a DSL, a complex implementation of a simple interface, or just
> the
> one additional thing requested by product management that didn't fit.
>
> For Racket: are DSLs a source of complexity? Or would you argue that they
> reduce the
> complexity normally introduced with DSLs?

I agree with much of the article (and lots of could well apply to
Racket) but I strongly disagree with what they say about frameworks
and DSLs. The most fundamental tool we have in computing for managing
complexity is abstraction, and DSLs are an enormously powerful form of
abstraction. I'm unclear on why the author thinks that a DSL increases
complexity -- perhaps the DSLs they've used have failed to genuinely
abstract things, and required users to work at both the abstraction
and implementation level. There, I think Racket does help produce
genuine abstractions.

Sam

Posted on the users mailing list.