From: Austin Ziegler Date: 2005-04-21T22:29:17+09:00 Subject: Re: [EVALUATION] - E03e - The Ruby Object Model (Summary) [Fair warning to those who plan on emailing me regarding this response. I'll be ignoring you. I am posting this to make sure that there is a public refutation to Ilias's incorrect statements below. -a] On 4/21/05, Ilias Lazaridis wrote: > As stated before, the following documentation is false: Stated incorrectly. The documentation is, in fact, correct. It doesn't mesh with UML, perhaps, and it doesn't mesh with your limited capacity for understanding, but that doesn't make it incorrect. Metaclass -- singleton class, virtual class, or whatever you wish to call it -- is something that doesn't mesh well with standard object notations. You are the first person that I've seen in three and a half years to suggest that they don't understand this documentation once they've started playing with the capabilities of Ruby and understanding the practical means by which the object model is supported in the language. As others have pointed out -- with lots of supporting code -- it is not the documentation which is wrong here. [...] > a) The term "meta-classes" is false. > Correction: "specializing-singleton-objects" It is not false. It is, perhaps, over used in a variety of terms. It is "meta" in terms of Ruby objects. Your term may be more useful in the future, but I have my doubts. As Class is an Object, a MetaClass is a MetaObject ;) > b) vertical arrows do not represent inheritance > e.g.: Object----> (Object) > Correction: Object-----(Object) Those are horizontal, not vertical. It is also one of those things that, as others have pointed out, is not *quite* as *you* understand it. Metaobjects don't show up in the public inheritance hierarchy, but that makes them no less real. > c) the classes in "()" do not belong to the object model > Correction: remove (showcase sso in seperate topic) This is incorrect. The metaobjects/metaclasses shown in the diagrams are essential, if not normally visible, parts of the Ruby Object Model. I do not believe that this is just an implementation detail, as it is exposed to the language for use. > My final questions are basicly: > * Ruby is OO. Why is the sso not directly accessible? The metaobjects/metaclasses are not directly accessible because Matz has chosen not to make them directly accessible. There is an RCR which recommends the creation of a method to make this easily and directly accessible because Ruby developers have discovered the value and utility that these metaobjects have. There is significant disagreement on the name of what this method should be. However, as Why the Lucky Stiff has demonstrated, it's a no-brainer for users to develop this single method themselves -- and he's even written it for them to copy or use as they please. > * Who has written the "ri Class" documentation? Matz wrote the essentials. I don't think that anyone knows the Ruby object model better than he. > * Can I expect an apology for this false documentation? Given that the docuemntation isn't false, no. Of course, even if you *were* correct and the documentation was false, I suspect that you'd get an apology only if hell is endothermic. And, as we all know, it's exothermic. (Either that, or you'll get your apology after all atomic motion has stopped because.) -austin -- Austin Ziegler * halostatue@gmail.com * Alternate: austin@halostatue.ca