[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to Design (Declarative) Programming Languages
It's a little hard to guess from your post what sort of "DSL" exactly
your friend is working on, but let me make the following assumptions:
- There is some system out there, or maybe in the works, written in,
say, C.
- It's going to have to be way more programmable than they can achieve
by clicking buttons or writing "ini" files.
- Thus, they want to invent a new language that will make it easy to
program their specific system.
May I suggest that instead of trying to reinvent the wheel, learning
the contents of a college course or two, and delivering a novel proof
of Greenspun's law, he consider a canned solution like GUILE? This has
two advantages:
- Your friend can forget about having to understand the nit-picky
details of syntax, semantics and implementation, as well as integration
with the base system.
- He can focus purely on extending the canned embedded scripting
language (with GUILE that's Scheme) to be a domain-specific language.
This is much easier than rolling your own, and extensively described in
books like SICP (Abelson & Sussman).
Please, please, don't flame. To most of us, those "nit-picky" details
are some of the more interesting problems in CS. It's sort of like
this: I'm very interested in knowing how to make the finest risotto or
the best hot-and-sour; yet I sometimes eat canned spaghetti sauce.
/jaap
On 17 Nov 2003, at 07:44, Jenkins, Steven wrote:
> I have a friend who is struggling to develop a DSL, and I've been
> giving
> him advice. However, I'm getting a bit tired of basically teaching him
> how to design a language,
========================================================================
Jaap Weel Campus address: | dorm (626) 795-9748
Caltech, Blacker '05 Caltech MSC #874, Pasadena, CA 91126, U.S.A.
www.its.caltech.edu/~weel Permanent address: | home +31-46-4337033
E-mail: weel@caltech.edu Kelderstraat 2-4, 6171 GB Stein, Netherlands
========================================================================