On Nov 11, 2006, at 1:05 PM, Ross Werner wrote:
Java code tends to be very noun-oriented. In other words, you
typically call component.paint() rather than paint(component), and
you typically see functions like suggestor.suggest(foo) rather than
just suggest(foo). My contention is that this noun-orientation is
common to all object-oriented code, and is not specific to Java.
What makes component.paint() noun-oriented and paint(component) verb-
oriented? Both are 'sentences' of one noun and one verb, combined
with some punctuation. If this whole 'noun-oriented' thing is just
about noun/verb ordering, I don't think it's really saying anything
at all.
There are a lot of different ways to do 'object oriented' code, since
as I said before, it's not a well-defined term. The Common Lisp
Object System (which is very similar to Dylan's object system as
well, if you think the parentheses invalidate CLOS) doesn't even list
the noun first. If 'noun-orientation' is simply about noun/verb
ordering, your assertion that it's common to all object-oriented code
is therefore false, unless you go and make your definition of 'object
oriented' be 'object oriented like Java is', in which case it is
trivially true and rather meaningless.
Java is about objects interacting through pre-defined, statically
enforced interfaces. The static types of the objects define how they
may interact. In Smalltalk, there are no limitations on interaction
based on static type; any object may send any message to any other
object, and the ability to receive and respond to those messages is
not tied to class hierarchies. In CLOS, method dispatch can be keyed
on multiple objects rather than just what type the receiver is. The
'noun-orientation' of these languages varies widely, no matter which
definition of 'noun-orientation' you pick.
Anyway, that's about all I have to say about this subject. I think
the whole 'Execution in the Kingdom of Nouns' rant was lacking in
depth to begin with, and it pretty much boils down to 'Steve Yegge
thinks Java-style OOP programming is awkward'.
--Levi
/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/