Considering we already have software disasters with the
predominant languages all supporting static typing
suggests (at least) that compile-time testing is
inadequate to the task (I think we all agree on this) but
that testing is the only way to prove a system's
/correctness/.
Bzzzt! The proof that proving a program's correctness by
testing is infeasible is an undergraduate computer science
exercise.
The only known way to _prove_ program correctness is by
formal mathematical validation methods, and because they
are not yet splendidly automated, they don't extend to
programming in the large economically feasibly.
Read the many writings of Edsgar Dijkstra on the subject.
If the latter is the target and the former does not
guarantee the latter, then do we need the former?
Nothing we can pay for "does the latter", we are in a mode
of trying to move to "doing the best we can" rather than
"doing the least we can".
You need the former because it takes out a whole class of
frequent errors quickly, automatically, and most important,
cheaply in comparision to formal SQA methods. In a large
programming effort, programmers are a small minority of all
salary costs, so having programmers work harder to save
overall costs makes economic sense.
Does the flexibility forfeited to the compiler pay for
itself in hard or soft dollars (pick your currency).
The "flexibility" you are "forfeiting" is the chance to make
stupid mistakes even an idiot machine could have caught; not
high on my hit parade.
On the issue of payback, read the publications of the
Software Engineering Institute, in particular their widely
used Capability Maturity Model book, and judge for yourself;
I lent my copy out and never got it back. Sigh.
http://www.sei.cmu.edu/publications/publications.html
There are probably all levels of programmers, just are
there are in any profession. Is it truly unimaginable
that some programmers are capable of delivering quality
(tested) systems without the assistance of compile-time
type checking?
It is truly imaginable that anyone I have ever heard make
that claim for him or her self was just excusing bone
laziness. I have known half a dozen people with 180 IQs in
my life, and most likely each of them could pull it off, but
definitely each of them has better sense than to try, as
well. For the rest of us, yes, it is truly unimaginable, and
the record bears me out.
Which have been the predominant languages for the past 10,
20, 30 years? Certainly not dynamically typed ones. C,
C++, Delphi, and Java constitute the majority of
development since (at least) the early 80s, all of them
favor static typing (though I'm uncertain about VB--never
used it). Is there a correlation?
No, because you have the wrong end of the stick; the problem
of creating software in the large is a problem in human
engineering, the failures of the past have not been, in any
great proportion, software development tool failures but
software management failures (read: Microsoftisms), and the
question is, does using tools less capable of assisting
correctness improve or damage the human engineering aspect?
Given that there is little choice in good times but to
employ programmers at all levels of competence, the question
of whether to give them all the double-checking help they
can get, whether they want it or not, has an obvious answer
if software quality and on-time deliver are important to
you as an employer.
If insanity really is doing the same thing over and over
again and expecting a different result is it possible
statically typed languages and the assumptions about them
have outlived their usefulness?
No, but it is possible you are slipping into ranting instead
of discussing. The human engineering aspects are slowly
being addressed (see the SEI CMM book), and there have been
some really excellent results in programs where loss of
human life was an issue in terms of delivered bugs per line
of code, most typically with Ada, as strict a taskmaster as
you could ask for in a compiler. The code came out no faster,
but its quality improved dramatically.
Why were the newsgroups misc.misc and talk.bizarre included
on the message? Is there a lot of Java and OO stuff over
there?
Misc.misc because I always try to do so (see my recent note
in rec.games.roguelike.nethack on the subject "Posting to
misc.misc..."), and talk.bizarre because I send only my best
quality rants there to share with my peers(*), in this case
also to share your article URL with the software types
there. It also helps lure intelligent people to talk.bizarre,
though a lot of dead wood gets dragged along too.
xanthian.
(*) None of whom appreciate seeing those rants in the least:
it's an ego thingie, and they put up with me for the most
part, after 18 years to learn resignation.
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG