Andrew Stopford's Weblog

poobah

News

Articles

Family

Old Blogs

To fight my fire I need a MOP

I feel like I have reached a peak, I understand and use Inheritance, Polymorphism, Abstraction, Encapsulation and Parametric Inheritance (Generics) every day. They solve my computing needs but I very often I can think of better approaches to a problem and wish the compiler and CLI were not without limits.

Generic covariance and contra-variance I have covered before so I'll jump right into something else I'd like to see.

Meta Objects and Protocols - Jeremy mentioned this before and I agree but rather than bending to my will the objects defining interface I also want to work with the object systems very own protocol interface, I want MOP...

MOP (Meta Object Protocols) the Protocols of the OOP system, how Inheritance, Polymorphism, Abstraction, Encapsulation are all defined and expressed in your language. With MOP you can change all of those, picking on inheritance, how and what you inherit and if you so wish change that. So why change that? Suppose I want to have multiple class inheritance? Better yet and my own personal want, object own inheritance, that is object inheriting it's self into the same object. Not the object creating/modifying/destroying but rewriting it's self. Suppose we wanted AOP, with MOP you no longer need to weave but rather use MOP to change the protocol rules your code will use for the aspects (some of the founding MOP researchers went on to create AOP using MOP). A MOP would also release the product team from needing to change the compiler\CLI when you need new things; instead you extend the MOP for those things.

Comments

Ayende Rahien said:

Start working with Boo

# September 8, 2008 3:27 PM

Andy Stopford said:

Oren,

I figured you might say that :), your a Boo expert so some high level questions?

Does Boo have a MOP?

Does Boo support the MOP own object creation that you find in CLOS and Ruby?

# September 8, 2008 4:23 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)