It can work but it works best when the language is kept dumb.<p>A dumb declarative language is easier to understand and easier to maintain. It can be used to help maintain a strict separation of concerns.<p>The smarter you try to make the language, the worse it becomes. Ant &amp; MSBuild AFAIK are basically full programming languages in their own right so there was really no point to them actually being their own language.