Demonic Nondeterminacy: A Tribute to Edsger Wybe Dijkstra

Jayadev Misra's tribute to EWD at Europar-2003.

A short essay that may be relevant to the question whether language designers should make their languages more forgiving as regards programmer errors, or more stringent.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


My general response to that one was, "Huh?"

Anyone have a clearer reference to what he was talking about?

What exactly?

Are you asking about Dijkstra's work, or about the general claims made by the author?


"Let us call this angelic nondeterminacy,
for obvious reasons."
I missed the point why it was 'angelic' for obvious reasons? There has to be a pun somewhere here I'm not catching.

nicely written though, and I liked the observation of algorithmic variability of implementation on different platforms as being a reason for embracing nondeterminancy.

Another reason it's angelic

When I read it, I thought the "obvious" reason it was angelic was that it required clairvoyance.

I like the conclusion, though; it reminds me of a line from The Vor Game: "The key of strategy, little Vor, is not to choose a path to victory, but to choose so that all paths lead to a victory."

non deteminism

See here for the the defintions (under non-blind backtracking), or here.

The control operator is angelic if, in some sense, it takes you to the best possible result (like an angel).

When we use amb, we can build up from the assumption that amb will return a result such that the entire computation doesn't result in failure. The implementation may use backtracking to achieve this result, but from the programmer's point of view amb simply guarantees to return a good result, i.e., it is angelic.

This is one possible interpretation of determinism. This is quite similar to the way we think about non-deterministic finite automata (NFAs) for example.

the theology of programming

I think actually I would like to see more theology oriented posts :)
I see now you are correct that the control operator is angelic, but it seems a very low level type of angel, what about the other ranks?

we should focus some on them.

I am also very interested in the diabolical, demonic nondeterminancy is good, but what about when satan comes to dinner?




Isn't this the difference between "probabilistic" and "non-deterministic" evolution? The first one means that we throw the dice and choose one step (angelic = we hope we are lucky) at each point in time while the second one means that we are actually observing all possible steps at all times (which doesn't preclude us to consider some steps more "probable" - i.e. something like Markov chains).

hoping we are lucky