From: adaworks on

"Robert C. Martin" <unclebob(a)objectmentor.com> wrote in message
news:k0rda1haskdjl53ujmo1uk37j5cpsqc44f(a)4ax.com...
>
> Polymorphism is a tool, not a solution. Topmind rails against the
> tool because there are cases where it doesn't work well. I, for one,
> am glad I have the tool.
>
Yes. There seem to be so many people who look at a tool and see
only where it does not work, not where it does. For some reason,
they are inclined to notice only the limitations, not the benefits.

Then again, there are the "true believers" who, having learned a new
tool, language, method, or concept, seem predisposed to blindly and
uncritically adopt it, even in the absence of all evidence of its limitations.

There has to be some happy medium between being a "true believer" and
a confirmed naysayer.

I am convinced that, 100 years from now, those engaged in some practice
that evolves from what we now think of as software, will look back on our
feeble attempts with the same admiration we give to mathematicians in the
time of Charelemagne. All the languages we use will be gone. Most
of the methods we enjoy today will have been replaced. The notations
we revere will be completely gone.

Current software practice is crippled by our inability to truly deal with the
complexities that are inherent in it. The Von Neumann model, while useful
in the past, will eventually be regarded with the same regard we now give
to pre-Copernican cosmology.

Still, it is in our interest, as software practitioners, to seek ways to solve
problems, not to continually focus on finding problems. It is easy to
find fault with someone's software solutions. It is much more difficult
to discover how to use those solutions to build dependable, maintainable,
long-lived software.

I commend you, Robert, on your ability to see the positive benefits of different
languages, tools, methods, and concepts rather than simply denounce them
because they don't conform to the way you have been doing things.

Richard Riehle


From: Leif Roar Moldskred on
<adaworks(a)sbcglobal.net> writes:

> I am convinced that, 100 years from now, those engaged in some practice
> that evolves from what we now think of as software, will look back on our
> feeble attempts with the same admiration we give to mathematicians in the
> time of Charelemagne. All the languages we use will be gone. Most
> of the methods we enjoy today will have been replaced. The notations
> we revere will be completely gone.

Well, I don't know. 100 years isn't _that_ long. After all, COBOL is
already 45 years old, and is _still_ being used to develope software
with.

--
Leif Roar Moldskred
Y10K, anyone?
From: adaworks on

"topmind" <topmind(a)technologist.com> wrote in message
news:1118377338.459992.37190(a)g44g2000cwa.googlegroups.com...
>
> What about something like an airline reservation
> system, a student grade tracking system,
> and inventory system, a finance estimating system,
> etc. Maybe they are not glamorous or fun, but THAT
> is the kind of thing that most developers work on.
>
I can mention, but am not free to name the client, an airline
frequent flyer program that is programmed using OOP
complete with multiple inheritance, polymorphism, dynamic
binding, generic templates, type safety, and graphical
user interfaces. It also includes a database that seems to
work quite well.

There are plenty of applications that have been designed using
OOP. Some of these are in C++, others in Ada, others in
Java, and more recently, in C#. Eiffel and Smalltalk applications,
while not as abundant, also demonstrate the value of
OOP. I don't have direct experience with Ruby, but I understand
that has some successes.

As to device drivers, that is the last place I would expect to use OOP,
at least in my own domain. Far more appropriate are the large-scale
applications. Admittedly, polymorphism and dynamic binding are
sometimes not appropriate where one is concerned with a high degree
of determinism, such as safety-critical software. However, for GUI
applications, all the features of OOP seem to have proven their
benefit, at least in my domain.

Not all OOP applications are good. Some are quite messy, and
would be messy even if developed using other approaches.

Of course, I have no illusions that anything I have said will persuade you.
It seems you have already made up your mind, and the old adage, "He
convinced against his will is of the same opinion still," seems to apply,
even when you are shown direct evidence contradictory to your view.

"What evidence?" you protest. Exactly my point. This is why I long
ago stopped wasting my time trying to explain anything to you. Today,
I have, for some odd reason, reached some limit of patience and
wonder why you even bother to participate in this forum since you
clearly have no interest in topic beyond harping on what you see as
the failures of OOP.

I admire and appreciate critical thinking, skepticism, and a willingness
to question the common wisdom. I agree with you that some of the
silliness that passes for good software practice needs to be challenged.
I do, however, find it tiring when you have no other song to sing than
the "show me" tune. It is time for you to publish are well-reasoned
paper demonstrating the inadequacies of OOP. Do the experiments.
Do the research. Do the work of getting the paper accepted at a
referred journal. Otherwise, in the absence of such rigorous critique,
your comments are not worth a whole lot to those who are finding
value in object technology as an approach to solving real problems
on a day-to-day basis.

Richard Riehle


From: topmind on
> >
> > What about something like an airline reservation
> > system, a student grade tracking system,
> > and inventory system, a finance estimating system,
> > etc. Maybe they are not glamorous or fun, but THAT
> > is the kind of thing that most developers work on.
> >
> I can mention, but am not free to name the client, an airline
> frequent flyer program that is programmed using OOP
> complete with multiple inheritance, polymorphism, dynamic
> binding, generic templates, type safety, and graphical
> user interfaces. It also includes a database that seems to
> work quite well.
>
> There are plenty of applications that have been designed using
> OOP.


