Spoken as someone who doesn't understand metainformation. Bravo. You have added nothing to the conversation.
It is only when something is named that it can be discussed. Period. It is in how the naming boundaries are made that true understanding can come about. Those patterns you deride allow me to discuss rather high-level concepts with other practitioners of the art with much fewer words. This allows me to communicate more clearly and, more importantly, to think more clearly. Abstraction is one of the few attributes of humanity that separates us from the animals, that allows us to survive when we are, frankly, one of the weakest animals in the kingdom.
Or, to put it bluntly, discussing programming without the metaprogramming is like programming without subroutines.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?