Newsgroups: comp.object,comp.lang.c++,comp.lang.ada,comp.lang.smalltalk,comp.lang.eiffel
Path: cantaloupe.srv.cs.cmu.edu!rochester!cornellcs!newsstand.cit.cornell.edu!portc01.blue.aol.com!portc02.blue.aol.com!howland.erols.net!news.bbnplanet.com!cam-news-hub1.bbnplanet.com!news-xfer.netaxs.com!news.fast.net!uunet!in3.uu.net!uucp5.uu.net!world!bobduff
From: bobduff@world.std.com (Robert A Duff)
Subject: Re: OO, C++, and something much better!
Message-ID: <E4otIs.4q0@world.std.com>
Organization: The World Public Access UNIX, Brookline, MA
References: <JSA.97Jan16141937@alexandria> <6PI998tV3RB@herold.franken.de> <5c4ab5$134$1@goanna.cs.rmit.EDU.AU> <dewar.854377239@merv>
Date: Mon, 27 Jan 1997 22:08:52 GMT
Lines: 27
Xref: glinda.oz.cs.cmu.edu comp.object:60421 comp.lang.c++:243562 comp.lang.ada:56643 comp.lang.smalltalk:50160 comp.lang.eiffel:17816

In article <dewar.854377239@merv>, Robert Dewar <dewar@merv.cs.nyu.edu> wrote:
>Runtime checks tell you only that a specific execution of the program did
>not fail the checks, and are thus subject to the fundamental weakness of
>all dynamic based testing methods -- they can establish the presence of bugs,
>but they cannot easily be used to prove the absence of bugs.

But, to be fair, to the dynamic-typing folks, static checking can't
prove the absense of bugs, either.  There is no silver bullet.  Static
checking eliminates *some* bugs, and that's good.  A catch-phrase like
"testing can't eliminate bugs" isn't helpful, since no other technique
is perfect, either.

IMHO, one should be looking for techniques that reduce bugs, not for
some fool-proof-method that can replace some-other-foolproof-
method-that-eliminates-bugs, and thereby replace the other technique.

This comment even applies to formal proofs of "correctness", since
"correctness" really means, in this context, "obeys some formal
specification", and there is never, nor can there ever be, a formal
proof that the formal specification obeys what a reasonable person
demands of the software.

IMHO, one should be applying static checking and also dynamic checking
and also testing and also anything-else-one-think-of to eliminate bugs.
No single techique will suffice.

- Bob
