From: Michael Sokol Date: 2011-05-21T02:58:26+09:00 Subject: Object-Oriented thinking --bcaec51d296ec153a604a3b8ddf0 Content-Type: text/plain; charset=ISO-8859-1 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 --bcaec51d296ec153a604a3b8ddf0--