In this case, I am requesting an example of allegedly good OO that many
people can publicly disect and analyze. You seem to think I am implying
that OOP programs won't run, which is NOT the case. OOP is Turing
Complete so that it can produce the correct answers just like any other
TC technique, including assembler language. But mere running is not the
issue here.


> Some of these are in C++, others in Ada, others in
> Java, and more recently, in C#. Eiffel and Smalltalk applications,
> while not as abundant, also demonstrate the value of
> OOP. I don't have direct experience with Ruby, but I understand
> that has some successes.
>
> As to device drivers, that is the last place I would expect to use OOP,
> at least in my own domain. Far more appropriate are the large-scale
> applications. Admittedly, polymorphism and dynamic binding are
> sometimes not appropriate where one is concerned with a high degree
> of determinism, such as safety-critical software. However, for GUI
> applications, all the features of OOP seem to have proven their
> benefit, at least in my domain.

Well, I question the way many GUI engines are designed. For one, they
unnecessarily tend to be hardwired to *one* particular language, and
this is in part a fault of OOP and one of the reasons for the success
of HTML and CGI, dispite their clunkiness. It is illogical to reinvent
GUI engines for each language. A GUI engine needs to be more
declarative to be language-neutral. In general, declarative techniques
tend to be more language-neutral, and this is part of why I prefer
data-centric techniques. GUI design is a huge topic that is
interesting, but let's save that for another day. OOP GUI's were the
"best solution at the time", and that is why they were popular.
However, that does not mean they are the best possible.

But writing GUI engines is one specific domain. Most developers don't
write GUI engines for a living. The implication is that OO's benfits
are cross-domain, and thus good for "business modeling". I question
that.

>
> Not all OOP applications are good. Some are quite messy, and
> would be messy even if developed using other approaches.
>
> Of course, I have no illusions that anything I have said will persuade you.
> It seems you have already made up your mind, and the old adage, "He
> convinced against his will is of the same opinion still," seems to apply,
> even when you are shown direct evidence contradictory to your view.


You *show* me concrete comparative evidence outside of systems
software, and I promise to give it a fair hearing.


>
> "What evidence?" you protest. Exactly my point. This is why I long
> ago stopped wasting my time trying to explain anything to you. Today,
> I have, for some odd reason, reached some limit of patience and
> wonder why you even bother to participate in this forum since you
> clearly have no interest in topic beyond harping on what you see as
> the failures of OOP.

Did OOP help you read my mind so that you know "clearly" I have
no interest in such? Now there is a new OO bragging point.
If I reject solid evidence, you are allowed to question my
motivation. Until then I take offense.

>
> I admire and appreciate critical thinking, skepticism, and a willingness
> to question the common wisdom. I agree with you that some of the
> silliness that passes for good software practice needs to be challenged.
> I do, however, find it tiring when you have no other song to sing than
> the "show me" tune.


Damned those skeptics and scientists, always asking for concrete
evidence of claims. Spank 'em all! Back to the Dark Ages
when annocdotes and nepotism was good enough for truth finding.


> It is time for you to publish are well-reasoned
> paper demonstrating the inadequacies of OOP. Do the experiments.
> Do the research. Do the work of getting the paper accepted at a
> referred journal. Otherwise, in the absence of such rigorous critique,
> your comments are not worth a whole lot to those who are finding
> value in object technology as an approach to solving real problems
> on a day-to-day basis.

In the age of the web, we don't need journals. They are too
stodgey for our biz. Thus, I have a web-site. Plus, my main
thrust is challenging OO claimers rather than so much defend
alternatives. I don't even claim my favorite techniques are
objectively better. There is a huge psychology element to
software engineering, but OO braggers make it all sound
cut-and-dry. If you say OO reduces the number of lines of
code, I will ask you to demonstrate. If you say OO reduces
the amount of code that has to change down the road, I will
ask you to present your code and a representative set of
change scenarios (and might add my own). And you have to
describe why you think the alternatives will fail.

That to me seems perfectly fair and reasonable. If not, then
I guess I am just delusional. The domain-neutral
evidence-to-claim ratio seems very very low to me. If it
is really high, then I am just plain [bleeped] in the head
and seeing the world all wrong.

>
> Richard Riehle

-T-

From: topmind on
> However, the amount of problems that require a non-hierarchical
> classification are rare

Now this I disagree with. Trivial structures are fairly easy to make
into a tree, but complex structures usually are not. And again, if it
is trivial, then it does not matter which paradigm or technique is
used; the differences are minor.

Thus, we need should focus on non-trivial classifications. I have seen
trees fall apart many times. I used to be a tree-fan because a
professor once pumped us up with the idea. Over time I discovered the
hard way that he was wrong.

There are few, if any "natural" forces in the biz world that keep
classifications as a nice tree. There are no Tree Cops. I find sets far
more natural to real-world classifications as they change and grow.
True, sets are probably a "useful lie", but far more useful than trees.
Trees are a half-useful lie.

It is true that one can *force* any structure into a tree (or set of
trees) with enough work, but it will get ugly and hard-to-maintain
after a while.

Trees are popular because they are easy for most people to relate to.
However, being easy to relate to and better fitting actual
classifications and actual changes are two very different things. In
short:

TREES ARE A CRUTCH

(In the real world, crutches are trees, unless you go aluminum :-)

-T-

First  |  Prev  |  Next  |  Last
Pages: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
Next: Use Case Point Estimation