4
$\begingroup$
  1. Wikipedia says

    A model of computation is a formal description of a particular type of computational process. The description often takes the form of an abstract machine that is meant to perform the task at hand.

    What other forms can a model of computation take than an abstract machine?

  2. What are the difference and relation between a model of computation and an abstract machine? I thought that they were the same, until I saw the the quote above.
$\endgroup$

migrated from programmers.stackexchange.com Nov 8 '15 at 2:09

This question came from our site for professionals, academics, and students working within the systems development life cycle.

  • 2
    $\begingroup$ Abstract machines are one example of a model of computation. The lambda calculus is a model of computation but not an abstract machine. $\endgroup$ – Benjamin Hodgson Nov 7 '15 at 9:31
  • $\begingroup$ Thanks. Why is lambda calculus not an abstract machine? What category (i.e. a peer of abstract machines) does it belong to then? $\endgroup$ – Tim Nov 7 '15 at 9:34
  • 2
    $\begingroup$ I guess you'd call it a "calculus". Another example of such a calculus might be the pi calculus which is designed to model concurrent computation. Neither of these are abstract machines because they don't attempt to model hardware. The Turing machine or the SECD machine are examples of abstract machines. $\endgroup$ – Benjamin Hodgson Nov 7 '15 at 9:38
  • 2
    $\begingroup$ I suppose the difference is that calculi are denotational in nature - they model computation mathematically and have meaning outside of their implementation - and abstract machines are operational in nature - they model computation as a series of steps to be carried out by some imaginary hardware, and this tie their meaning to the behaviour of said hardware. $\endgroup$ – Benjamin Hodgson Nov 7 '15 at 9:40
  • 1
    $\begingroup$ Let us continue this discussion in chat. $\endgroup$ – Benjamin Hodgson Nov 7 '15 at 9:45
2
$\begingroup$

An abstract machine typically defines instructions with opcodes and operands. A Warren abstract machine, a java virtual machine, a Turing machine. A programming model defines operations at a higher level, and could be independently supported by a number of different machines. For example the actor programming model says that an actor can send a message, create a new actor, and define internal state for its next message to be handled. This is said without defining specific opcodes and operands, though one could envision an abstract machine that supported that.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.