James Britt wrote: > And many don't. And of those that do, a contributing factor is having > spent too much time with procedural programming, or with "we're OO, > except when we're not" languages. > > 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. I would hope that a good curriculum included a mix of high level and low level teaching. Fact is, OO is implemented in assembly, deep down, and while performance might not be a decent justification for teaching it to people, here's one (to me): OO isn't the be-all and end-all of programming. By showing how OO is built out of some more basic building blocks, you can give people the tools to be able to do other fancy things, such as LISP or Prolog, without blowing up over the fact that it doesn't look like Ruby code. That said, I'm not recommending one teach compiler techniques or computer architecture to newbies. :) I'm also not arguing with your opinion that Ruby's a great newbie language. In fact, that there is such a (relatively) low barrier of entry in going from this: puts "Hello, world!' to this: def greet(thing) puts "Hello, #{thing}!" end greet "world" to this: class Greeter def initialize(thing) @thing = thing end def greet puts "Hello, #@thing!" end end g = Greeter.new "world" g.greet that someone can actually attempt to teach the *reasons* to use OO (that is, the problems it addresses), rather than just impose it as a code convention for the class. Having never taught formally, or even regularly, I could be full of it, though. Devin