[comp.object] A Rewrite Is *NOT* An Experiment

guthery@acw.UUCP (Scott Guthery) (04/11/91)

"We rewrote the X system in Y and it was k times faster.  (Therefore Y
is not only not less efficient than X and might even be more efficient!)"

Can somebody tell me why statements of this genre from the OO crowd
(or any other crowd with an axe to grind, for that matter) go
unchallenged?  Does hype like hope spring eternal?

Com'on, folks.  The fact that the rewrite ran faster says nothing at
all about the relative merits or efficiencies of X and Y.  The
efficiency of the rewrite is due at least to 1) the use of Y *AND* 2)
the fact that it was a rewrite.  For all we know, the rewrite might
have been 2k faster if X had been used.  In fact, in any rewrite
situation, I'd bet that 83.7% of the efficiency gains are due to
simply rethinking the implementation in light of now-known usage and
load patterns.

The experiment of interest, of course, is to independently rewrite
the system in X and then compare the new X implementation with the Y
implementation.

The fact that OO advocates not only let statements such as this pass
unchallenged but actually reference them in discussion tells us much more
about the advocates than it does about the technology.

							Cheers, Scott

+*+*+*+*+*+*+*+*+*+*+*+*+ Austin Code Works +*+*+*+*+*+*+*+*+*+*+*+*+*+*+**+*+
NET Domain: guthery@uunet.uu.net           Post:  11100 Leafwood Lane
COM Domain: guthery@acw.com                       Austin, Texas 78750-3464 USA
US  Domain: guthery@acw.austin.tx.us       FAX:   +1 (512) 258-1342
Usenet:     {uunet}!acw!guthery            Voice: +1 (512) 258-0785
CompuServe: 70240,221                      Fidonet:  1:382/12
Packet:     N5MDE @ KB5PM                  Prodigy:  BCDG83A
+*+*+*+*+*+*+*+*+*+*+*+*+* The Source of C +*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+

richieb@bony1.bony.com (Richard Bielak) (04/11/91)

In article <44.UUL1.3#913@acw.UUCP> guthery@acw.UUCP (Scott Guthery) writes:
>"We rewrote the X system in Y and it was k times faster.  (Therefore Y
>is not only not less efficient than X and might even be more efficient!)"
>
>Can somebody tell me why statements of this genre from the OO crowd
>(or any other crowd with an axe to grind, for that matter) go
>unchallenged?  Does hype like hope spring eternal?
>
>Com'on, folks.  The fact that the rewrite ran faster says nothing at
>all about the relative merits or efficiencies of X and Y.  The
>efficiency of the rewrite is due at least to 1) the use of Y *AND* 2)
>the fact that it was a rewrite.  For all we know, the rewrite might
>have been 2k faster if X had been used.  In fact, in any rewrite
>situation, I'd bet that 83.7% of the efficiency gains are due to
>simply rethinking the implementation in light of now-known usage and
>load patterns.
>

I agree with you on this point. However, I find that there is too much
emphasis on efficiency and not enough on reliability and correctness.
We are starting a project in which we will re-build a large system and
we will program it in Eiffel. We chose Eiffel mostly because we expect
that our code will be more reliable (partly due to
"object-orientedness" but mostly because of Eiffels pre- and post
conditions).

In our case, it is more cost effective to buy faster machines, then to
suffer software failures in production systems.


...richie



-- 
*-----------------------------------------------------------------------------*
| Richie Bielak  (212)-815-3072    | Programs are like baby squirrels. Once   |
| Internet:      richieb@bony.com  | you pick one up and handle it, you can't |
| Bang:       uunet!bony1!richieb  | put it back. The mother won't feed it.   |

aew@eosvcr.wimsey.bc.ca (Alan Walford) (04/11/91)

guthery@acw.UUCP (Scott Guthery) writes:

> "We rewrote the X system in Y and it was k times faster.  (Therefore Y
> is not only not less efficient than X and might even be more efficient!)"

