Is there a "Large Scale Python Software Design" ?

Dave Brueck dave at pythonapocrypha.com
Tue Oct 19 14:56:58 EDT 2004


Andreas Kostyrka wrote:
> On Tue, Oct 19, 2004 at 07:16:01AM -0700, Jonathan  Ellis wrote:
> 
>>Testing is good; preventing entire classes of errors from ever
>>happening at all is better, particularly when you get large.  Avoiding
>>connectedness helps, but that's not always possible.
> 
> What classes of errors are completely avoided by "static typing" as
> implemented by C++ (Java)? 

I'm curious as well, because from what I've seen, the classes of errors "caught" 
are (1) a subset of the higher-level (e.g. algorithmic and corner-case) errors 
caught by good testing anyway, (2) much more common in code written by 
lazy/underexperienced developers who are already considered a liability, and (3) 
caused in part by complexities introduced by the language itself*.

More modern/advanced static type systems that let you actually get into the 
semantics of the program (as opposed to just deciding which predefined type 
bucket your data fits in) may help, but IMO the jury's still out on them (partly 
due to complexity, and partly due to _when_ in the development process they must 
be defined - perhaps that's the root problem of some static type systems - they 
make you declare intent and semantics when you know the _least_ about them! 
Consider the parallels to available knowledge in compile-time versus run-time 
optimizations).

-Dave

* A trivial example:When programmers need to count something, rarely do they 
care about unsigned vs signed or short vs normal vs long vs longlong, and yet in 
something like C++ they are _constantly_ making this decision.

Another: in Java, every exception that can be thrown must be mentioned in the 
code every step of the way - a maintenance nightmare, not to mention the utter 
distraction during development.



More information about the Python-list mailing list