From: Pascal Costanza
Subject: [ANN] OOPSLA'05 CLOS tutorial
Date: 
Message-ID: <3mttciF18m9t8U1@individual.net>
OOPSLA'05 tutorial on generic functions and the CLOS Metaobject Protocol
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Town and Country Resort & Convention Center, San Diego, California
Sunday, October 16, 2005, 13:30 - 17:00
See http://p-cos.net/oopsla05-tutorial.html

Abstract.

The Common Lisp Object System (CLOS) is unique in two ways.

+ In most OOP languages, methods belong to classes and are invoked by 
sending messages. In CLOS, methods belong to generic functions instead 
of classes, and those generic functions select and execute the correct 
method according to the types of the arguments they receive.

+ The CLOS Metaobject Protocol (MOP) specifies how its essential 
building blocks are to be implemented in CLOS itself. This allows 
extending its object model with metaclasses that change important 
aspects of CLOS for a well-defined scope.

This tutorial introduces these two notions. I will develop - live during 
the tutorial - the code for an interpreter for generic functions that 
performs selection and execution of methods. I will then discuss how 
that code can be extended to introduce, for example, multimethods and 
AOP-style advices, and sketch how generic functions are implemented 
efficiently in the "real" world. In the second part, I will illustrate 
the extensibility of the CLOS MOP by implementing - live - the 
(hashtable-based) Python object model as a metaclass. Other practical 
extensions based on the CLOS MOP are also sketched, like 
object-relational mappings, interfaces to foreign-language objects, and 
domain-specific annotations in classes.

The audience will learn about the basic concepts of generic functions 
and metaobject protocols. They will get the necessary insights and 
pointers to existing literature and online material to deepen their 
knowledge. The focus of the tutorial is not on technical details but on 
the general ideas. A good understanding of class-based OOP is required. 
Experience with Lisp may be helpful, but the tutorial is specifically 
targeted at non-Lispers.

Feel free to contact me if you have any questions and/or suggestions.


Pascal