The Artima Developer Community
Sponsored Link

Weblogs Forum
Back at OOPSLA

48 replies on 4 pages. Most recent reply: Mar 29, 2007 9:25 AM by Isaac Gouy

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 48 replies on 4 pages [ « | 1 2 3 4 | » ]
V.H.Indukumar

Posts: 28
Nickname: vhi
Registered: Apr, 2005

Re: Back at OOPSLA Posted: Oct 30, 2006 9:05 AM
Reply to this message Reply
Advertisement
>> Objects claim that there is exactly one useful view on a particular type of object and that is simply a flawed concept.

It is not entirely true... In those cases where there are more than one view of data, we can abstract data itself as a Core Object and views as View Objects that delegates/holds the data.. It is entirely possible in OO.

Mike Petry

Posts: 34
Nickname: mikepetry
Registered: Apr, 2005

Re: Back at OOPSLA Posted: Oct 31, 2006 4:58 PM
Reply to this message Reply
The 3 tenets of OO:
1. Encapsulation -
2. Inheritance -
3. Polymorphism -

Encapsulatin or data hiding is a major issue. There are many ways to abstract data but I can't think of one approach as successful as OO. OO allows us to manage the context and scope of related elements of data.

Inheritance is overrated in terms of code reuse but the creation of heirarchies of types is incredible powerful.

Objects can present multiple views of itself through polymorphism which is probably the least understood tenet and probably the most powerful for creating good OO designs.

This said, it seems like OO languages attempt to solve the limitations of the languages they succeeded. Do dynamic languages provide alternative solutions by removing most of the notion of 'type'? Encapsulation is still an issue because GC and ref counted memory management schemes are dependent on scope. No, dynamic languages seem to work with OO as opposed to serving as a replacement.

And distributed programming does seem to be a different animal altogether. OO RPC has not had much success. The more course grained interfaces of web services seems to have merit and appears to be functional but I tend to think that they are conceptually OO to an extent.

One indication on the future of OO is that fact that there isn't alot of meat left on the bone for researchers. If there are no more mysteries to be uncovered - certainly we have hit bottom and it is time to start looking for the next paradigm.

Expect OO to remain prevalent and changes to be evolutionary.

Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Back at OOPSLA Posted: Oct 31, 2006 10:15 PM
Reply to this message Reply
You left out "Messaging" - not just the 4th tenet - but the bigger idea.

http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html

