Hi Eliot--
I write:
Right, there's no need for anyone to use UUIDs when referring to classes in Smalltalk expressions.
Torsten responds:
Yes, exactly this. We still use regular names for the classes - but for the tools they have a distinguishable ID. Best is to use a UUID for the ID as it is unique from the beginning. So if you create a class "Foo" and I create one both are unique by ID - even when using the same name.
You respond:
But this doesn't cope with the fact that I can take a copy of your class, modify my copy by adding or changing a method, etc, and hence derive two different versions of the class with the same UUID.
A newly-created class copy would give a new ID to itself, as part of its post-copy behavior. The UUID of a class corresponds to its object identity. Sure, you could manually overwrite the ID field of any class with something mischievous, just as, traditionally, you can manually overwrite any field of any object you like. We have the means to deal with that broader issue, if we want (e.g., we can implement object immutability).
If a class is defined by what it is (its methods, instance variables, superclass, etc) then it doesn't need a UUID. Its own form uniquely (and reliably) identifies it. If you use UUIDs then is the UUID modified every time some modification is made to it?
No, the UUID is never modified, and no, a class is not defined by its state (I suggest). For our purposes here, a class is defined only by its object identity, and we only find it interesting to keep track of that identity because that class object prescribes behavior. (Typically, that corresponds to the class object being a subinstance of Behavior, but this need not be so.)
By establishing distributed identity, we are free to give whatever name we want to each class object. Every class name is thus unconstrained; every class effectively has its own namespace. This is the concept of "Name And Identity Are Distinct" (NAIAD). To implement it, we express object identity in terms that are usable in a distributed system, using a commonly-known algorithm (UUIDs).
-C
-- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS)