Developing DSL's in Lisp
Monday, July 11, 2005
In a previous posting, I mentioned Martin Fowler's article on DSL's. In that posting, I referenced some code that Rainer Joswig had posted (on c.l.l.) that took the same example that Martin Fowler used in his article and demonstrated how easy it was to code the DSL in Lisp. Well, Rainer has posted an expanded version of his c.l.l. code/comments on his weblog. More interestingly, he has created a Quicktime movie showing how he developed the code. The movie is an excellent example of how an experienced lisper develops code in Lisp. If you're a newbie to Lisp (or if you have wanted to show others how developing in Lisp is different from developing in other languages), this video is an excellent example! Also interesting are Rainer's comments about different Lisp development environments:
"For the development session I was using LispWorks on my PowerMac G5 (2 * 2.5 Ghz). While later thinking about it I was making the following observation: to write that code I would have been around 30 percent faster on my Apple Quadra (40 Mhz, 68040) using MCL. LispWorks is a productive IDE, too. But there is definitely room for improvement. I'd say LispWorks has more advantages if one writes more complex and larger code. On my MacIvory I would have been around 2 times faster. For larger and and more complex code this could easily go up to 5 times faster development speed. Why is that? The Lisp Machine development environment is just much more focused on making the developer productive and lets him go very short ways from code to documentation to running code. Zmacs is more productive, since you have to leave Zmacs less often and you can reuse code more easily in Zmacs."
Caveat: A problem for some people will be the size of the video (it is 125MB in size) and the speed of Rainer's server. It took me about 8 hours to download the video (over a high-speed broadband connection).
Update-2005-07-11: Zach Beane is hosting a torrent of Rainer's video which should make it easier for more people to download/view it.
Update-2005-07-12: If you can't access BitTorrent files (some sites prohibit it's use), there is another mirror of Rainer's video here and another one here.