I often see people commenting that what they want is a simple language, with a simple specification and not too many excess features, odd rules and multiple ways of doing things. I've never understood this except when the opposite is taken to the extreme. Isn't a more meaningful measure of language complexity the complexity of the code needed to do common programming tasks? For example, if a language has a huge specification, a lot of different abstractions and complexity management tools and tons of features for library writers, it might be regarded as a complicated language. However, if those features are useful and allow code to be written that is terser, more straightforward, more readable, less syntactically noisy and DRYer than other languages, and allows libraries with simpler, more user-friendly APIs to be written, doesn't that count towards the simplicity of the language in a practical sense?
As a concrete example (please treat this only as an example and don't let this question evolve into a flamewar about delegates), let's use delegates. Of course, noone really needs delegates. They can be emulated with more general features like classes/interfaces or function pointers. They also add bloat to the language specification. However, they allow code written in the language to be terser, more straightforward and less syntactically noisy, in other words simpler, than if delegates are Greenspunned using other language features. Shouldn't that count as a net simplicity win?