Minds and Machines

, Volume 21, Issue 2, pp 135–152 | Cite as


  • Raymond TurnerEmail author


The specification and implementation of computational artefacts occurs throughout the discipline of computer science. Consequently, unpacking its nature should constitute one of the core areas of the philosophy of computer science. This paper presents a conceptual analysis of the central role of specification in the discipline.


Specification Correctness Scientific theory Philosophy of computer science 


  1. Abrial, J. (1996). The B-book. Cambridge: Cambridge University Press.zbMATHCrossRefGoogle Scholar
  2. Aho, A. S. (1985). Compilers principles, techniques and tools. Reading, Massachusetts: Addison-Wesley.Google Scholar
  3. Alan, J. (1994). Natural language understanding. London: Addison Wesley.Google Scholar
  4. Anguis, N. (2010). Abstraction and idelization in the verification of computer programs. Forthcoming.Google Scholar
  5. Asperti, A. (2009). Social processes, program verification and all that. Mathematical Structures in Computer Science, 19(5), 877–896.MathSciNetzbMATHCrossRefGoogle Scholar
  6. Baier, C. J. (2008). Principles of model checking. Cambridge, MA.: MIT Press.zbMATHGoogle Scholar
  7. Bass, L. C. (2003). Software architecture in practice. Pittsburgh: SEI.Google Scholar
  8. Bengt Nordström, K. P. (1990). Programming in Martin-Löf’s type theory. Oxford: Oxford University Press.zbMATHGoogle Scholar
  9. Boghossian, P. (1989). The rule-following considerations. Mind, 98(392), 507–549.MathSciNetCrossRefGoogle Scholar
  10. Chalmers, A. (1999). What is this thing called science. Maidenhead: Open University Press.Google Scholar
  11. Colburn, T. R. (2000). Philosophy and computer science. Explorations in philosophy, series. New York: M.E. Sharpe.Google Scholar
  12. Dawes, J. (1991). The VDM-SL reference guide. London: Pitman.Google Scholar
  13. De Millo, R. A., & Lipton, R. J. (1979). Social processes and proofs of theorems and programs. Communications of the ACM, 22, 271–280.zbMATHCrossRefGoogle Scholar
  14. Diller, A. Z. (1990). An introduction to formal methods. London: Wiley.zbMATHGoogle Scholar
  15. Eden, A. (2011). Codecharts: Roadmaps and blueprints for object-oriented programs. Hoboken, NJ: Wiley-Blackwell.Google Scholar
  16. Edmund, M., & Clarke, J. O. (1999). Model checking. Boston: MIT Press.Google Scholar
  17. Fernandez, M. (2004). Programming languages and operational semantics: An introduction. London: King’s College Publications.zbMATHGoogle Scholar
  18. Fetzer, J. (1988). Program verification: The very idea. Communications of the ACM, 31(9), 1048–1063.CrossRefGoogle Scholar
  19. Franssen, M. (2009). The philosophy of technology. Retrieved from Stanford encyclopedia of philosophy.
  20. Fuchs, N. (1992). Specifications are (preferably) executable. Software Engineering Journal, 7(5), 323–334.CrossRefGoogle Scholar
  21. Gluer, K. W. (2008). The normativity of meaning and content. Retrieved from Stanford encyclopedia of philosophy.
  22. Grady Booch, J. R. (1999). The unified modeling language. Reading, Massachusetts: Adison Wesley.Google Scholar
  23. Gupta, A. (2008). Stanford encyclopedia of philosophy. Retrieved from definitions.
  24. Hale, B. (1987). Abstract objects. Oxford: Basil Blackwell.Google Scholar
  25. Hale, B. (2001). The reason’s proper study. Oxford: Clarendon Press.zbMATHCrossRefGoogle Scholar
  26. Horty, J. (2007). Frege on definitions. New York: Oxford University Press.Google Scholar
  27. Jacquette, D. (2002). Ontology. Chesham: Acumen Publishing Ltd.Google Scholar
  28. Jones, C. (1986). Systematic software development using VDM. Hemel Hemstead: Prentice Hall.zbMATHGoogle Scholar
  29. Jones, C. (1990). Specifications are not (necessarily) harmful. Software Engineering Journal, 330–339.Google Scholar
  30. Kripke, S. (1982). Wittgenstein on rules and private language. Boston: Harvard University Press.Google Scholar
  31. Kroes, P., & Meijers, A. (Eds.). (2006). The dual nature of technical artifacts. Special issue of Studies in History and Philosophy of Science, 37, 1–158.Google Scholar
  32. McCarthy, N. (2006). Philosophy in the making. Ingenia, issue 26.Google Scholar
  33. Milner, R. (1978). A theory of type polymorphism in programming. Jcss, 17, 348–375.MathSciNetzbMATHGoogle Scholar
  34. Moor, J. (1978). Three myths of computer science. British Journal for the Philosophy of Science, 29, 213–222.Google Scholar
  35. Morgan, C. (1990). Programming from specifications. London: Prentice Hall.zbMATHGoogle Scholar
  36. O’Hearn, P. W. (2010). Abductive, inductive and deductive reasoning about resources. In csl: DBLP conference 2010. (pp. 49–50).Google Scholar
  37. Pierce, B. (2002). Types and programming languages. London: The MIT Press.Google Scholar
  38. Plotkin, G. (2004). A structural approach to operational semantics. Journal of Logic and Algebraic Programming, 60–61, 17–139.MathSciNetGoogle Scholar
  39. Potter, B. S. (1991). An introduction to formal specification and Z. New Jersey: Prentice Hall.zbMATHGoogle Scholar
  40. Robinson, R. (1950). Definition. Oxford: Clarendon Press.Google Scholar
  41. Rosen, G. (2001). Abstract objects. Retrieved from Stanford encyclopedia of philosophy.
  42. Rosenberg, A. (2000). The philosophy of science. London: Routledge.Google Scholar
  43. Spivey, J. (1998). Understanding Z. Cambridge: Cambridge University Press.Google Scholar
  44. Stoy, J. (1977). Denotational semantics. Massachusetts: MIT.Google Scholar
  45. Turner, R. (1991). Constructive foundations for functional languages. New York: Prentice Hall.Google Scholar
  46. Turner, R. (2007). Understanding programming languages. Minds and Machines, 17(2), 129–133.CrossRefGoogle Scholar
  47. Turner, R. (2009). Computable models. New York: Springer.zbMATHCrossRefGoogle Scholar
  48. Turner, R. (2010). Programming languages as mathematical theories. In J. Valllverdu, Thinking machines and the philosophy of computer science. IGI Global Publishers.Google Scholar
  49. Vallverdu, J. (2010). Thinking machines and the philosophy of computer science. IGI Global.Google Scholar
  50. Van Vliet, H. (2008). Software engineering: Principles and practice. Chichester: John Wiley.Google Scholar
  51. Woodcock, J. (1996). Using Z- specifications, refinement and proof. New Jersey: Prentice Hall.Google Scholar
  52. Zalta, E. (1983). Abstract objects. Dordrecht, New York: D. Reidel.Google Scholar

Copyright information

© Springer Science+Business Media B.V. 2011

Authors and Affiliations

  1. 1.CSEEEssex UniversityColchesterUK

Personalised recommendations