[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Ruby and OO (fwd)
Date: 29 Nov 2001 14:57:48 -0500
From: Bruce Lewis <brlewis@alum.mit.edu>
I'd like to point out that what makes the Ruby syntax convenient is that
it does not force the programmer to think in OO terms. Even if the
block { |i| puts(i) } is implemented as some kind of object, from the
programmer's perspective it's just a function. There's no need to
establish a package/object/method/statement/expression hierarchy as in
Java.
The implication that Java's object-orientation forces you to create a
five-level deep hierarchy of some kind, in order to do anything, is
misleading at best. Rhetorical overkill is unnecessary. What there's
no need to do in Ruby is establish a class/method two-level hierarchy
as in Java. I think that's as much as you need to make the (perfectly
valid) point you want to make.
But, as I said before, in Common-Lisp-with-CLOS (and, if memory serves
at all, Dylan), you don't have to create a class in order to write a
simple procedure, either, even though the object-orientation is really
quite fundamental.
One way to think of it is that the basic idea is to generalize the
multi-methods idea. The multi-methods idea is that you can have a
method that is chosen by the class of *two* or *more* arguments,
instead of just *one*. The generalization is that *zero* is OK too.
So (defun double (x) (+ x x)) is a multimethod with zero
type-discriminated parameters. So we do not create a language with
two facilities: (1) functions, and (2) methods, but just one facility.
-- Dan