It may be worthwhile realizing that most programming or specification languages describe State Machines [1], more or less explicitly (sorry if this is obvious). Moreover State Machines can be described using ordinary mathematics instead of custom programming languages or logics. Hence State Machines could be used as a common denominator to describe all kinds of computation, similarly to what equations written using ordinary mathematics are to physics. According to Leslie Lamport, from whom the ideas in this comment are borrowed, State Machines are also a powerful teaching tool that prevents language from getting in the way of concepts [1].<p>State Machines described in ordinary mathematics have other advantages. For example, substitution distributes over operators in mathematics (but not in most programming languages). This is very handy for deriving an implementation from a specification. Another example is that composition can be treated uniformly by using a single state space for all State Machines.<p>If you are interested in the applications and advantages of describing computation by State Machines you may like reading the works of Leslie Lamport [2] or texts about the ASM method [3].<p>[1] <a href="https://research.microsoft.com/en-us/um/people/lamport/pubs/state-machine.pdf" rel="nofollow">https://research.microsoft.com/en-us/um/people/lamport/pubs/...</a><p>[2] <a href="https://research.microsoft.com/en-us/um/people/lamport/" rel="nofollow">https://research.microsoft.com/en-us/um/people/lamport/</a><p>[3] <a href="https://en.wikipedia.org/wiki/Abstract_state_machines" rel="nofollow">https://en.wikipedia.org/wiki/Abstract_state_machines</a>