Domain Specific Languages by Fowler

I finished reading Domain Specific Languages by Fowler some time ago. The reason I’m interested in DSLs in general is because I’m looking how to use them in testing. Adding a layer of abstraction on top of all those little gritty technical details helps to move focus to higher level, namely to problem domain. Instead of specifying that in order the test to pass, these two variables how to be equal, I can specify the same thing as an concept, using language that is more close to problem domain.

Book is pretty hefty and has quite lot of information inside of it. The focus is on the procedural languages, because Fowler feels that he does not have enough expertise on functional languages to write about them. Some of the ideas presented in the book work on the functional side and some can be adapted. Some are so specific to procedural languages though, that they aren’t useful on the functional side.

Book is divided in two sections. First section is about what DSLs are, how they are used and what kind of techniques can be used to contruct them. It constantly refers to second section, which lists all the patterns used in the book in short and clearly written format. In the beginning this referring back and forth was a bit annoying, but after patterns started sinking in, reading the first section was more enjoyable. In the end I liked the format though, since I can easily go back and check patterns, without having to hunt through the whole book for correct page.

Book was interesting to read, but left a feeling that there are so much more to write about DSLs. Also, it left a bit vague feeling in times, probably because the subject is so new to me. Good read in any case, and very good addition to me desk library.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s