I can only assume thar S.G. is referring to my post regarding the rewrite
of my survey software.

> 
> Can somebody tell me why statements of this genre from the OO crowd
> (or any other crowd with an axe to grind, for that matter) go
> unchallenged?  Does hype like hope spring eternal?

Ha, who has the axe to grind. It certainly isn't me. I think we all
know who does.

> 
> Com'on, folks.  The fact that the rewrite ran faster says nothing at
> all about the relative merits or efficiencies of X and Y.  The
> efficiency of the rewrite is due at least to 1) the use of Y *AND* 2)
> the fact that it was a rewrite.  For all we know, the rewrite might
> have been 2k faster if X had been used.  In fact, in any rewrite
> situation, I'd bet that 83.7% of the efficiency gains are due to
> simply rethinking the implementation in light of now-known usage and
> load patterns.

Yes, a very large part of the efficiency gain is due to the rewrite and
rethinking of the problem. I did not and I do not dispute this.

My point was this: You can write an efficient program in an object 
oriented language using object oriented concepts. People (customers)
were happy with the speed of the old implementation and are stunned at
the speed of the new one. 

Your statements that customers will not pay for the use of object
oriented language is completely unfounded.

What is the axe you have to grind anyway ?

> 
> 							Cheers, Scott

Cheers again, Alan


Alan Walford
Eos Systems Inc
aew@eosvcr.wimsey.bc.ca

jls@rutabaga.Rational.COM (Jim Showalter) (04/12/91)

This is a good post, and raises an important point--a rewrite is NOT
the proper way to judge the merits of one methodology over another.

However, there HAVE been some efforts to write the SAME project in
parallel, using a functional methodology on one and an object-oriented
methodology on another. Companies typically do these so-called "shadow"
projects (the main project and a parallel one that shadows it) to assess
as scientifically as possible the real merits of newfangled stuff as
opposed to the hype.

In all such cases I'm aware of, the object-oriented shadow project came
out on top.
--
* The opinions expressed herein are my own, except in the realm of software *
* engineering, in which case I borrowed them from incredibly smart people.  *
*                                                                           *
* Rational: cutting-edge software engineering technology and services.      *

marc@dumbcat.sf.ca.us (Marco S Hyman) (04/14/91)

In article <jls.671420246@rutabaga> jls@rutabaga.Rational.COM (Jim Showalter) writes:
 > In all such cases I'm aware of, the object-oriented shadow project came
 > out on top.

Jim, please elaborate.  The only examples I've seen published have been more
re-write than parallel development.  Some references please.
-- 
// marc
// home: marc@dumbcat.sf.ca.us		pacbell!dumbcat!marc
// work: marc@ascend.com		uunet!aria!marc

klimas@iccgcc.decnet.ab.com (04/16/91)

In article <44.UUL1.3#913@acw.UUCP>, guthery@acw.UUCP (Scott Guthery) writes:
> "We rewrote the X system in Y and it was k times faster.  (Therefore Y
> is not only not less efficient than X and might even be more efficient!)"
> 
> Can somebody tell me why statements of this genre from the OO crowd
> (or any other crowd with an axe to grind, for that matter) go
> unchallenged?  Does hype like hope spring eternal?
> 
> Com'on, folks.  The fact that the rewrite ran faster says nothing at
> all about the relative merits or efficiencies of X and Y.  The
> efficiency of the rewrite is due at least to 1) the use of Y *AND* 2)
> the fact that it was a rewrite.  For all we know, the rewrite might
> have been 2k faster if X had been used.  In fact, in any rewrite
> situation, I'd bet that 83.7% of the efficiency gains are due to
> simply rethinking the implementation in light of now-known usage and
> load patterns.
> 
> The experiment of interest, of course, is to independently rewrite
> the system in X and then compare the new X implementation with the Y
> implementation.
> 
> The fact that OO advocates not only let statements such as this pass
> unchallenged but actually reference them in discussion tells us much more
> about the advocates than it does about the technology.
> 
> 							Cheers, Scott
	Real world production experience does not necessarily
	corroborate Mr. Guthrey's claims.

	Although one has the benefit of previous work in defining 
	the required functionality when doing a rewrite, there are some
	benefits to using the right tool for the right job.  I have seen
	some remarkable increases in productivity when rewriting some
	buggy C based drivers in an OO language.  The rewrite was done from
	a well defined specification (the same one that the original C
	code was based upon) and the developer managed to create a new driver 
	in a very short time that previously had taken several man-months 
	with straight C.  The main influencing factor seemed to be 
	the large existing library (i.e. code reuse) that the 
	developer was able to take advantage of.  As an aside, the code was 
	also more reliable, compact and, inspite of the myth that OOP is slow,
	the new driver was just as fast as the old one!

	OOP is beneficial for a number of software engineering problems,
	however one has to be a little prudent in making sure that the fit is
	appropriate.

