Last night I was explaining the troubles with concurrent programming (or, more specifically, I was explaining why immutable data structures were nice, and particularly the implications on concurrent programming) and I came up with a couple of fairly entertaining analogies:
- Concurrent programming is like playing a monopoly game where all but every 12th tile is a `You're screwed' tile. Meaning unless you roll a perfect 12 every time, you're screwed.
- Concurrent programming is like playing inverse Russian roulette with a machine gun. Meaning every spot other than the 6th is a live bullet (on average), and you've got a nice long stream of these bullets in a machine gun.