Java and C# are both such stifling languages that you need to be able to use code generators to make them effective. (http://simonwillison.net/2004/Feb/11/codeGeneration/) We've always known that dynamic languages are a great way to create "little languages" for specific tasks. But we don't yet fully appreciate that all programming is a continuous process of language invention. And we don't (yet) evaluate programming-language productivity on those terms. .... We are linguistic animals endowed with a protean ability to generate language. Naturally we'll want that same generative power in our programming languages. (http://simonwillison.net/2004/Feb/11/codeGeneration/) (Dave Thomas)