in reply to Programming using data structures

It seems like you're mostly talking about passing complex data structures vs. passing actual objects. The tradeoffs are just as you mentioned: passing data has no encapsulation at all, while passing objects can be verbose and slower. In general, I believe that objects are the way to go.

The example you chose -- schema definitions -- is actually something else in my opinion. This is configuration, and that's why it's such a natural for this kind of definition. It could easilly be done with XML or something instead.