phil hunt wrote: > It's not the number of paths that's important. Absolutely right. Non-trivial software always has too many paths to consider them individually, so we have to reason generally.
> What's important is *predictability*, e.g. which instruction will > the computer execute next? > > If you only have one thread, you can tell by looking at the code > what gets executed next. It's very simple. Not really. Trivially, an 'if' statement that depends upon input data is statically predictable. Use of async I/O means makes the programs execution dependent upon external timing. > If you have 2 threads you can easily have a timing-based situation > that occurs rarely but which causes your program to behave wierdly. > This sort of bug is very hard to reproduce and therefore to fix. So we need to learn to avoid it. [...] > Yes, find solutions. Don't find dangerous dead-ends that look like > solutions but which will give you lots of trouble. If concurrency is a dead end, why do the programs that provide the most sophisticated services of any in the world rely on it so heavily? -- --Bryan -- http://mail.python.org/mailman/listinfo/python-list