Interesting.

My only quibble is when you say that in Ruby, types and classes are the same
thing.

I don't know any Python, so maybe you are trying to say that the role of
"types" in Python is taken care of by classes in Ruby... i.e. there is
another kind of thing in Python called a "type", but Ruby unifies that
concept with the "class" concept.  Maybe that's what you mean... I don't
know.

But (at least outside of the Python-comparison context) it's incorrect to
say that classes and types are the same thing in Ruby.  Ruby has what I
think they call "duck typing":  If it walks like a duck and talks like a
duck, it's a duck.  (Or something like that.  :)

For example, let's say I consider something to be a duck if it has a quack
method, that is, if:
  `obj.respond_to? :quack'

I can turn a string into a duck pretty easily:
  str = 'duck'  #  not a duck yet
  def str.quack
    puts 'coin, coin'  #  a french duck, of course
  end
  #  now str is a duck

So I have implicity "defined" a duck type without ever making a Duck class.
In Java I would need a class or an interface or something, but in Ruby
that's all behond the scenes.

Sorry if this seems off-topic, but that's what "type" refers to usually (at
least I thought so).

Chris