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 <[log in to unmask]<mailto:[log in to unmask]>>
>> Date: November 1, 2010 11:03:13 AM PDT
>> To: "[log in to unmask]<mailto:[log in to unmask]>" <
>> [log in to unmask]<mailto:[log in to unmask]>>
>> Subject: Re: [CODE4LIB] Let's go somewhere [was PHP vs. Python...]
>> Reply-To: Code for Libraries <[log in to unmask]<mailto:
>> [log in to unmask]>>
>> I would be very unlikely to use someone's homegrown library specific
>> scripting language.
>> 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:
>> Peter -
>> 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
>> significant benefit.
>> 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
>> <[log in to unmask]<mailto:[log in to unmask]>> wrote:
>> 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
>> for nobody.
>> 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.
>> Peter Schlumpf