Moderation: captainblake's blackberry

Adam Sroka <[email protected]> Mon, 24 May 2010 19:33:36 -0700
Newsgroups gmane.comp.programming.refactoring
Message-ID <[email protected]>
Is it just me, or does anyone else get this bounce message *every* time they
post to this list? Could we maybe give "captainblake" the boot?

---------- Forwarded message ----------
From: <[email protected]>
Date: Mon, May 24, 2010 at 7:30 PM
Subject: Delivery Status Notification(Failure)
To: [email protected]


Your message:
To: [email protected]
Subject: Re: [refactoring] TDD for numerical algorithms
Sent Date: 30:39 +0000
has not been delivered to the recipient's BlackBerry Handheld.



---------- Forwarded message ----------
From: Adam Sroka <[email protected]>
To: [email protected]
Date: Mon, 24 May 2010 19:24:58 -0700
Subject: Re: [refactoring] TDD for numerical algorithms


On Mon, May 24, 2010 at 6:35 PM, Richard
<[email protected]<legalize%40xmission.com>>
wrote:
>
>
>
> OK, I know this isn't strictly refactoring and more of a TDD question,
> but I don't know of a forum specifically for TDD.
>

There is a testdrivendevelopment yahoo group similar to this one. In
fact, it has more members and is historically higher traffic than this
one (both have been pretty quiet lately, though.)

> How would you use TDD to implement the Mersenne twister random number
> generator? <http://en.wikipedia.org/wiki/Mersenne_Twister>
>
> In particular, I'm curious as to what kind of test cases you would write.
>

It's the wrong question. TDD is an evolutionary process. Like all
evolutionary processes it is impossible to reverse engineer it for any
non-trivial problem. That is to say: there is no good answer to the
question "What set of tests do I need to write to arrive at the given
solution?"

That said, there are certainly any number of sets of tests for which
Mersenne Twister is a potential solution. There may even be some set
of tests for which it is the simplest possible solution. And, any
given set of tests that could be solved by this algorithm could also
be used to test drive a solution that may or may not be as effective
and may or may not trivially resemble the given solution.

Make sense?

What is potentially a more interesting question is: if I test drove
towards a problem for which I knew Mersenne Twister was a possible
solution could I then refactor my solution to resemble a known
implementation of that algorithm? In my experience it is usually
possible to do that, but you have to know the solution pretty well to
get there.

What I can guarantee is that if you follow the process of TDD
diligently you will arrive at a simple, possibly naive, solution to
the problem that was posed. Often the advantages of having a naively
simple, thoroughly tested solution that solves the business problem
for all known inputs outweigh the advantages of having a
mathematically elegant one.
 


[Non-text portions of this message have been removed]



------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/refactoring/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/refactoring/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/