Is there a "Large Scale Python Software Design" ?
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
* 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