Dear Hugh:
Thanks so much for your thoughtful reply to my essay!
I have actually thought about the similarities between the layers in my essay and the layers that appear when programming. I think though that there is a clear difference. Think of a subroutine in a computer program:
procedure DoStuff( var1, var2, ... )
begin
...
return stuff;
You can use this procedure from a higher level and you do not care how it looks on the inside. You can replace the whole thing and as long as the new routine accepts the same variables and returns the same kind of data you'll be fine.
The important point is now that you have to know what kind of data to hand the procedure and what to expect back (c++ overloading is just a slight weakening of this). This part of the procedure is external to it. What I was describing is more internal. The meaning of a procedure becomes clear by kicking it.
I think our real difference becomes clear when you say: "Yes, but a dictionary is just information, more bits. It does not have to contain (even pointers to) Its." You are pointing to an infinite regression here that I want to end. The way I do this is by having Its interact. That is the key part of my argument.
Looking forward to reading your essay.
Cheers
Olaf