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