The realisation hit me whilst I was experimenting with using Ruby, C# and Regular Expressions to do some tricky file analysis as part of a
NAnt is a domain specific language because it defines a vocabulary specific to the process of building software. What makes it such a powerful DSL is that:
- It has a very limited keyword set (even when you add in nantcontrib), which is focused on the job hand.
- This in turn, allows very concise (once you get over the XML sit-ups) expression of knowledge.
- This also eases its learning-curve, which is even further reduced when harnessing the power of:
- Intellisense. The power of this cannot be understated, and the lack of this is my one bone of contention with Ruby.
- It provides points of extension (via script and custom tasks), for the use of more appropriate languages where Nant is unsuitable.