klimas@iccgcc.decnet.ab.com (04/29/91)

In article <jls.671420246@rutabaga>, jls@rutabaga.Rational.COM (Jim Showalter) writes:
> This is a good post, and raises an important point--a rewrite is NOT
> the proper way to judge the merits of one methodology over another.
> 
> However, there HAVE been some efforts to write the SAME project in
> parallel, using a functional methodology on one and an object-oriented
> methodology on another. Companies typically do these so-called "shadow"
> projects (the main project and a parallel one that shadows it) to assess
> as scientifically as possible the real merits of newfangled stuff as
> opposed to the hype.
> 
> In all such cases I'm aware of, the object-oriented shadow project came
> out on top.
> --
	Some further corroboration.

	One can raise the argument that when rewritting a program in an OOP
	language from a non OOP language, it is easier because one is 
	benefitting from the accumulated design knowledge in the existing code.

	This was an interesting argument that was difficult to disprove until
	I had a real life experience relayed to me by a software tool maker.
	To meet some tight deadlines for an upcomming trade show, they did
	a show demo in Smalltalk. Afterwards they had to reimplement the same
	program in Objective-C which was a little harder and took longer even
	though the developer's were well versed in the language.  Finally, the
	same tool was rewritten for C++ which was much harder to do and took
	significantly longer.  The tool developer has his greatest market with
	C++ users so he's reluctant to tell his customers they are not
	necessarily using the best technology.  

	This experience seems to disprove some of the ideas that it is easier
	to redo software the second time around.

hansen@pegasus.att.com (Tony L. Hansen) (05/07/91)

< From: klimas@iccgcc.decnet.ab.com
< One can raise the argument that when rewritting a program in an OOP
< language from a non OOP language, it is easier because one is
< benefitting from the accumulated design knowledge in the existing
< code.

< This was an interesting argument that was difficult to disprove until I
< had a real life experience relayed to me by a software tool maker.  To
< meet some tight deadlines for an upcomming trade show, they did a show
< demo in Smalltalk. Afterwards they had to reimplement the same program
< in Objective-C which was a little harder and took longer even though
< the developer's were well versed in the language.  Finally, the same
< tool was rewritten for C++ which was much harder to do and took
< significantly longer.  The tool developer has his greatest market with
< C++ users so he's reluctant to tell his customers they are not
< necessarily using the best technology.

< This experience seems to disprove some of the ideas that it is easier
< to redo software the second time around.

I can't help but wonder how much of the problems doing the reimplementation
were due to lacks in the language vs. a lack of an equivalent library and/or
environment. For example, if the Smalltalk library provided a particular
flavor of collection class which was crucial to the implementation, and a
comparable collection class weren't already available in Objective-C and/or
C++, such a collection class would probably have to be coded from scratch in
order to continue with the port. Should that be considered a problem with the
technology or a problem with the maturity of the technology? In other words,
the technology may be sound but just not have sufficient support.

We need more data.

					Tony Hansen
			    hansen@pegasus.att.com, tony@attmail.com
				att!pegasus!hansen, attmail!tony