From: ptkwt@... (Phil Tomson) Date: 2005-07-20T02:45:55+09:00 Subject: Re: Ruby/Rails as a starter language? In article <20050719034109.B16573@cs.mcgill.ca>, Navindra Umanee wrote: >James Britt wrote: >> OO is a fairly straightforward concept. It gets messy with different >> implementations; Ruby's is quite clean. People are better off going >> straight to OO than trying to creep up on it via clumsy "newbie" >> alternatives. > >Java, at least old Java, or Python would probably be an easier >introduction to OO. > >I still find Ruby's OO to be mind-boggling with its classes are >objects and objects are classes, class variables and class instance >variables, virtual classes, self and so forth. Fact is, if you really >want to understand Ruby's object model it also helps if you go down to >the C level implementation.[1] > >Ruby is fascinating and satisfying, but I'm not entirely sure exposure >to such an object model is entirely appropriate for a newbie... >Although certainly much of it can be ignored at the beginning and >introduced in steps, a newbie might be more satisfied with, say, >Python since it would probably be easier to grasp in its entirety. > But isn't Ruby's object model very similar to Smalltalk's and wasnt' Smalltalk developed to teach programming to children? If anything Ruby is more consistent. A newbie (not having been exposed to, say Java's object model) might think it very natural that a class is an object. I think it's just an impediment for those who have come from other languages where that wasn't the case. I still think that Ruby is a very good learning language. I've taught Ruby to total newbies before. Well, one person in the class wasn't a total newbie: he was an old assembly programmer (the guy would even do web stuff in assembly). The assembly programmer just couldn't get it, but most everyone else (most of whom had 0 programming experience) grasped the concepts (even the OO ones) pretty quickly. I suspect that the assembly programmer just had too much baggage and that he was trying to understand Ruby through that assembly language baggage. Phil