Avoid functional programming3
Dealing with state in functional languages is awkward
- streams (e.g. for I/O)
- histogramming
- other updating examples
Support for “stateful” computation is important
- for efficiency and expressiveness
State operations must commute in a generalized sense
- i.e. invariants must be preserved but the final state may differ depending on the order of the operations
Parallel state transformations are non-deterministic
- atomicity is required to ensure consistency
This sounds a lot like data base transactions . . .