-
The above thread has led to this code:
class Class
def Meta()
@Meta ||= (class<<self;self;end)
end
end
which is modified here to:
class Object
def sso()
@sso ||= (class<<self;self;end) # see code below
end
end
simplified:
def sso()
unless @sso
@sso = (class<<self; self; end) #
end
@sso
end
-
sso = Specializing Singleton Object
-
The sso contains definitions (methods, attributes, constants) which
specialize the behaviour of its carrying object.
The "sso" of a "class object" is used to specialize the behaviour of the
class (against Class).
-
The sso's are essentially internal implementation details, although they
are accessible (see code above).
The sso's are _not_ part of the Ruby Object Model (e.g. inheritance
hierarchy).
-
-
-
As stated before, the following documentation is false:
cmd:> ri Class
"Classes, modules, and objects are interrelated. In the diagram that
follows, the arrows represent inheritance, and the parentheses
meta-classes. All metaclasses are instances of the class `Class'."
+------------------+
| |
Object---->(Object) |
^ ^ ^ ^ |
| | | | |
| | +-----+ +---------+ |
| | | | |
| +-----------+ | |
| | | | |
+------+ | Module--->(Module) |
| | ^ ^ |
OtherClass-->(OtherClass) | | |
| | |
Class---->(Class) |
^ |
| |
+----------------+
-
a) The term "meta-classes" is false.
Correction: "specializing-singleton-objects"
b) vertical arrows do not represent inheritance
e.g.: Object---->(Object)
Correction: Object-----(Object)
c) the classes in "()" do not belong to the object model
Correction: remove (showcase sso in seperate topic)
-
-
-
My final questions are basicly:
* Ruby is OO. Why is the sso not directly accessible?
* Who has written the "ri Class" documentation?
* Can I expect an apology for this false documentation?
-
-
-
http://lazaridis.com/case/lang/ruby
.
On 4/21/05, Ilias Lazaridis <il...@lazaridis.com> 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 * halos...@gmail.com
* Alternate: aus...@halostatue.ca
> b) vertical arrows do not represent inheritance
> e.g.: Object---->(Object)
> Correction: Object-----(Object)
Pretty sure you mean "horizontal arrows" not "vertical arrows".
> My final questions are basicly:
>
> * Ruby is OO. Why is the sso not directly accessible?
You've posted code in this message showing how to access an "sso".
James Edward Gray II
yes, of course.
my apologies.
>> My final questions are basicly:
>>
>> * Ruby is OO. Why is the sso not directly accessible?
>
> You've posted code in this message showing how to access an "sso".
which is an indirection.
My question contains "directly".
[please no more harisplitting]
> James Edward Gray II
.
Strange, first you complain about somebody else not following your
question word-by-word, and next sentence you complain about
hairsplitting. Pot. Kettle. Black. And just in case you don't know that
phrase, the german equivalent'd be "Wer im Glashaus sitzt, sollte keine
Steine werfen." (Your website is registered in Germany and your
snail-mail address is german).
So, to come back to topic, maybe you should define "directly" first?
You can access your so called "sso"s from within Ruby, without
resorting to third party libraries or low level C code. That is
"direct", in my book at least.Just because you don't like the syntax
_how_ you can access them doens't mean they're not readily accessible,
as numerous posters before have answered already. And you even got a
"direct" answer to your question, from Austin Ziegler
---8<-----
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.
---8<-----
So. There. Respect somebody investing time to answer by at least reading
the answers.
I hope the responsible person has more courage.
.
Since you are no longer contributing to this thread, and have been
given the answers you requested. This thread is closed, please
refrain from posting further in it.
[thread closed]
--
===Tanner Burson===
tanner...@gmail.com
http://tannerburson.com <---Might even work one day...
the documentation is false.
see below.
>>a) The term "meta-classes" is false.
>>Correction: "specializing-singleton-objects"
>
> It is not false.
[...] - (babbling, justifying, talkaround)
"meta-classes" is completely false.
possibly you believe this one more:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
>>b) vertical arrows do not represent inheritance
>>e.g.: Object----> (Object)
>>Correction: Object-----(Object)
>
> Those are horizontal, not vertical.
ok, my mistake.
I apologize.
> It is also one of those things
[...] - (babbling)
please focus.
ri Class states: "the arrows represent inheritance"
but: the _horizontal_ arrows do _not_ represent inheritance.
this is a simple, clear and undoubtable error.
>>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.
This is false, see below
> I do not believe that this is just an implementation detail,
> as it is exposed to the language for use.
what you believe is irrelevant.
reality counts.
and (especially for you) possibly this here:
http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/40548
>>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.
[...]
I see.
>>* Who has written the "ri Class" documentation?
>
> Matz wrote the essentials.
what do you mean by "essentials"?
Is Mr. Matsumoto the author of the "ri Class" content or not?
> I don't think that anyone knows the Ruby
> object model better than he.
"knowing" means not in the same time "ability to communicate".
>>* Can I expect an apology for this false documentation?
>
> Given that the docuemntation isn't false, no.
[...] - (babbling)
This question target's the responsible person.
.
>
> >>b) vertical arrows do not represent inheritance
> >>e.g.: Object----> (Object)
> >>Correction: Object-----(Object)
> >
> > Those are horizontal, not vertical.
>
> ok, my mistake.
>
> I apologize.
[...] - (repeating questions already answered)
>
> > I do not believe that this is just an implementation detail,
> > as it is exposed to the language for use.
>
> what you believe is irrelevant.
>
> reality counts.
>
what you believe to be reality is irrelevant.
the opinions of those actually using the language on a daily basis for
real applications, counts.
the opinions of those glancing across the language without attempting
to use it, is rrelevant.
>
> >>* Who has written the "ri Class" documentation?
> >
> > Matz wrote the essentials.
>
> what do you mean by "essentials"?
Possibly this will help?
http://dictionary.reference.com/search?q=essentials
>
> Is Mr. Matsumoto the author of the "ri Class" content or not?
>
> > I don't think that anyone knows the Ruby
> > object model better than he.
>
> "knowing" means not in the same time "ability to communicate".
>
have you attempted communication with him? if so please provide
transcripts or links of this.
> >>* Can I expect an apology for this false documentation?
> >
> > Given that the docuemntation isn't false, no.
> [...] - (babbling)
>
> This question target's the responsible person.
>
responsible for what? providing documentation you are incapable of
understanding?
> ..
>
> --
> http://lazaridis.com
Crikey, I woke up one morning and ruby-talk was a dictatorship...
:-)
--
Into RFID? www.rfidnewsupdate.com Simple, fast, news.
>Crikey, I woke up one morning and ruby-talk was a dictatorship...
>
>:-)
>
>
>
"I didn't know we had a king. I thought we were an autonomous collective."
The various Ilias threads are funnier if you envision the "Argument
Sketch" from Flying Circus while reading them...
--
Alan Garrison
Cronosys, LLC <http://www.cronosys.com>
Phone: 216-221-4600 ext 308
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Thu, 21 Apr 2005 23:29:31 +0900, Ilias Lazaridis <il...@lazaridis.com> writes:
|I hope the responsible person has more courage.
I may be the responsible person.
I assume your question is why there's no method to obtain singleton
class (per object hidden class), right? That's because I see no real
"need" for it.
Besides seeing no real need, such method is highly connected to the
current implementation. Future Ruby (or different implementation of
Ruby interpreter) may want to choose other strategy, for example,
creating a temporary class-like object to manipulate singleton
methods, then update internal object structure according to that
class-like object. Under the implementation like this, a method to
obtain singleton class has no meaning.
Anyway, for your information, David Alan Black is in the process of
persuading me to add such a method.
matz.
ISBO = Instance Specific Behaviour Object
dvto = Dedicated Virtual Table Object
dvco = Dedicated Virtual Class Object
dvc = Dedicated Virtual Class
...
.
introduction of more confusing non-standard acronyms for your
understanding will do nothing but confuse the issue at hand.
please remain on-topic and discontinue this line of off-topic communication.
have you also decided not to reply to my above comments?
this is considered rude, and should be stopped. again, i must insist
this thread is closed and you should refrain from further off-topic
discussions in it.
"may be" is not an answer that I would expect from an PL designer.
> I assume your question is why there's no method to obtain singleton
> class (per object hidden class), right?
You find my 3 questions within the original message of this thread.
Could you please have the courtesy to reply there?
> That's because I see no real "need" for it.
I see.
> Besides seeing no real need, such method is highly connected to the
> current implementation. Future Ruby (or different implementation of
> Ruby interpreter) may want to choose other strategy, for example,
> creating a temporary class-like object to manipulate singleton
> methods, then update internal object structure according to that
> class-like object. Under the implementation like this, a method to
> obtain singleton class has no meaning.
There's something that irritates me with all this.
But I'm not sure what.
> Anyway, for your information, David Alan Black is in the process of
> persuading me to add such a method.
I don't know "David Alan Black".
But: not he should 'pursuade' you to add such a method.
Rationality should do.
> matz.
.
|You find my 3 questions within the original message of this thread.
|Could you please have the courtesy to reply there?
> * Who has written the "ri Class" documentation?
I wrote the original figure. The documentation is not by me, but by
the English doc team members.
> * Can I expect an apology for this false documentation?
I'm not sure how much useful an apology can be, but you can. I feel
sorry that you've misunderstood.
|I don't know "David Alan Black".
|
|But: not he should 'pursuade' you to add such a method.
|
|Rationality should do.
You don't have to worry about him to force me to add it without
rationality.
matz.
dsc = dedicated singleton class
sco = singleton class object
asco = attached singleton class object
"singleton instance" = the one and only instance
"singleton method" = a method, exclusively for one instance
"singleton class" = a class, exclusively for one instance
=>
sco = Singleton class object
sc = Singleton class
s = singleton
=> <object>.singleton
=> <object>.singletonClass
obj.class
obj.class_singleton
obj.singleton_class
> introduction of more confusing non-standard acronyms for your
> understanding will do nothing but confuse the issue at hand.
???
> please remain on-topic and discontinue this line of off-topic communication.
what ???
> have you also decided not to reply to my above comments?
> this is considered rude, and should be stopped. again, i must insist
> this thread is closed and you should refrain from further off-topic
> discussions in it.
please.
get serious.
.
where can I find a list of the english doc team members?
I would like to know who is responsible for this text.
>>* Can I expect an apology for this false documentation?
>
> I'm not sure how much useful an apology can be, but you can.
you are not the direct responsible (although you should have verified
this critical documentation part).
> I feel sorry that you've misunderstood.
If you really feel sorry, than you should possibly reply to my initial
message and comment what i've worked-out within the last 2 weeks.
As you see, the community has problems to accept a very simple fact:
the "ri Class" documentation is defective.
> |I don't know "David Alan Black".
> |
> |But: not he should 'pursuade' you to add such a method.
> |
> |Rationality should do.
>
> You don't have to worry about him to force me to add it without
> rationality.
I don't worry about this.
You should trust your userbase.
And let them decide the power which they will use (or abuse).
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Fri, 22 Apr 2005 01:44:32 +0900, Ilias Lazaridis <il...@lazaridis.com> writes:
|> I feel sorry that you've misunderstood.
|
|If you really feel sorry, than you should possibly reply to my initial
|message and comment what i've worked-out within the last 2 weeks.
I don't think I could read through all of your post and reply _before_
feeling sorry. And I will add a word "vertical" before "arrow" for
the next check in, anyway.
matz.
I wonder how JRuby implements it? Any takers for a code-walk?
My suggestion: if you don't like certain parts of the documentation,
discuss the "mistakes", on this group in a friendly way and at the end
rewrite the documentation parts you did not like based on the
discussion's conclusions - after that offer the author of the
documentation to exchange the parts you found mistakes in with your
corrected version.
newbish greetings
Jonas
The heck, no. Can we expect an apologoy from you for being such an asshole?
Has anybody ever suggested you writing your own language, its Object
Model and the so much desired correct documentation?
Regards,
Ed
--
Encontrá a "Tu psicópata favorito" http://tuxmaniac.blogspot.com
"Tener una amiga en Ginebra es como tener quinotos en almibar o uvas en ron."
Guys, Ilias does have a point.
If we insist on that metaclasses as we have now are just an accidental
implementation of the singleton feature -- and the authoritive one,
Matz seems to do so -- then we can conclude that they cannot be part of
the Ruby object model, where Ruby is an abstract entity, Ruby, as such,
the language.
So then I accept that he doesn't accept the "ri Class" diagram. Even if
that's correct if we understood Ruby as its realized by the canonical
implementation today.
However, if we decide to mean Ruby as the abstract language, then maybe
it just doesn't make sense to plea for a *class* diagram -- if we ditch
metaclasses, Ruby's OO ceases to be purely class based. It still makes
sense to ask for some kind of figure representing inheritance.
I don't know UML, is it capable of representing classless (or not fully
class based) OO?
If not, then the answer to Ilias' question: "either mean Ruby as the
current implementation defines it, or don't ask for an UML diagram
'cause can't be made one."
Csaba
I think, in a 90% the singleton class is used for:
* define methods for the object
* attr
* private
* alias_method
* undef and undef_method
Maybe if you provide a way to do the last four from inside instance_eval,
people would forget the singleton class...
On Fri, 22 Apr 2005, Yukihiro Matsumoto wrote:
> Hi,
>
> In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
> on Thu, 21 Apr 2005 23:29:31 +0900, Ilias Lazaridis <il...@lazaridis.com> writes:
>
> |I hope the responsible person has more courage.
>
> I may be the responsible person.
>
> I assume your question is why there's no method to obtain singleton
> class (per object hidden class), right? That's because I see no real
> "need" for it.
>
> Besides seeing no real need, such method is highly connected to the
> current implementation. Future Ruby (or different implementation of
> Ruby interpreter) may want to choose other strategy, for example,
> creating a temporary class-like object to manipulate singleton
> methods, then update internal object structure according to that
> class-like object. Under the implementation like this, a method to
> obtain singleton class has no meaning.
What would: (class << obj; self; end) give you if there's no
singleton class?
David
--
David A. Black
dbl...@wobblini.net
This model is defective:
http://lazaridis.com/case/lang/ruby/TheRubyObjectModel.png
The U in UML is also deceptive and incorrect. Please notify those
responsible for
UML and aforementioned model and correct.
[SIG_HUP]
disconnected.
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Fri, 22 Apr 2005 06:25:23 +0900, "David A. Black" <dbl...@wobblini.net> writes:
|> Besides seeing no real need, such method is highly connected to the
|> current implementation. Future Ruby (or different implementation of
|> Ruby interpreter) may want to choose other strategy, for example,
|> creating a temporary class-like object to manipulate singleton
|> methods, then update internal object structure according to that
|> class-like object. Under the implementation like this, a method to
|> obtain singleton class has no meaning.
|
|What would: (class << obj; self; end) give you if there's no
|singleton class?
In that case, it would give you a (perhaps one-time only) class-like
object described above.
matz.
Please remove me from the "Ilias warning" mailing list.
--
J. Lambert
On Fri, 22 Apr 2005, Yukihiro Matsumoto wrote:
So....
x = class << obj; self; end
y = class << obj; self; end
x and y would be two class-like objects, instead of one class? Also,
what exactly is a class-like object?
Maybe there should be singleton modules instead of singleton
classes.... (That would also solve the problem of "singleton class"
having two meanings.)
cannot review request right now
input overflow
-
irrelevant
>J. Lambert
E
--
template<typename duck>
void quack(duck& d) { d.quack(); }
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Fri, 22 Apr 2005 09:04:16 +0900, "David A. Black" <dbl...@wobblini.net> writes:
|> |What would: (class << obj; self; end) give you if there's no
|> |singleton class?
|>
|> In that case, it would give you a (perhaps one-time only) class-like
|> object described above.
|
|So....
|
| x = class << obj; self; end
| y = class << obj; self; end
|
|x and y would be two class-like objects, instead of one class? Also,
|what exactly is a class-like object?
Perhaps. And the latter question is hard to answer, since it still is
a vague idea. I just don't want to deny the possibility of different
implementation.
|Maybe there should be singleton modules instead of singleton
|classes.... (That would also solve the problem of "singleton class"
|having two meanings.)
I'm not sure why singleton modules are better than singleton classes.
matz.
> |Maybe there should be singleton modules instead of singleton
> |classes.... (That would also solve the problem of "singleton class"
> |having two meanings.)
>
> I'm not sure why singleton modules are better than singleton classes.
Hm, Modules can not be instantiated (so it would be one less special
case) and the ability of including modules in other objects might be nice.
On Fri, 22 Apr 2005, Yukihiro Matsumoto wrote:
I didn't express that thought very clearly. I was thinking: modules
are already a sort of "class-like" (but non-instantiable) object. But
it's probably not relevant, since I think what you're talking about is
implementations that avoid the whole container-creation process.
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Fri, 22 Apr 2005 09:32:08 +0900, "David A. Black" <dbl...@wobblini.net> writes:
|> I'm not sure why singleton modules are better than singleton classes.
|
|I didn't express that thought very clearly. I was thinking: modules
|are already a sort of "class-like" (but non-instantiable) object. But
|it's probably not relevant, since I think what you're talking about is
|implementations that avoid the whole container-creation process.
Yep, singleton class is a long lived object under the current
implementation. The temporal class-like object can reduce number of
live objects. Note that I'm not yet sure if it's a good idea or not.
I just don't want to deny the idea before knowing it's bad.
matz.
On Fri, 22 Apr 2005, Yukihiro Matsumoto wrote:
Maybe the best thing (easy for me to talk about since I don't have to
implement it :-) would be a kind of "class interface" to the object's
singleton methods. If you did:
def obj.new_method
end
no Class would be created. But if you wanted to do other things, you
could still do:
class << obj
include SomeModule
@var = 1
end
etc. "self" in that scope could be a different thing each time (sort
of like Object#method).
ROTFL. Now I'm going to have to start an Eero warning list.
Now I was just wondering what sort of medication one had to be on to draw an
infinitely recursive object model based on an error condition. Thank
goodness Class#superclass doesn't return -1 on error, otherwise we'd all be
shocked to find out Object inherited from an instance of Fixnum. ;-)
--
J Lambert
Once again I am not interested in receiving any more solicitations via email
from your organization so please remove me from your mailing list. It's
rude to send unsolicitated spam email. It's rude to send mime email
attachments. It's rude to not respect reply-to settings. A lot of things
are rude not the least of which is to send email warnings to anyone who
happens to respond to some poster on a mail list who happens to be on some
organization's warning list or black list. So unless you have a response to
the actual content of my post on ruby-talk ML THEN DONT SEND ME ANY MORE
EMAIL. I am simply not interested and will respond to it ON THE LIST..
Thank You
--
J. Lambert
Once again I am not interested in receiving any more solicitations via email
from your organization so please remove me from your mailing list. It's
rude to send unsolicitated spam email. It's rude to send mime email
attachments. It's rude to not respect reply-to settings. A lot of things
are rude not the least of which is to send email warnings to anyone who
happens to respond to some poster on a mail list who happens to be on some
organization's warning list or black list. So unless you have a response to
the content of my post on ruby-ML THEN DONT SEND ME ANY MORE FREAKING EMAIL.
Thanks for the heads up.
*plonk*
> =>
>
> sco = Singleton class object
>
> sc = Singleton class
>
> s = singleton
>
> => <object>.singleton
>
> => <object>.singletonClass
>
> obj.class
> obj.class_singleton
> obj.singleton_class
obj.exclusive_singleton_class
abstracted (not specifying a class):
obj.exclusive_behaviour_carrier
obj.ebc
-
obj.exclusive_class
obj.exclass
.
Feeling sorry for 'you've missunderstood' is irrelevant.
I ask you for an apology, from an analyst to an analyst.
An apology for _defective_ core documentation.
-
I ask you to read _one_ message.
The initial message of this thread.
Please answer concisely and completely within the full context, thus
readers get the complete picture of this issue.
> And I will add a word "vertical" before "arrow" for
> the next check in, anyway.
>
> matz.
This is not enouth.
As the _direct_ responsible for the defective "ri Class" documentation,
you should have the courtesy, courage and integrity to reply directly to
my initial message.
-
You owe this.
-
To the community.
To my persons reputation.
To your persons reputation.
An most of all: to the reputation of the name "Matsumoto" that you carry.
-
[REQUOTE]
>>> I wrote the original figure. The documentation is not by me, but by
>>> the English doc team members.
>>
>> where can I find a list of the english doc team members?
>>
>> I would like to know who is responsible for this text.
[REQUOTE]
ruby source-code, file "object.c"
"
void
Init_Object()
{
VALUE metaclass;
rb_cObject = boot_defclass("Object", 0);
rb_cModule = boot_defclass("Module", rb_cObject);
rb_cClass = boot_defclass("Class", rb_cModule);
metaclass = rb_make_metaclass(rb_cObject, rb_cClass);
metaclass = rb_make_metaclass(rb_cModule, metaclass);
metaclass = rb_make_metaclass(rb_cClass, metaclass);
"
vs.
"In Ruby, the Class class is the class of all classes, no metaclass."
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
.
I have 3 points.
marked as a) b) c) in the original message.
but at this point, nearly no one of this community has an intrest if I
have "a point".
Most know: I am right.
But the "weak puppet" species is incapable to admit a failure within
'their' language system.
This is the point where the "spiritual leaders" of the community intervene.
But it looks that they too don't have the courage to admit their failures.
Possibly this is the fault of the community, which treats the designers
sometimes like God.
-
Language Designers are humans, not God's.
> If we insist on that metaclasses as we have now are just an accidental
> implementation of the singleton feature -- and the authoritive one,
> Matz seems to do so -- then we can conclude that they cannot be part of
> the Ruby object model, where Ruby is an abstract entity, Ruby, as such,
> the language.
>
> So then I accept that he doesn't accept the "ri Class" diagram. Even if
> that's correct if we understood Ruby as its realized by the canonical
> implementation today.
>
> However, if we decide to mean Ruby as the abstract language, then maybe
> it just doesn't make sense to plea for a *class* diagram -- if we ditch
> metaclasses, Ruby's OO ceases to be purely class based.
Ruby's OO is not purely class based.
"Everything is an Object" is invalid, too.
Cause if you have objects, accessible via an special notation, which can
be "changed in future version", then you have no OO.
> It still makes
> sense to ask for some kind of figure representing inheritance.
>
> I don't know UML, is it capable of representing classless (or not fully
> class based) OO?
To my understanding, classless is nothing special.
Just an Object which carries the (dynamic) Class Specification.
You can draw a box, with a stereotyp "classless" or "dynamic".
[a small research should provide the valid standard for this]
> If not, then the answer to Ilias' question: "either mean Ruby as the
> current implementation defines it, or don't ask for an UML diagram
> 'cause can't be made one."
The inconsistence starts within the ruby sources.
Concise Terminology is the starting point.
_Clean_ and _transparent_ OO the fundament.
_Respect_ to the analytic individuum the essence of all progress.
-
But it looks I cannot find all this within Ruby.
.
His only obligation is his personal commitment to the language. He
could stop working on it tomorrow if he felt like it.
Technically he's providing his time and effort on a volunteer basis,
you wouln't complain to Mother Teresa if her rice was overcooked would
you?
You need to be a bit more diplomatic with your interactions, otherwise
you will ( have ) rub people the wrong way and hence not achieve your
goals.
-1, it's bad form to splice a poster mid sentence and thereby quote them out
of context.
The corrected quote is:
"So unless you have a response to the content of my post on ruby-ML THEN
DONT SEND ME ANY MORE FREAKING EMAIL."
I, of course, do accept and respond to personal email regaring the "content"
of my posts in a polite and discrete way. Although maybe not in a timely
fashion.
> *plonk*
+2, for using the time worn and international recognized sybolic for: a)
dealing with trolls, b) indicating no further discussion will be
forthcoming, and c) expressing one's frustraton and displeasure to the
group.
Of course being a ruby forum, maybe 'tis better updated and expressed as....
*nil*
Err, even better how about doing it with a nice friendly smile?
*nil* :-)
--
J. Lambert
I too was attacked and savagely beaten by a language designer in my youth.
I kept it inside for many years and didn't even realize it until it was
brought out in hypnotherapy 7 years ago. Sadly by that time the language
designer was deceased and I could not confront her. Not that it would have
mattered much anyway, she being an Admiral and protected by the military
industrial complex. You are far luckier being able to confront the abusive
LD amost directly through the internet. I just wanted to let you know that
YOU ARE NOT ALONE. Thank you for bravely standing up and sharing. Maybe
others like us who have been abused by LD's can finally come out of hiding
and get the recognition and support we need. As for how I conquered my
codependent behavior and COBOL addiction... NO I didn't just replace it with
Ruby...don't be ridiculous. I found Jesus. Well Jesus and Ruby. That may
not work for you. But good luck. I'm pulling for you.
:-)
please let Mr. Matsumoto speak for himself in this issue.
.
It's a matter of degnity.
Mr. Matsumoto knows what I am talking about.
> My suggestion:
[...] (process)
.
In message "Re: [EVALUATION] - E03e - The Ruby Object Model (Summary)"
on Fri, 22 Apr 2005 14:24:35 +0900, Ilias Lazaridis <il...@lazaridis.com> writes:
|ruby source-code, file "object.c"
|
|vs.
|
|"In Ruby, the Class class is the class of all classes, no metaclass."
|
|http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
The figure in "object.c" describes internal structure. Each object
can have its per-object hidden class-like object, which we call
singleton class. But you don't have to implement Ruby like that.
It's just for _my_ implementation.
On the other hand [ruby-talk:40537] describes the language model, or
specification, which does not necessarily have metaclass. Classes are
no different from other objects. They have singleton methods just
like other objects. We often call singleton methods of classes as
"class methods" by tradition inherited from other languages.
If someone come up with better Class description, I'd love to update
the document.
matz.
dignity.
> Mr. Matsumoto knows what I am talking about.
>
>> My suggestion:
>
> [...] (process)
>
> .
>
.
Please.
No more responses, just let him be.
On 4/22/05, Ilias Lazaridis <il...@lazaridis.com> wrote:
>
> ..
>
> --
> http://lazaridis.com
>
>
--
Bill Atkins
> Feeling sorry for 'you've missunderstood' is irrelevant.
>
> I ask you for an apology, from an analyst to an analyst.
>
> An apology for _defective_ core documentation.
Man, it's time for you to realize when to SHUT THE FUCK UP!
We will not have you bashing people who provide you with free
programming languages with free documentation, whether the documentation
or the programming language agrees with you or not, so SHUT THE FUCK UP!
You have made your point. We all know that you think the documenation
for Class is wrong. We all know this. It's been painfully iterated by
you over several threads these past few weeks. Many smart and helpful
people have tried to explain, in great detail, precisely what is wrong
with your understanding of the issue, so as to make it possible for you
to move on beyond "ri Class" in your "evaluation". You haven't. Now
it's time for you to SHUT THE FUCK UP!
Please realize that you will not get an apology. You are the one who
should issue an apology for wasting people's time with your badly
thought through, badly written, and badly mannered postings. And when
you have, it's time for you to SHUT THE FUCK UP!
Everyone knows you are a deterrent. To most, this means that they'll
simply ignore anything that relates to you on this list. Still, some
people on this list are so nice that they continue to communicate with
you, even though they've been burned in the past. Don't you dare be
rude to those individuals. Instead, do dare to SHUT THE FUCK UP!
I'm sure that the people you are attacking in your threads can defend
themselves and don't need me to do their fighting for them. I'm also
sure that any time they waste on you is time that they won't have to
help other people on this list. There are lots of people on this list
with real problems and we won't let your juvenile behavior detract from
their available help any more, so SHUT THE FUCK UP!
In conclusion, Ilias, you really need to SHUT THE FUCK UP!,
nikolai
--
Nikolai Weibull: now available free of charge at http://bitwi.se/!
Born in Chicago, IL USA; currently residing in Gothenburg, Sweden.
main(){printf(&linux["\021%six\012\0"],(linux)["have"]+"fun"-97);}
Your answering behaviour is ungentle.
Against me and against readers (current and future archive readers).
I cannot believe that you simply ignore the essential part of my message.
I've recreated the message which you have essentialy ignored:
-
-
-
-
This is not enouth.
-
You owe this.
-
To the community.
To my persons reputation.
To your persons reputation.
-
[REQUOTE]
[REQUOTE]
ruby source-code, file "object.c"
"
void
Init_Object()
{
VALUE metaclass;
vs.
"In Ruby, the Class class is the class of all classes, no metaclass."
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
.
Ok but are you not a little curious as to why you seem to be
antagonising so many people? Even if you are 'in the right', wouldn't
life be better if you could get your answers without annoying people?
Surely some reflection is called for. An open mind is essential for
progress in life.
> ..
>
> --
> http://lazaridis.com
No you are really on the wrong track. After some research, and at great
personal risk I might add, I managed to obtain a photo of the responsible
parties in action.
/\_/\
| ..|
| `> ChunkyBacon!
| O | / /\/\
| | |..|
| | Chunky <' |
| | Bacon! |0 |
=begin
Class Documentation - A class is much like chunky bacon more than
an Object. Sort of like meta-chunky bacon, and by meta I mean the
peppered kind, not Canadian bacon (which we all know is really just
ham). And besides it's not really chunky at all.
=end
--
J. Lambert
No, because he's a troll. ffs guys, three or four times now he's said 'my
evaluation is over' and people have chipped in with 'one more thing'.
Let it die.
--
'Oh, wait you're serious. Let me laugh even harder.'
-- Bender
Rasputin :: Jack of All Trades - Master of Nuns
I dislike Ilias' but I dislike equally as much people who act improperly
or are rude for Mr. Lazaridis. Neither party are getting things better.
My advice is this.
1) Think three times (before you write, after you've written your reply
and once more before you send it after half an hour break) before you
write anything to these threads.
2) Determine if you're contributing to the mailing list signal/noise
-ratio in positive way. If not, don't send. If you need to make yourself
feel better by being rude verbally write the piece, send it to /dev/null
and feel better. Don't waste bandwidth.
First point should lessen the traffic to a small portion. Second point
should lead to either silence or to normal appreciating discussion, all
minds fresh and happy.
If majority finds there's nothing to discuss with Lazaridis he will end
up in silence and, from experience in other news groups, go away. If
even few people want to discuss with him, there's no right for the
others disrupt or they're behaving just like they claim Lazaridis'
doing. So they should go away.
I'll write one more in this thread. That's directly to Ilias written in
his style but since he has claimed he's not reading his personal mail
I'll put it to the list. In it I try to say to him what's wrong in his
writings. To make it worthwhile for the rest the mail could be amusing
as ewll. Can't say if I succeeded but at least I tried.
This is major turning point. Shall major ruby mailing list continue to
be friendly to each other (and everybody) or shall we start to convert
towards common cyberspace style.
- Aleksi
amen.
.
your behaviour is not polite. please stick to the point and let the
behaviour issues stay away.
> I cannot believe that you simply ignore the essential part of my message.
your message can't be understood since it is too long. please be concise
and say what's your essential question. everything else is rude.
believing is irrelevant. what you believe is completely irrelevant.
reality matters.
-
what's real matters.
you are make yourself irrelevant by believing, and not focusing only at
essentials.
> Feeling sorry for 'you've missunderstood' is irrelevant.
feeling irrelevancy for feeling sorry of misunderstandings irrelevancy
is irrelevant. please be concise and bring front the question.
> I ask you for an apology, from an analyst to an analyst.
> An apology for _defective_ core documentation.
there's no documentation. there can't be core documentation. there can't
be defect in core documentation. analyst doesn't see he's diverting again.
asking for an apology for is ignoring the essential part of your
message. i cannot believe that you simply ignore the essential part of
your message.
-
aa == from Analyst to Analyst
documentation == text aa
a could be you
just be concise and complete to convey the message in the middst of
these letters.
> I ask you to read _one_ message.
I ask you to write _one_ message.
-
no more
> The initial message of this thread.
only the initial message of this thread. your messages after that have
been competely non-concise while simultaneously lacking the full context
thus no one gets the complete picture of this nonissue.
> I would like to know who is responsible for this text.
you can't afford asking irrelevant questions while the nonissue is still
unanswered. by working against your own terms the responsible of the
reputation of the name "Lazaridis" makes his duty for the reputation.
.
Well, IANAP but a sane person, such as myself, views your persistent
denial of any sort of fault as an indicator of some sort of
personality defect. You never acknowledge any wrongdoing, are you the
perfect person?
Maybe the conspiracy theory is true, you are in no way interested in
adding to the collective wisdom, its all about the pagerank, can we
expect to see Google ads on your site soon?
How disapointing to think you may actually be a Troll, snickering away
in your dark room somewhere. The only other individual remotely like
you I've met on the internet was a person posting to aus.tv who though
he was the real life Trueman, from the Trueman show.
Thats my opinion and I'm sticking to it until you change your tone and
consider someone apart from yourself and your own desires and wants.
your finding is false, Mr. Cyberdoctor.
[just review this thread]
> Maybe the conspiracy theory is true, you are in no way interested in
> adding to the collective wisdom, its all about the pagerank, can we
> expect to see Google ads on your site soon?
What's wrong about this?
I mean, I've currently no incomings, thus I thought to add advertisments
in this section:
http://lazaridis.com/case/index.html
as it's anyway full of product comparisons.
but this would take the attention of the readers.
> How disapointing to think you may actually be a Troll, snickering away
> in your dark room somewhere. The only other individual remotely like
> you I've met on the internet was a person posting to aus.tv who though
> he was the real life Trueman, from the Trueman show.
think.
> Thats my opinion and I'm sticking to it until you change your tone and
> consider someone apart from yourself and your own desires and wants.
think before you talk.
http://lazaridis.com/case/ide/index.html
.
> -
> -
> -
>
> As stated before, the following documentation is false:
>
> cmd:> ri Class
>
> "Classes, modules, and objects are interrelated. In the diagram that
> follows, the arrows represent inheritance, and the parentheses
> meta-classes. All metaclasses are instances of the class `Class'."
>
> +------------------+
> | |
> Object---->(Object) |
> ^ ^ ^ ^ |
> | | | | |
> | | +-----+ +---------+ |
> | | | | |
> | +-----------+ | |
> | | | | |
> +------+ | Module--->(Module) |
> | | ^ ^ |
> OtherClass-->(OtherClass) | | |
> | | |
> Class---->(Class) |
> ^ |
> | |
> +----------------+
>
> -
>
> a) The term "meta-classes" is false.
confirmed by: Mr. Matsumoto:
"In Ruby, the Class class is the class of all classes, no metaclass."
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
-
confirmed by: the general-validity term "metaclass".
[Mr. Matsumoto was unwilling to answer directly to the root-message]
> Correction: "specializing-singleton-objects"
or possibly: xclass = eXclusive-class
or singleton class.
but _not_ metaclass.
this is _false_ and completely _missleading_.
> b) vertical arrows do not represent inheritance
> e.g.: Object---->(Object)
> Correction: Object-----(Object)
confirmed by Mr. Matsumoto within this thread:
"And I will add a word "vertical" before "arrow" for
the next check in, anyway."
[Mr. Matsumoto was unwilling to answer directly to the root-message]
> c) the classes in "()" do not belong to the object model
> Correction: remove (showcase sso in seperate topic)
No confirmation.
Seeing the egoism-loaded community, it should take around 1 to 3 further
years to clarify this issue.
> My final questions are basicly:
>
> * Ruby is OO. Why is the sso not directly accessible?
"considered abuse" by the language designer Mr. Matsumoto
http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/40548
Of course this is irrational, as there is a "singleton-class-notation"
available, which makes the object accessible anyway.
class << <object>
No need to refuse a convenience method.
Except: Rubyist are sheeps, which must be protected from doing damage.
> * Who has written the "ri Class" documentation?
from within this thread:
Mr. Matsumoto has drawn the diagramm.
Mr. Matsumoto has provided the confusion with the term "metaclass", most
possibly as he was/is confused/unclear about the theory/implementation:
ruby source-code, file "object.c"
"
void
Init_Object()
{
VALUE metaclass;
rb_cObject = boot_defclass("Object", 0);
rb_cModule = boot_defclass("Module", rb_cObject);
rb_cClass = boot_defclass("Class", rb_cModule);
metaclass = rb_make_metaclass(rb_cObject, rb_cClass);
metaclass = rb_make_metaclass(rb_cModule, metaclass);
metaclass = rb_make_metaclass(rb_cClass, metaclass);
"
vs.
"In Ruby, the Class class is the class of all classes, no metaclass."
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/40537
.
> * Can I expect an apology for this false documentation?
It looks like this community lacks any strong personalities.
I can neither expect an apology from the responsile person, Mr.
Matsumoto, nor an open, egoism-free analysis of the problem domain from
the community.
-
Many people from the community are not ashamed to used the discussion
i've initialized to understand (partly within other threads), without
saying: "hey, thank you for raising this issue. this is positive for
ruby's evolution"
> http://lazaridis.com/case/lang/ruby
time to close this thread.
_such_ a waste of time.
.
> time to close this thread.
> _such_ a waste of time.
So very, very true,
You misspelled "wrong." "Ignorant" is another good alternate
spelling for the word you meant. As are "asinine", "arrogant", and
even "obstinately, willfully, stupid."
You've been shown -- both practically and theoretically -- why
you're wrong. By almost a dozen people, including the language
designer.
Your pretensions don't change reality.
-austin
--
Austin Ziegler * halos...@gmail.com
* Alternate: aus...@halostatue.ca
Reality is:
point b) was _directly_ confirmed by the language designer.
point a) is _indirectly_ confirmed.
point c) needs no confirmation, it is a logical conclusion.
-
so, please stop you endless babbling and accept that I'm right.
Try it: "Ilias Lazaridis is right".
It's not so difficult, even for you.
The first step is: "Ilias Lazaridis is right, at least with point b)"
go on.
> -austin
.
"How many fingers am I holding up, Winston?"
http://www.orwelltoday.com/brainwashing.shtml
--
Bill Guindon (aka aGorilla)
> Try it: "Ilias Lazaridis is right".
Man, I'm giving it my best, but it keeps on coming out as "Ilias
Laziridis is wrong", "Ilias Laziridis is wrong",
come on, try the simple one (confirmed by the language designer):
"Ilias Lazaridis is right, at least with point b)"
Or are you another one weak puppet?
.
Rob
On 4/22/05, Ilias Lazaridis <il...@lazaridis.com> wrote:
I cannot.
I've still on task active:
finding a concise name.
> Rob
>
> On 4/22/05, Ilias Lazaridis <il...@lazaridis.com> wrote:
>
>>Customizes Object
>>
>>obj.customizing_class
>>
>>obj.cclass
>>
>>obj.custom
.
> time to close this thread.
Champagne !!! :)
--
Luc Heinrich - luc...@mac.com
I think Mick Jagger and David Bowie are almost ready to kick off...
> --
> Luc Heinrich - luc...@mac.com
>
>
Here is my one and only post to Ilias (so don't flame me!).
Ilias, when you've developed your own programming language, and have
found the perfection you so dearly crave, give us a call will you? In
the mean time, please don't be rude to Matz. After all, he gives Ruby
to the community freely, be thankful for that. And be thankful to the
friendly people on this list who give their time and patience to
newbies like me. Don't waste any more of their time.
Other than that, I'm with Nikolai :o)))
--
All the best
Glenn
Aylesbury, UK
He is 'rude'.
To me.
To the community.
To himself.
And most of all: To the name he carries.
> After all, he gives Ruby
> to the community freely, be thankful for that. And be thankful to the
> friendly people on this list who give their time and patience to
> newbies like me.
I am thankfull to anyone who provides concise information within the
given context.
> Don't waste any more of their time.
They waste it themselves.
> Other than that, I'm with Nikolai :o)))
.
I find greek letters and fruit useful to move on beyond recursive analysis
paralysis.
banana
On the other hand, should you eventually discover the "true" name of an
object, you can wield great power over that object.
banana.sit
banana.roll_over
banana.play_dead
--
J. Lambert
specializing: possibly confronting with existent OO terminology
>>>>>> ISBO = Instance Specific Behaviour Object
behaviour: not only (structure is modified,too)
>>>>>> dvto = Dedicated Virtual Table Object
>>>>>> dvco = Dedicated Virtual Class Object
>>>>>> dvc = Dedicated Virtual Class
Virtual
>>>> dsc = dedicated singleton class
>>>>
>>>> sco = singleton class object
"singleton class" => rejected [has specific meaning]
>>>> asco = attached singleton class object
>>>>
>>>> "singleton instance" = the one and only instance
>>>> "singleton method" = a method, exclusively for one instance
>>>> "singleton class" = a class, exclusively for one instance
conflicting with existent definitin: "class which can have only one
instance".
>>> obj.exclusive_singleton_class
>>> obj.exclusive_class
>>> obj.exclass
>> obj.xclass
>> x class (x=not known yet what it is)
>> obj.xclass
=> xclass
term accepted.
I do not.
=> exclusive_class or xclass
thread closed.
.
I apologise to the gentler readers of this list for contributing to
the lunacy but...
<HomerSimpson>
thread goes open
thread goes closed
thread goes open
thread goes closed
thread goes open
...
</HomerSimpson>
>
> ..
>
> --
> http://lazaridis.com