Re: TRM - Morbidity has set in, or not?

From: Marshall <marshall.spight_at_gmail.com>
Date: 22 May 2006 08:59:08 -0700
Message-ID: <1148313548.437055.147800_at_38g2000cwa.googlegroups.com>


Tony D wrote:
>
>From memory of Smalltalk (and I admit it's been a while), the term
> "message passing" actually illuminates rather than obscures. Although
> message passing might *look like* function invocation, it isn't.
> Conceptually, an object passes a message (one way or another) to
> another object asking it to do something. Objects don't call or invoke
> each other per se.

Well, see, that's not right. "Message passing" is method invocation is function invocation (with a distinguished argument.) The fact that the term "message passing" makes it *appear* to be something different is a flaw, not a benefit. It creates a difference where none exists. That is obscuring, not illuminating.

> The problem with OOP as observed by most these days is that it is
> object oriented imperative programming. At the end of the day, most
> OOPLs are simply fancier ways of arranging assignment statements, just
> like folks have been doing since the days of machine code. The
> fundamental abstraction is changes to a machine store. This is why you
> can make your comment about state throughout the program; the program
> is all about managing state.

Agreed.

> You could conceivably come up with an
> object oriented functional language, and I'm fairly sure at some point
> object oriented Prolog has been tried.

Also note OCaml, an (impure) FPL that is OO.

> It depends how valuable the
> tenets of object oriented programming are to you.

The big wins in OOPLs seems to me to be
1) easy creation of new types
2) modularity

The most heavily noticed three things, inheritance, polymorphism, encapsulation, are not it. Inheritance is an attempt at increasing code reuse. Except it turns out not to be a great mechanism for reuse. Polymorphism is awesome, and one of the best features of OOPLs, but subtyping polymorpism is annoyingly complex, and ultimately not as good as interface polymorphism or parametric polymorphism.

Encapsulation is what you need when you don't have declarative integrity constraints!

> (It would be much
> easier if there was deep-level agreement on what the fundamental tenets
> of object oriented programming are; basics, like what *is* an object ?
> what does an object *mean* ?)

I think the importance of this issue is overblown. That there are a bazillion OOPLs going in slightly different directions is a creative advantage. Many things are being tried.

> I'm still dreaming of a language, much like Haskell, with relations as
> first class citizens.

Agreed!

Marshall Received on Mon May 22 2006 - 17:59:08 CEST

Original text of this message