From: Claus Spitzer Date: 2004-05-13T10:45:29+09:00 Subject: Re: Recommendations (Ruby making my head swim) 8< ----- snip ----- > In so many ways, object-oriented programming is so natural, and Ruby lets that emerge so beautifully. Unfortunately, I think it's easy to get lost in the terminology. We end up talking about "string objects" or worse, "instances of the String class", instead of just saying "strings". Eventually, it's important to have those three concepts mean the same thing in your head, but until you wrap your head around objects and classes, it's just confusing. > 8< ----- snip ----- I agree that OOP is very natural. As for terminology: Perhaps the biggest roadblock to learning O-O programming (and this is just a personal opinion) is to understand how objects communicate. It's all nice to say an object is like a car, where you don't need to know how the engine works to operate it... that works to teach programmers to read O-O code. However, when programming (and this is specially important for programmers with a functional language background) is that (using the car metaphor) you don't move the car left and right, but you _ask it_ to move itself (that of course is where the metaphor turns silly, but it gets the point through). And even though this is perhaps the most important concept in OOP it is also the most ignored one by professors, which instead jump straignt to terms like encapsulation and inheritance and polymorphism. I went through three courses that dealt with OOP (at least remotely) until I came upon a professor that explained the above before anything else. Once that was understood, everything else clicked into place. -CWSpitzer