This gets lost by the function calling language crowd (C++/Java/C#). Fundamentally they are missing the big idea. They ape some mechanisms, but miss the core ideas.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 5:42 AM
Reply to this message Reply
> This gets lost by the function calling language crowd
> (C++/Java/C#). Fundamentally they are missing the big
> idea. They ape some mechanisms, but miss the core ideas.

IMO, messaging is exactly what interfaces are about. But I do agree that concept is lost on most developers.

Mike Petry

Posts: 34
Nickname: mikepetry
Registered: Apr, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 7:29 AM
Reply to this message Reply
Java/C#/C++ are examples of OO programming languages. Messaging is more of an example of a technology or system (i.e middleware). Yet messaging is full of OO-like abstractions and patterns. Examples of OO-like abstractions are 'Topic', 'Channel', 'Publisher' and 'Envelope'. Messaging also requires the use of 'Contracts', 'Roles' and 'Responsibilities' which seems a lot like OO analysis.
Messaging and web services seems like an off-shoot or faction of OO.
Messaging may not to have much in common with the mechanisms found in OO languages but I can't relate the messaging world, its abstractions and patterns, with the world as it existed before OO became prevelant.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 8:45 AM
Reply to this message Reply
> Java/C#/C++ are examples of OO programming languages.
> Messaging is more of an example of a technology or system
> m (i.e middleware). Yet messaging is full of OO-like
> abstractions and patterns. Examples of OO-like
> abstractions are 'Topic', 'Channel', 'Publisher' and
> 'Envelope'. Messaging also requires the use of
> 'Contracts', 'Roles' and 'Responsibilities' which seems a
> lot like OO analysis.

He's not talking about distributing messaging systems like JMS. He referring to the OO concept of messaging that was one of the core ideas of SmallTalk. He's saying that the function calls are more of a procedural concept. There's something to that, I guess but I think it's just a matter of semantics. A function call is a message in Java et al. it's just that a lot of people don't think of it that way. I'd say, however, that a lot of these same developers are also not really writing OO code in Java but procedural code that uses Objects i.e. missing the point. I don't think it's a problem with the language per se but more a people problem. I'm not convinced that if you gave squeek to these developers they would write code in a dramatically different way. People are drawn to squeek because they are OO geeks, it's not squeek that makes them this way (unless, perhaps, it's their first programming language.) People are drawn to Java because it's one of the most common platforms and that naturally leads to a more spotty understanding of OO in that community. It doesn't help that a lot of major Vendors (e.g. IBM) write some of the most atrocious procedural crap Java APIs.

Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Back at OOPSLA Posted: Nov 1, 2006 9:03 AM
Reply to this message Reply
> IMO, messaging is exactly what interfaces are about. But
> I do agree that concept is lost on most developers.

Interfaces define protocol. But that isn't quite the same thing.

Messaging is the idea that you can send any message you like to an object and it may or may not have a handler for the precise message you are sending - but it will at least receive it via the default handler (#doesNotUnderstand:). Objects act just like servers. You send them messages - they respond. Messages need not even return (continuations). They can be forwarded. They can be filtered and selectively thrown on the floor. You can control this. Even nil is an object that receives and handles messages. Its behavior is up to you.

None of this is possible in the function calling languages. Objects don't get all messages sent to them. Nil isn't an object - you can't change what messaging nil does. Invalid message sends are trapped by the runtime outside of your control. You can't create a general purpose forwarder - you have to generate custom ones for each case. Classes aren't reified as objects but (if they are represented at all) just as data structures in object's clothing.

Those things you have in Java, C# and C++ are not proper objects.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 9:29 AM
Reply to this message Reply
> > IMO, messaging is exactly what interfaces are about.
> But
> > I do agree that concept is lost on most developers.
>
> Interfaces define protocol. But that isn't quite the same
> thing.
>
> Messaging is the idea that you can send any message you
> like to an object and it may or may not have a handler for
> the precise message you are sending - but it will at least
> receive it via the default handler (#doesNotUnderstand:).

I don't see this as an OO difference. It's merely a dynamic vs. static difference. Instead of allowing you to send messages to things that don't understand them, it requires that the receiver decare it's intention to support those messages. That doesn't make them non-messages. If I don't have long distance service, I cannot make long distance calls directly using my home phone. This doesn't mean I can't make calls, it's just a restriction on what calls I can make.

> Objects act just like servers. You send them messages -
> - they respond. Messages need not even return
> (continuations). They can be forwarded. They can be
> filtered and selectively thrown on the floor. You can
> control this. Even nil is an object that receives and
> handles messages. Its behavior is up to you.

These are all great things in the right context but they are just features. If you believe that continuations and universal forwarding are crucial concepts in OO, I have to disagree. The crucial concept in OO is the Object. OO stands for Object-Oriented not Message-Oriented.

> None of this is possible in the function calling
> languages. Objects don't get all messages sent to them.
> Nil isn't an object - you can't change what messaging nil
> l does. Invalid message sends are trapped by the runtime
> outside of your control. You can't create a general
> purpose forwarder - you have to generate custom ones for
> each case. Classes aren't reified as objects but (if they
> are represented at all) just as data structures in
> object's clothing.

That's an implementation detail. (as I understand it) SmallTalk objects are just hashtables in object's clothing.

> Those things you have in Java, C# and C++ are not proper
> objects.

Only because you have decided to define Objects very narrowly. In my view OO has to do with the conceptual design of a system. The runtime implemention and the features that one language provides over another just that: features. A car without power steering is still a car.

I don't mean to discount these features and I wish Java had some of them but Java is still Object-Oriented. You can argue that it's Object-Orientation is rudimentary and coarse and I won't disagree completely but it's still OO.

Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Back at OOPSLA Posted: Nov 1, 2006 11:15 AM
Reply to this message Reply
> You can argue that it's Object-Orientation is rudimentary and
> coarse and I won't disagree completely but it's still OO.

I think it would be more accurate to say that the term has been hijacked and redefined. Rather like the Bush administration has done with "conservative".

Call it that if you like. But it strays pretty far from the original meaning.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 11:44 AM
Reply to this message Reply
> > You can argue that it's Object-Orientation is
> rudimentary and
> > coarse and I won't disagree completely but it's still
> OO.
>
> I think it would be more accurate to say that the term has
> been hijacked and redefined. Rather like the Bush
> administration has done with "conservative".
>
> Call it that if you like. But it strays pretty far from
> the original meaning.

Can you provide a reference to the 'original' definition?

Morgan Conrad

Posts: 307
Nickname: miata71
Registered: Mar, 2006

reference to Original Definition Posted: Nov 1, 2006 12:11 PM
Reply to this message Reply
These guys have a distinct point of view (with which I agree) but see:

http://nakedobjects.org/wiki/The_Evolution_Of_Object-Oriented_Design

Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Back at OOPSLA Posted: Nov 1, 2006 1:00 PM
Reply to this message Reply
> Can you provide a reference to the 'original' definition?

Alan Kay coined the term "Object Oriented" and it means precisely what Smalltalk is. He envisioned systems on a biological level like cells communicating vi messages.

However, he felt the term had been hijacked and watered down. I linked above to his post about how he is sorry he called it that because people latched onto the wrong thing. (Last thingI liked to above). He spent some time at that OOPSLA trying get people to refocus on what he meant rather than what they were currently claiming was OO.

Kay also originated the oft-repeated quote: "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

In order to move forward, we must understand what has come before. There has been precious little forward progress in the last 20 years.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 3:03 PM
Reply to this message Reply
> > Can you provide a reference to the 'original'
> definition?
>
> Alan Kay coined the term "Object Oriented" and it means
> precisely what Smalltalk is. He envisioned systems on a
> biological level like cells communicating vi messages.
>
> However, he felt the term had been hijacked and watered
> down. I linked above to his post about how he is sorry he
> called it that because people latched onto the wrong
> thing. (Last thingI liked to above). He spent some time
> at that OOPSLA trying get people to refocus on what he
> meant rather than what they were currently claiming was
> OO.

Perhaps he should consider that the invention of the term was more important that what the concepts he meant it to define. Words mean what people think they mean and in effect that means mob rule. The concepts invented before SmallTalk by the creators of Simula are what became the standard meaning of Object Oriented.

Even if you can convince people that what they are doing is not OO, so what? What kind of idiot would change their approach merely because they were misuing a word/phrase? How about this: we will call the C++ style of OO 'Object-Orientated' and the SmallTalk style 'Object-Oriented'. That should settle the matter.

> Kay also originated the oft-repeated quote: "I invented
> the term Object-Oriented, and I can tell you I did not
> have C++ in mind."

That seems kind of pathetic. It doesn't address anything meaningful. It's just whining about how people stole his word.

> In order to move forward, we must understand what has come
> before. There has been precious little forward progress
> in the last 20 years.

And how does arguing about the proper meaning of 'Object-Oriented' move us forward? Writing that we are working with the 'dead tongues of alien gods' is dramatic prose to be sure but it's hardly a compelling argument. Maybe dead tongues are good. Maybe alien gods are better. Hard to say really having no experience with aliens or their gods and very little with dead tongues.

Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Back at OOPSLA Posted: Nov 1, 2006 3:12 PM
Reply to this message Reply
>Maybe dead tongues are good. Maybe alien gods are better.

Maybe truthiness is all that matters.

There was quite a lot of talk at OOPSLA about finding a new name for the conference since precious little of what was talked about had anything to do with objects.

Probably the thing that makes the most sense is to rename it the dynamic languages conference and let the J-heads and voodoo engineers go celebrate their superstitions elsewhere.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Back at OOPSLA Posted: Nov 1, 2006 3:24 PM
Reply to this message Reply
> Probably the thing that makes the most sense is to rename
> it the dynamic languages conference

That sounds like a plan.

> let the J-heads and voodoo engineers go celebrate their
> superstitions elsewhere.

You know, this rhetoric doesn't really contribute to a meaningful debate. I don't think any intellegent reader is going to think much of it. I just makes your attachment to SmallTalk seem religious. And even in that context, calling people infidels rarely makes them want to convert.

Flat View: This topic has 48 replies on 4 pages [ « | 1  2  3  4 | » ]
Topic: Back at OOPSLA Previous Topic   Next Topic Topic: What's on Your Java Learning List?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use