DSL's are simple to create in ruby. Becuase what people call a DSL in
ruby is almost always just plain ruby methods -- it's in that context
that I don't even like the phrase "DSL". In ruby, developers very
seldomly find a need to create actually another language with it's own
grammar and parser and such -- people accomplish the same thing just by
creating the right ruby methods. The way that ruby supports the concise
supplying of code blocks as arguments to methods is usually the key
thing people rely on to do this.
Will Kurt wrote:
This is one of my favorite passage from SICP:
"It is no exaggeration to regard this as the most fundamental idea in
The evaluator, which determines the meaning of expressions in a programming
language, is just another program.
To appreciate this point is to change our images of ourselves as
programmers. We come to see ourselves as designers of languages, rather than
only users of languages designed by others."
In general I think there is too much fear of using language as just another
means of abstraction. While I certainly agree that creating an entire
language from scratch is a bad idea, I don't think it would be insane to
create a dsl to solve a common set of problems on top of an existing
runtime. I actually think this would be particularly useful in the library
world since there is such a range of programming talent, a dsl that
simplified some common library related tasks could certainly be useful,
especially if there was full language underneath.
Of course there is the problem that even DSLs are not simple to create, the
number of library programmers with experience in parsers and language design
is probably very, very small. But the ease of creating dsl is increasing
and I think their use will get more popular over time (hopefully).
From: Jonathan Rochkind <rochk...@jhu.edu<mailto:rochk...@jhu.edu>>
Date: November 1, 2010 11:03:13 AM PDT
To: "CODE4LIB@LISTSERV.ND.EDU<mailto:CODE4LIB@LISTSERV.ND.EDU>" <
Subject: Re: [CODE4LIB] Let's go somewhere [was PHP vs. Python...]
Reply-To: Code for Libraries <CODE4LIB@LISTSERV.ND.EDU<mailto:
I would be very unlikely to use someone's homegrown library specific
However, if you want to make a library for an existing popular scripting
language that handles your specific domain well, I'd be quite likely to
use that if I had a problem with your domain and I was comfortable with
the existing popular scripting language, i'd use it for sure. Odds are
your domain is not really "libraries" (that's not really a software
problem domain), but perhaps as Patrick suggests "dealing with
relationships among semantic objects", and then odds are libraries are
not the only people interested in this problem domain.
Some people like ruby because of it's support for creating what they
call "domain specific languages", which I think is a silly phrase, which
really just means "a libraryAPI at the right level of abstraction for
the tasks at hand, so you can accomplish the tasks at hand concisely and
without repeated code."
Patrick Etienne wrote:
I was bewildered at the notion of needing yet another scripting
language, let alone one as "library domain-specific" (that wording
alone throws up red flags everywhere), but I'm not here to bash ideas.
Instead I looked up your site and read the small blurb about "Nova".
It seems that the main objective behind your pursuit is creating a
language that provides a specific data type for semantic objects (or
relationships). I have to ask, what about semantic maps makes you
believe that they require a specific data type rather than just being
an object type? Are other scripting languages too slow to suit certain
needs such that a new data type is necessitated? I really can't see
this being the case. That being said, while it can be an invaluable
experience to learn about making scripting languages, if there's to be
any community movement toward a particular language (php, ruby, java,
scheme or what have you) there has to be some very real and
Or more directly, you seem to have specific ideas about a library
domain-specific language. What do today's languages not have that you
believe is so essential that you'd be willing to write a new scripting
- Patrick E.
On Sat, Oct 30, 2010 at 10:51 AM, Peter Schlumpf
Bill, you hit a nail pretty squarely on the head. I believe this decades
long fetish with MARC has to go. It was designed to efficiently store data
on magtapes and doesn't make any sense in today's world. It's a huge
millstone around the neck of Libraryland and it keeps them stuck in that
tiny little ghetto. Anything can be a mind-prison, even PHP, Python or
Django. They are all arbitrary anyway.
And you are correct in pointing out that the natural response of librarians
to a problem is to seek consensus in a self-absorbed way. Form committees
and all that nonsense which never goes anywhere. They are happy enough
going around in circles, like the Nowhere Man making all his nowhere plans
My hope is that some among us would just undertake these problems
ourselves. Outside of the realm of the libraries and the limiting mindsets
many of us work in. We've all got ideas. Fire up vi and get busy and make
something happen, like a library domain-specific language. Start fresh.
There is nothing wrong with that. What's wrong is how the library
community goes about such things.
Let's go somewhere.