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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1/26/2004; 8:09:34 AM (reads: 208, responses: 0)
|
|
Saying this on LtU is preaching to the choir...
|
|
|
|