Python for large projects

Jacek Generowicz jacek.generowicz at cern.ch
Wed Mar 24 08:09:34 EST 2004


Jacek Generowicz <jacek.generowicz at cern.ch> writes:

> Andrew Wilkinson <ajw140NO at SPAMyork.ac.uk> writes:
> 
> > assaf__ at walla.com wrote:
> 
> > I find the lack of static type checking to cause some bugs to hide
> > in my code that in other languages would be found at compile time.
> 
> I feel honour-bound to point out that citing static typing (explicit
> static typing, in particular) as a means of creating more correct
> programs, to be one of the greatest contemporary myths of software
> engineering.

As this statement appears to be causing some interest, I thought I'd
best prestent, in public, a slightly more thoughtful summary of my
thoughts on the subject:


- Static typing systems refuse to compile programs which contain type
  errors.

- Test suites point out where your program deviates from expected
  behaviour.

What is more important to you and/or your clients ?  Ask yourself the
following questions:

- Do your clients give a hoot about whether or not a program is
  considered to be type-correct by the type system of programming
  language X ?

- Do your clients care whether your program does what it is supposed to
  do ?

Yes, test suites are incomplete and contain bugs (not by design but
through human fallability), but at least they set out to judge a
program by relevant criteria. The criteria by which static typing
systems judge a program are mostly irrelevant to the goals you are
trying to achieve in writing the program.

Now, I've seen C++ turn the "goal you are trying to achieve" into
"make the compiler accept my program", on more than one
occasion[*]. That only supports my point: static typing systems move
the goalposts in the mind of the development team[+]. But only in the
mind of the development team: the customer still wants a program that
does what it's supposed to do.

Getting a 95% correct solution to your task, is better than getting a
100% correct solution to an orthogonal task. Passing the tests in a
95% (or 90% or 80%) complete/correct test suite, gets you closer to
solving your clients' problems than does passing 100% of the
requirements of a static type system.

For those last few percent, neither test suites, not static typing
system can offer you any guarantee.


[*] It compiles! Quick, ship it before it breaks! :-)

[+] C++ does have a special talent for this sort of thing, not only
    via its type system, but because of its design as a whole.



More information about the Python-list mailing list