Lambda the Ultimate

inactiveTopic Why Objects Have Failed
started 1/7/2004; 12:13:46 AM - last post 1/26/2004; 8:09:34 AM
Christian Lindig - Why Objects Have Failed  blueArrow
1/7/2004; 12:13:46 AM (reads: 639, responses: 16)
Richard Gabriel and Guy Steele had a discussion at OOPSLA'02 about the success and failure of OO. Gabriel prepared an interesting collection of quotes and opinions where he argues for a less oo-centric and more biological view of software. He believes, that future software must adapt to its environment to survive. He does not say how to achieve this but explains why objects have lost their attraction while they stifled the exploration of alternative paradigms by claiming superiority.

Karl Reitschuster - Re: Why Objects Have Failed  blueArrow
1/7/2004; 2:34:34 AM (reads: 618, responses: 1)
Hi, many forgot that oop does not guarantee auomatic robust, solid high quality code! I saw programs that were full of chaos due to lack of ineritance -, and modul structure.

/** He does not say how to achieve this but explains why objects have lost their attraction while they stifled the exploration of alternative paradigms by claiming superiority */ The statement above is interesting : you should always show the new way if your are doubting about the old one.

carl

Ehud Lamm - Re: Why Objects Have Failed  blueArrow
1/7/2004; 3:18:44 AM (reads: 614, responses: 0)
Hi, many forgot that oop does not guarantee auomatic robust, solid high quality code! I saw programs that were full of chaos due to lack of ineritance -, and modul structure.

I don't think many here forget that. But, on a more general note, all tools can be abused (some more than others, of course). So the fact that a tool is abused doesn't mean it is a bad tool.

A tool or technique that encourages bad use (and I regard inheritance as such a technique) is, however, A Bad Thing.

Karl Reitschuster - Re: Why Objects Have Failed  blueArrow
1/7/2004; 5:24:10 AM (reads: 597, responses: 0)
Allright, Then the questions is: what is the main influence for good software quality? In my opinion the main tool, the mind, can never be replaced by a paradigma (we always search after new pradigmas, but not after a renewed minds); or in other words. A mind which likes to code solid will generate good code in COBOL ASSEMBLER PL/1 Samalltalk, ...; A paradigma is only a little part of the good work, it cannot fullfil the promise. carl

Peter Van Roy - Re: Why Objects Have Failed  blueArrow
1/7/2004; 5:27:09 AM (reads: 597, responses: 3)
There is one technical comment that I didn't see in Richard Gabriel's collection of notes (perhaps I just overlooked it): the 'object style' of packaging data, i.e., combining data and operations together with mutable state, is but one of at least four fundamentally different ways of doing data abstraction. Another style is the 'ADT style', in which data and operations are separate and data is stateless. The object style is better for polymorphism and the ADT style is better for efficiency. A language that supports only the object style ('everything is an object') is handicapped.

(This is explained in the publication draft of CTM, although you can also check out section 6.4 in the June 5 draft, which talks about 'bundled' and 'unbundled' data abstractions. Be warned, though: the June 5 draft has a terminology bug, it calls *all* data abstractions ADTs, which is wrong as was pointed out by William Cook.)

Isaac Gouy - Re: Why Objects Have Failed  blueArrow
1/13/2004; 3:39:41 PM (reads: 435, responses: 2)
A Really Good Idea
Bjarne Stroustrup mocked the pseudo-syllogism "Ada is good; Ada is object-oriented; therefore object-oriented is good". What we have seen more recently is more "C++ is object-oriented; C++ is bad; therefore object-oriented is bad".

xeo_at_thermopylae - Re: Why Objects Have Failed  blueArrow
1/15/2004; 11:34:35 PM (reads: 384, responses: 2)

Peter Van Roy wrote:

A language that supports only the object style ('everything is an object') is handicapped.

Hmmmm.... that would be Microsoft's C# and all the other .NET languages?

xeo_at_thermopylae - Re: Why Objects Have Failed  blueArrow
1/15/2004; 11:42:57 PM (reads: 372, responses: 1)
Isaac Guoy wrote:
What we have seen more recently is more "C++ is object-oriented; C++ is bad; therefore object-oriented is bad".

