Minds and Machines

, Volume 28, Issue 3, pp 465–489 | Cite as

Virtual Machines and Real Implementations

  • Tyler MillhouseEmail author


What does it take to implement a computer? Answers to this question have often focused on what it takes for a physical system to implement an abstract machine. As Joslin (Minds Mach 16:29–41, 2006) observes, this approach neglects cases of software implementation—cases where one machine implements another by running a program. These cases, Joslin argues, highlight serious problems for mapping accounts of computer implementation—accounts that require a mapping between elements of a physical system and elements of an abstract machine. The source of these problems is the complexity introduced by common design features of ordinary computers, features that would be relevant to any real-world software implementation (e.g., virtual memory). While Joslin is focused on contemporary views, his discussion also suggests a counterexample to recent mapping accounts which hold that genuine implementation requires simple mappings (Millhouse in Br J Philos Sci, 2017.; Wallace in The emergent multiverse, Oxford University Press, Oxford, 2014). In this paper, I begin by clarifying the nature of software implementation and disentangling it from closely related phenomena like emulation and simulation. Next, I argue that Joslin overstates the degree of complexity involved in his target cases and that these cases may actually give us reasons to favor simplicity-based criteria over relevant alternatives. Finally, I propose a novel problem for simplicity-based criteria and suggest a tentative solution.


Physical computation Computer realization Automata Triviality arguments Kolmogorov complexity Simplicity Emulation Simulation 


  1. Aaronson, S. (2011). Why philosophers should care about computational complexity. arXiv:1108.1791
  2. Bennett, C. H., Gács, P., Li, M., Vitányi, P. M., & Zurek, W. H. (1998). Information distance. IEEE Transactions on Information Theory, 44(4), 1407–1423.MathSciNetCrossRefzbMATHGoogle Scholar
  3. Block, N. (1995). The mind as the software of the brain. In D. N. Osherson & E. E. Smith (Eds.), An invitation to cognitive science (Vol. 3, pp. 377–425). Cambridge: MIT Press.Google Scholar
  4. Brown, C. (2012). Combinatorial-state automata and models of computation. Journal of Cognitive Science, 13(1), 51–73.CrossRefGoogle Scholar
  5. Bryant, R., & O’Hallaron, D. (2016). Computer systems: A programmer’s perspective (3rd ed.). London: Pearson Education.Google Scholar
  6. Chalmers, D. J. (1996). Does a rock implement every finite-state automaton? Synthese, 108(3), 309–333.MathSciNetCrossRefzbMATHGoogle Scholar
  7. Chalmers, D. (2012). The varieties of computation: A reply. Journal of Cognitive Science, 13(3), 211–248.CrossRefGoogle Scholar
  8. Copeland, B. J. (1996). What is computation? Synthese, 108(3), 335–359.MathSciNetCrossRefzbMATHGoogle Scholar
  9. Cormen, T., Leiserson, C., Rivest, R., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). Cambridge, MA: MIT Press.zbMATHGoogle Scholar
  10. Fodor, J. (1968). Psychological explanation. New York: Random House.Google Scholar
  11. Godfrey-Smith, P. (2009). Triviality arguments against functionalism. Philosophical Studies, 145(2), 273–295.CrossRefGoogle Scholar
  12. Hayes, P. J., Berkeley, I. S. N., Bringsjord S., Hartcastle, V., McKee, G. & Stufflebeam, R. (1997). What is a computer? An electronic discussion. The Monist, 80(3), 389–404.CrossRefGoogle Scholar
  13. Joslin, D. (2006). Real realization: Dennett’s real patterns versus Putnams ubiquitous automata. Minds and Machines, 16, 29–41.CrossRefGoogle Scholar
  14. Kolmogorov, A. N. (1963). On tables of random numbers. Sankhy, Series A, 25, 369–376.MathSciNetzbMATHGoogle Scholar
  15. Klein, C. (2008). Dispositional implementation solves the superfluous structure problem. Synthese, 165, 141–153.CrossRefGoogle Scholar
  16. Levenshtein, V. I. (1966). Binary codes capable of correcting deletions, insertions and reversals. Soviet Physics Doklady, 10, 707–710.MathSciNetGoogle Scholar
  17. Li, M., & Vitányi, P. (2008). An introduction to Kolmogorov complexity (3rd ed.). New York: Springer.CrossRefzbMATHGoogle Scholar
  18. Maudlin, T. (1989). Computation and consciousness. Journal of Philosophy, 86(8), 407–432.CrossRefGoogle Scholar
  19. Millhouse, T. (2017). A simplicity criterion for physical computation. The British Journal for the Philosophy of Science.
  20. Nagel, L., & Pederson, D. (1973). SPICE (simulation program with integrated circuit emphasis). Berkeley: EECS Department, University of California.Google Scholar
  21. Piccinini, G. (2015). Physical computation: A mechanistic account. Oxford: Oxford University Press.CrossRefzbMATHGoogle Scholar
  22. Putnam, H. (1988). Representation and reality. Cambridge: MIT Press.Google Scholar
  23. Pylyshyn, Z. (1984). Computation and cognition. Cambridge, MA: Bradford Books.Google Scholar
  24. Rescorla, M. (2014). A theory of computational implementation. Synthese, 191, 1277–1307.MathSciNetCrossRefGoogle Scholar
  25. Scheutz, M. (1999). When physical systems realize functions.... Minds and Machines, 9(2), 161–196.CrossRefGoogle Scholar
  26. Scheutz, M. (2001). Computational versus causal complexity. Minds and Machines, 11(4), 543–566.CrossRefzbMATHGoogle Scholar
  27. Scheutz, M. (2012). What it is not to implement a computation: A critical analysis of Chalmers notion of implemention. Journal of Cognitive Science, 13(1), 75–106.CrossRefGoogle Scholar
  28. Searle, J. (1980). Minds, brains, and programs. Behavioral and Brain Sciences, 3(3), 417–424.CrossRefGoogle Scholar
  29. Searle, J. (1992). The rediscovery of mind. Cambridge, MA: MIT Press.Google Scholar
  30. Sipser, M. (2013). Introduction to the theory of computation. Boston: Cengage Learning.zbMATHGoogle Scholar
  31. Silberschatz, A., Galvin, P. B., & Gagne, G. (2013). Operating system concepts (9th ed.). Hoboken, NJ: Wiley.zbMATHGoogle Scholar
  32. Sprevak, M. (2012). Three challenges to Chalmers on computational implementation. Journal of Cognitive Science, 13(2), 107–143.CrossRefGoogle Scholar
  33. Turing, A. M. (1937). On computable numbers, with an application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 42(2), 230–265.MathSciNetCrossRefzbMATHGoogle Scholar
  34. Van Der Walt, (2011). The numpy array: A structure for efficient numerical computation. Computing in Science and Engineering, 13(2), 22–30.CrossRefGoogle Scholar
  35. Wallace, D. (2014). The emergent multiverse. Oxford: Oxford University Press.zbMATHGoogle Scholar

Copyright information

© Springer Nature B.V. 2018

Authors and Affiliations

  1. 1.University of ArizonaTucsonUSA

Personalised recommendations