"Strong typing vs. strong testing"

Keith Thompson kst-u at mib.org
Thu Sep 30 11:26:38 EDT 2010


RG <rNOSPAMon at flownet.com> writes:
[...]
> You can't have it both ways.  Either I am calling it incorrectly, in 
> which case I should get a compiler error, or I am calling it correctly, 
> and I should get the right answer.  That I got neither does in fact 
> falsify the claim.  The only way out of this is to say that 
> maximum(8589934592, 1) returning 1 is in fact "correct", in which case 
> we'll just have to agree to disagree.

You are calling maximum() incorrectly, but you are doing so in a way
that the compiler is not required to diagnose.

If you want to say that the fact that the compiler is not required
to diagnose the error is a flaw in the C language, I won't
argue with you.  It's just not a flaw in the maximum() function.

If I write:

    const double pi = 22.0/7.0;
    printf("pi = %f\n", pi);

then I suppose I'm calling printf() incorrectly, but I wouldn't
expect my compiler to warn me about it.

If you're arguing that

    int maximum(int a, int b) { return a > b ? a : b; }

is flawed because it's too easy to call it incorrectly, you're
effectively arguing that it's not possible to write correct
code in C at all.

-- 
Keith Thompson (The_Other_Keith) kst-u at mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"



More information about the Python-list mailing list