Ted Neward explains why he doesn't like wide open dynamic support in a language:
First, the technical: dynamic languages may choose to expose moremeta-control over the language, but there's nothing inherent in the dynamic language that requires it, nor is there anything in a static language that prevents it. Languages/tools like Shigeru Chiba's OpenC++or Javassist, or Michiaki Tatsubori's OpenJavaclearly demonstrates that we can have a great deal of flexibility in how the language looks without losing the benefits of statically-typed environments. So to attribute this meta-linguistic capability exclusively to dynamic languages is a fallacy.
Secondly is the cultural issue: is the idea of granting meta-linguistic power (known as meta-object protocol, or MOP) to a language a good thing? Stu asserts that it is: "My concern is who controls the abstractions. Developer-oriented languages (like Scheme) give a lot of control (and responsibility) to developers. Vendor-oriented languages (like Java) leave that control more firmly in the hands of the vendor." So in whose hands are these abilities to change the language best placed?
*deep breath* I don't trust developers. There, I've said it.
Well, I'll take the contrary view (what a shocker!) - I don't trust the vendors. And I say that as the Product Manager for Cincom Smalltalk. When a vendor ships you a set of tools, you get the viewpoint of their developers as to how things ought to work. If that set of tools isn't malleable, you're just stuck. Hit a wall because the library isn't suitable for your needs? Too bad, you now have to argue with the vendor. Bearing in mind that you might not win.
Think that it'll be easy in the "obvious" cases? Heck, I'm the flipping Product Manager here, and I allegedly set direction - do you think the engineers buy everything I raise as a needed core library change (I've done a small number of them for BottomFeeder)? Heck no - how far do you think you'll get with Sun or MS?
The alternative is what you see in lots of Java projects - one more wrapper around the (insert your favorite example here, like String) class, because Sun decided to seal that one. It's just more pickaxe and shovel work to plow through, because it's simpler to not trust the developers. As opposed to those *cough* godlike *cough* library developers.