While not logically correct, this is at least a step in the right direction!-) And if it proves a successful ploy, considering the audience, then perhaps it is good enough.

Ehud Lamm - Re: Why Objects Have Failed  blueArrow
1/16/2004; 3:16:57 AM (reads: 360, responses: 0)
Funny, I seem to recall that what bothered him was arguments lik "OO is good. Ada is good, therefore Ada is OO" ":->"

Ehud Lamm - Re: Why Objects Have Failed  blueArrow
1/16/2004; 3:18:30 AM (reads: 370, responses: 0)
Consider the difference betweeen 'everything is an object' and 'everything IS-An Object'

Isaac Gouy - Re: Why Objects Have Failed  blueArrow
1/16/2004; 12:02:11 PM (reads: 355, responses: 0)
A language that supports only the object style
.... that would be
Smalltalk.

In Smalltalk lambda is an object (the ultimate object?).

Isaac Gouy - Re: Why Objects Have Failed  blueArrow
1/16/2004; 12:14:43 PM (reads: 344, responses: 0)
Consider the difference...
IIRC in Smalltalk we can create a class that is not a subclass of Object.

Peter Van Roy - Re: Why Objects Have Failed  blueArrow
1/21/2004; 5:06:58 AM (reads: 272, responses: 2)
A language that supports only the object style .... that would be Smalltalk.

Actually, if I remember right (correct me if I'm wrong), there are primitive virtual machine operations in Smalltalk that are in ADT style, such as primitive operations on integers. (Usually these primitive operations are hidden to the programmer.) ADT style is important because, e.g., for binary operations it lets you access both internal representations simultaneously. For binary integer operations this means you have access to the machine representations of both integers, which is necessary if you want to map integer calculations onto machine instructions. If your language supports only the object style, then for most machine architectures you could not do this mapping!

In Java, the primitive numeric types are in ADT style and not in object style. You can 'wrap' an ADT integer into an integer object, but it's not the default. This is usually presented as a flaw in Java, but I don't think of it as a flaw: it's just that efficiency is considered more important for integers than polymorphism. ADT style is not "worse" than object style, just different.

Now, if only Java had first-class packages (i.e., they would be language references that can be put in data structures, passed to routines, etc.) then you could get polymorphism for the ADT style too--the best of both worlds.

Luke Gorrie - Re: Why Objects Have Failed  blueArrow
1/21/2004; 5:41:50 AM (reads: 270, responses: 0)
Aha! I had often wondered why Java programs are so efficient.. ;-)

More seriously: what exactly would be the cost of replacing int with a java.lang.Fixnum if it were implemented cleverly?

I have not considered this question in a long time. Back when I was hacking Java I assumed it could be done for essentially no cost, and I think this opinion is common amongst "the unwashed masses". Now thinking again it seems much more difficult: tag-bits would be needed for the GC to recognise that an Object is really an int, and wait() and notify() would have to be implemented somehow.

Fortunately Java's int is fixed to 32-bits, so as 64-bit architectures become more common they will have plenty of bits to spare for tags :-)

Isaac Gouy - Re: Why Objects Have Failed  blueArrow
1/21/2004; 12:34:00 PM (reads: 252, responses: 0)
there are primitive virtual machine operations in Smalltalk
Yes, for example the method defined in SmallInteger for addition:
+ aNumber
   <primitive: 1>
   ^aNumber sumFromInteger: self
To me, that seems to be an implementation detail, rather than a style available to the programmer?

Wouldn't ADT style in Smalltalk be creating a class that would never be instantiated, and defining only class-side methods (somewhat like Java statics)

add: aNumber to: aNumber2

Should we assume that a language where everything is an object only supports the object style?

Recently mentioned Scala "is a pure object-oriented language in the sense that every value is an object" and " is also a functional language in the sense that every function is a value".

Eray Ozkural (exa)) - Re: Why Objects Have Failed  blueArrow
1/26/2004; 8:07:14 AM (reads: 205, responses: 1)
What ought to be understood is that an object system is no substitute for important language features such as a type system or high level of abstraction!

Ehud Lamm - Re: Why Objects Have Failed  blueArrow
1/26/2004; 8:09:34 AM (reads: 208, responses: 0)
Saying this on LtU is preaching to the choir...