This is a prime example of the conflict between the &quot;machine model&quot; of programming (a computer is a large and elaborate state machine that advances instruction by instruction) and the &quot;maths model&quot; (by reasoning from a set of axioms and rules of production we can transform information or prove facts).<p>The former maps onto imperative programming, and the latter onto functional programming. It seems that different people find these models harder or easier to understand - and then get confused when not everyone sees it that way.