In A Discipline of Programming, Dijkstra wrote:

Two circumstances have changed the scene since then.* The one is the insight that, even in the case of fully deterministic machines, program testing is hardly helpful. As I have now said many times and written in many places: program testing can be quite effective for showing the presence of bugs, but is hopelessly inadequate for showing their absence. The other one is the discovery that in the meantime it has emerged that any design discipline must do justice to the fact that the design of a mechanism that is to have a purpose must be a goal-directed activity. In our special case it means that we can expect our post-condition to be the starting point of our design considerations. In a sense we shall be "working backwards".

*[i.e., since the time of irreproducibility/indeterminism (real bugs!) in computation]

A Monte Carlo algorithm is only partially "a goal-directed activity": We know very little about how the algorithmic form of the pseudorandom number generator relates to the ultimate goal of the Monte Carlo algorithm.
(which, for example, might be computing the area of a circle)

Thus, it would seem Dijkstra would be opposed to Monte Carlo algorithms, either for problem-solving or for testing, because it is unclear what the algorithmic form of a random number generator has to do with what Monte Carlo tasks are designed to accomplish.


Your Answer


Browse other questions tagged or ask your own question.