Hello everyone,

What I find fascinating when hacking in Ruby, is that we use one of the
purest implementation of OOP, and at time we find ourselves tweaking C
extensions. Thus, the boundary between the two ways of thinking (procedural
vs OOP) seem very thin, yet it's still fundamentally different.

My question is, what kind of mental model do you use when you program in
Ruby? How do you think about objects? Do you see them as elements carrying
with them their own methods, bundled with their data?

How about the flow of the program: Whenever there's a method call, do you
picture the method to be inside the receiver - just like it would be in a
real-life object -, or since you know that in the underlying implementation
the method is stored in the class, you just think about a procedure call
with a self variable being the receiver?

Do you think using the OOP abstraction without knowing the internals can be
harmful? My case for that (even if I tend not to believe so) would be that
someone might be tempted to think that during an object instanciation, all
the instance variables AND methods gets duplicated for this particular
instance, which isn't the case - yet, that's what the abstraction pushes us
to believe.

That's a lot of questions!
Looking forward to hear what you think.

Michael