Version 13 of Meta-object Protocol

Updated 2009-05-14 14:37:55 by dkf

A Meta-object Protocol is used in different object-oriented systems to specify behavior of the underlying object system [L1 ] [that link is not available 2009-May-14].

Different object-oriented languages have different meta-object protocols.

  • Lisp [L2 ]
  • Perl 5 [L3 ]
  • Perl6 [L4 ]
  • Python [L5 ] [that link is not available 2009-May-14]
  • Smalltalk [L6 ]

A meta-object protocol can also be used in applications where reflection is needed for a system to be able to examine itself

  • for security [L7 ]
  • for distributed applications [L8 ] [that link is not available 2009-May-14]
  • for distributed applications [L9 ]
  • for distributed applications [L10 ] [that link is slow as of 2009-May-14]
  • for frameworks [L11 ]

The term, reflection, is similar in meaning to Introspection.

See also TIP #117 [L12 ].


So, what does this have to do with Tcl?

Well, it really has to do with what features of a meta-object protocol are built into Tcl by itself, and what features are added by each of the object-oriented extensions.

escargo 25 Nov 2002

Also, the inclusion of a meta-object protocol can be the foundation of object-oriented extensions. I think of TIP 279 [L13 ] as defining a MOP to build OOP.

escargo 3 No 2006

DKF (14-May-2009): Not really. It doesn't allow all that much flexibility in terms of the actual implementation semantics. That particular TIP allows any kind of OO system to be built, so long as it's XOTcl; it's the Henry Ford of core OO proposals. Writing a customizable MOP is very difficult; even now (having designed and implemented TclOO) I still feel I don't grasp the full space of possibilities firmly enough to be able to build a scripted customization interface for the basic semantics.


Category Concept | Category Object Orientation