In practice, digital computation is often used to simulate natural processes (for example, Evolutionary computation), including those that are more naturally described by analog models of computation (for example, Artificial neural network). In this situation, it is important to distinguish between the mechanism of computation and the simulated model.
A computation can be seen as a purely physical phenomenon occurring inside a closed physical system called a computer. Examples of such physical systems include digital computers, quantum computers, DNA computers, molecular computers, analog computers or wetware computers. This point of view is the one adopted by the branch of theoretical physics called the physics of computation.
In the theory of computation, a diversity of mathematical models of computers and their software are defined. A computation is considered as the evolution over discrete time epochs of such a model. Typical mathematical models of computers are the following:
Typical mathematical models of computer software are the following:
Different mathematical models of computers (as well as programming languages) can be classified according to their expressive power, see, for example, the Chomsky hierarchy. There are also other classifications of computations than the Chomsky hierarchy.