Flying With Python (Strong versus Weak Typing)

Donn Cave donn at u.washington.edu
Fri Mar 14 19:06:06 CET 2003


Quoth Alex Martelli <aleax at aleax.it>:
| Donn Cave wrote:
|> Quoth Alex Martelli <aleax at aleax.it>:
|> ...
|>| Static typing makes it easier for the compiler to generate fast
|>| code, and (depending also on other issues) may slightly enhance
|>| programmer productivity by catching a small percentage of errors
|>| a bit earlier than testing would catch them -- that's all.  It has
|>| no real bearing on safety issues for life-critical software.
...

|> This seems to be a matter of one's faith in some set of techniques
|> that an engineering team can use to write correct software.  The
|> Python world seems to place a great deal of faith in testing.
|> Statically typed languages can test, too, so the bottom line must
|> be whether testing is such a perfect solution that anything else -
|> like computer analysis of the program for structural correctness -
|> is irrelevant.  Interesting question.  I don't understand testing,
|
| "irrelevant" is the wrong criterion to apply to this engineering
| question, in my opinion.  Any real-world system is developed under
| constraints of budget and deadlines.  If static typing decreases
| overall programmer productivity by N% (so that N% fewer tests will
| get written given the budget/timing constraints) but by hypothesis
| catches Q% more errors in absence of tests, then the right check
| is not whether Q > 0 -- it's whether Q > X where X% are the errors
| caught by having N% more tests.
|
| If you had unlimited resources and could take unbounded time before
| you delivered a system, then you might be able deliver a system with 
| 0 errors, almost independently of choice of methodologies and tools.  
| But such a hypothetical issue is of no real-world interest.

But earlier you said static typing ``may slightly enhance programmer
productivity'', which meant to me that N can be negative, in which
case Q is certainly larger than X.  That was the point that I thought
rather generous of you to concede.

If you go that way, for free or at negative cost you catch Q errors
that you can't guarantee will be caught any other way in bounded
time.  If that doesn't have any bearing on life critical applications,
I am going to stick to my bicycle.

	Donn Cave, donn at u.washington.edu




More information about the Python-list mailing list