Abstract
This paper offers a review of Giuseppe Primero’s (2020) book “On the foundations of computing”. Mathematical, engineering, and experimental foundations of the science of computing are examined under the light of the notions of formal, physical, and experimental computational validity provided by the author. It is challenged the thesis that experimental computational validity can be defined only for the algorithmic method and not for the software development process. The notions of computational hypothesis and computational experiment provided by Primiero (2020) are extended to the case of software development. Finally, it is highlighted how the hypothetical-deductive method is involved in the practice of using models to corroborate computational hypotheses in software testing. As a concluding remark, it is underlined how defining experimental computational validity in the context of software development offers a sound experimental foundation to the science of computing.
Notes
See Mosses (2006) for an introduction on denotational semantics.
Gordon Moore in 1965 realised that the cost of circuit components decreases as the number of components per circuit increases and predicted that the number of transistors in a chip would have doubled every two years (Moore et al. 1965).
Current software can reach hundreds of millions of code lines or even more, as it is the case for the Google web services with its 2 billion lines.
Some of these relations, namely verification and validation, are considered in Sect. 6 below.
That high-level language programs can be understood as computational artefacts is a well-accepted statement since (Turner 2014).
Whereas a specification, often called property specification, requires a definite behavioural property to be satisfied by a program, a system specification expresses all the behaviours that the program is expected to implement.
Notice that no mathematical model is here referred to and so this relation only involves the computational one.
References
Ammann P, Offutt J (2016) Introduction to software testing. Cambridge University Press, Cambridge
Angius N (2013) Abstraction and idealization in the formal verification of software systems. Mind Mach 23(2):211–226
Angius N (2014) The problem of justification of empirical hypotheses in software testing. Philos Technol 27(3):423–439
Angius N, Primiero G, Turner R (2021) The philosophy of computer science. In: Edward N. Zalta (ed) The stanford encyclopedia of philosophy (Spring 2021 Edition). URL = <https://plato.stanford.edu/archives/spr2021/entries/computer-science/>
Baier C, Katoen J-P (2008) Principles of model checking. MIT press, Cambridge
Brooks FP Jr (1996) The computer scientist as toolsmith ii. Commun ACM 39(3):61–68
Callahan J, Schneider F, Easterbrook S (1996) Automated software testing using model-checking. In: Proceedings 1996 SPIN workshop. vol 353
Cantwell Smith B (1996) The limits of correctness. In: Kling R (ed) Computerization and Controversy, ACM SIGCAS Computers and Society, 2nd edn, Morgan Kaufmann, Academic Press, San Diego, pp 18–26.
Clarke EM, Grumberg O, Peled D (1999) Model checking. MIT press, Cambridge
Colburn TR (1999) Software, abstraction, and ontology. Monist 82(1):3–19
Colburn T (2000) Philosophy and computer science. M. E. Sharpe
Curry HB (1934) Functionality in combinatory logic. Proc Natl Acad Sci USA 20(11):584
de Bruijn NG (1970) A survey of the project automath. Symp Autom Demonstr Lect Notes Math 125:29–61
De Millo RA, Lipton RJ, Perlis AJ (1979) Social processes and proofs of theorems and programs. Commun ACM 22(5):271–280
Denning PJ (2005) Is computer science science? Commun ACM 48(4):27–31
Dijkstra EW et al. (1970) Notes on structured programming
Duncan WD (2017) Ontological distinctions between hardware and software. Appl Ontol 12(1):5–32
Eden AH (2007) Three paradigms of computer science. Mind Mach 17(2):135–167
Fetzer JH (1988) Program verification: the very idea. Commun ACM 31(9):1048–1063
Floridi L (2008) The method of levels of abstraction. Mind Mach 18(3):303–329
Floyd R (1967) Assigning meanings to programs. Proc. Symp Appl Math Math Asp Comput Sci 19:19–32
Hoare CAR (1969) An axiomatic basis for computer programming. Commun ACM 12(10):576–580
Hughes RI (1999) The Ising model, computer simulation, and universal physics. Ideas Context 52:97–145
Humphreys P (1994) Numerical experimentation. Patrick Suppes: Scientific Philosopher, pp 103–121.
Irmak N (2012) Software is an abstract artifact. Grazer Philosophis Stud 86(1):55–72
Moor JH (1978) Three myths of computer science. Br J Philos Sci 29(3):213–222
Mosses PD (2006) Formal semantics of programming languages: an overview. Electron Notes Theor Comput Sci 148(1):41–73
Naur P, Randell B (1969) Software engineering: report of a conference sponsored by the nato science committee, Garmisch, Germany, 7th to 11th October, 1968. Scientific A airs Division, NATO
Newell A, Perlis AJ, Simon HA (1967) Computer science. Science 157(3795):1373–1374
O’Hearn PW, Pym DJ (1999) The logic of bunched implications. Bull Symb Log 5(2):215–244
Parker WS (2009) Does matter really matter? computer simulations, experiments, and materiality. Synthese 169(3):483–496
Primiero G (2016) Information in the philosophy of computer science. In: Floridi L (ed) The Routledge handbook of philosophy of information. Routledge, London, pp 90–106
Primiero G (2020) On the foundations of computing. Oxford University Press, USA
Rapaport WJ (2020) Philosophy of computer science. Current draft in progress at https://cse.buffalo.edu/~rapaport/Papers/phics.pdf
Reynolds JC (2002) Separation logic: a logic for shared mutable data structures. In: Proceedings 17th annual IEEE symposium on logic in computer science, IEEE, pp 55–74
Scott D, Strachey C (1971) Toward a mathematical semantics for computer languages, vol 1. Oxford University Computing Laboratory, Programming Research Group Oxford
Simon HA (2019) The sciences of the artificial, 3rd edn. MIT press, Cambridge
Suber P (1988) What is software? J Specul Philos 89–119.
Tedre M (2014) The science of computing: shaping a discipline. CRC Press, Boca Raton
Turner R (2014) Programming languages as technical artifacts. Philos Technol 27(3):377–397
Turner R (2018) Computational artifacts. Springer
Wang C, Hachtel GD, Somenzi F (2006) Abstraction refinement for large scale model checking. Springer, Berlin
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Angius, N. On the Experimental Foundation of Computing. Axiomathes 32 (Suppl 3), 1221–1236 (2022). https://doi.org/10.1007/s10516-022-09645-z
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10516-022-09645-z