It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor
TransWarp is a general purpose Aspect-Oriented Programming, Generative Programming, and CASE toolkit for Python. [Lambda the Ultimate]
This all sounds like patching the seriously flawed OOP model. Don't get me wrong. OOP is brilliant, 20 years ago; a factor 2^(-20/1.5) of today's memory and speed. But the model is so counterintuitive in various ways. One problem is that classes are ability-based. It lists all the things the object can contain, and what it can do. This is not so in the real world, where classes are restriction-based. F.e. a real-life car class says that a car is motorised, has more than 2 wheels and some other things. It specifically does not mention a color. This does not mean a car doesn't have a color, just that it isn't restricted. Yet most xml schema languages have chosen to copy the OOP model and don't allow other elements by default. As if it is possible to know in advance what there is to say about an object. (Try listing everyting there is to say about a human being.)
The model isn't necessarily flawed. Whether you believe it is—and in particular, whether you believe it is along the specific dimension the above author indicates—depends highly upon whether you're attempting to adopt open- or closed-world semantics. Frame-based knowledge representation systems grapple with the same issues and, while they strongly resemble object-oriented programming systems, they sometimes have surprising features for addressing the specific issue of "what if I want to attach a new property to this object?" or, harder still, "what if I no longer want this object to have this property?" See LOOM and PowerLOOM, the CLASSIC family of knowledge representation systems, or FramerD to see how they deal with the issue.
5:27:26 PM