A Call for More Philosophy in the Philosophy of Computer Science

Robin K. Hill
20 March 2016

When I was a programmer, and even when I was a teacher of programming, I would wonder about where data structures and algorithms came from, and to what extent people use pass-by-value, pass-by-reference, and pass-by-name for communication in daily life, and whether we use those techniques for activities besides communication, and whether the universe somehow uses those techniques, and many other speculations on the matters of computer science as they might be viewed by philosophy. In the workplace and in the university, opportunities to articulate and consider such questions are rare. While the philosophies of mathematics, science, and logic are well developed, the philosophy of computer science per se is only emerging, and the work that does appear commonly applies the computational paradigm to the questions of philosophy. Let's also apply the philosophical paradigm to the objects of computer science.

In the current philosophy of computer science, many (insightful) investigations are rooted in the formal realm, the realm of discrete objects, of definitions and theorems, of formulae and logic. Topics such as programming language paradigms, software specification and implementation (and syntax and semantics), and the mechanisms of artificial intelligence and knowledge representation underly much of the philosophical offerings, as delineated in the "Philosophy of Computer Science" entry in the Stanford Encyclopedia of Philosophy [Turner 2013]. The current philosophy of computer science, in other words, is cultivated largely within artificial structures and languages formulated by the researcher, and largely focused on programs, with some papers relying on the tacit assumption (perhaps a holdover from the early days of artificial intelligence) that, once we have rendered something as a formal system, we have explained it. Researchers such as Bill Rapaport [Rapaport 2005] and Luciano Floridi [Floridi 2011] both reach farther, extending questions of knowledge, information, and computability into the realms of epistemology and metaphysics, while sometimes deploying formal theories for their solutions. In each of the traditional areas of philosophy—metaphysics, ethics, epistemology, and aesthetics—questions about computer science, often in terms of its relationship with aspects of society and humanity, are already under active consideration by a growing community, embodied in organizations abroad such as the International Association for Computing and Philosophy [IACAP], the American Philosophical Association Committee on Philosophy and Computers, and the Commission on the History and Philosophy of Computing [HaPoC)], along with the periodicals that publish related work. This is good stuff. But we can do even more.

Rather than confining ourselves to the interpretation of philosophical material in terms of computing, let's also interpret the material of computing in terms of philosophy. I myself have contributed an analysis of algorithms that looks outside of their implementation as digital programs [Hill 2015]. There is much more to investigate: What about data structures? Do they exist in the world? I myself am working on this question. Do arrays, for instance, exist in nature? If not, what is the closest thing; what are the natural phenomena that correspond to arrays, or linked lists, or the other abstract data types that we find useful? How far do we have to generalize to find a structural and functional equivalence? And what is the pragmatic function of a given abstract data type—organization, control, homogeneity? How is it that these things serve us?

We can apply philosophy to the things exposed in a computer lab via such questions, just as we apply philosophy to phenomena exposed by other social and scientific developments (phenomena such as choice, law versus justice, the scientific method, feminism). Whereas researchers outside the field like to treat computing instrumentally, as a tool in the investigation of traditional philosophical concepts, computer scientists can contribute the questions that are salient in practice. A database designer, trying to write down the entities and attributes for some enterprise, may wonder, "Why is this so hard?" A data scientist might take a moment to ponder how much data we should produce; how much can we stand? How much makes sense? What does it mean to make sense? If data is a resource, as modern management views would have it, should it undergo the same oversight as other resources? Can it be re-cycled or repurposed? Conserved? Or is it rather a consumer of cognitive resources that call for wise allocation, a liability rather than an asset? These are questions of metaphysics and values.

To identify more questions, we can turn the computer instrumentality inside out. The Indiana Philosophy Ontology Project offers its organization of philosophy research subjects via a thing beloved of computer science, an Application Program Interface (API), that allows programmatic processing of its data [InPhO]. While we make good use of that, looking through the hierarchy of subjects, let us also ask: What is the epistemology of a search tree? Now that we are exploring another traditional area of philosophy, epistemology, let's consider the modern knowledge acquisition mechanism of web search. What is search, anyway? What type of epistemic re-structuring does a search result engender; how does finding an answer compare to learning a fact in some other way? How does web search differ from library search? We're already wondering about the implications of the use of big data rather than semantics as it is traditionally conceived. How does that play out, in terms of different phases or aspects of knowledge? What kind of thing is the Web itself [Monnin 2012]? Peter Boltuc, editor of the APA Newsletter on Philosophy and Computers, raises "the question of what the ontological status of web-based objects is" [Boltuc 2008]. Answers rooted in the contexts of virtual environments and biomedical domains appear in a later issue [Andersen 2009, Arp 2009]. Let's have more; there are many contexts.

We can even follow this into aesthetics. What is the nature of the satisfaction that comes from solving a symbolic problem, as in a game or a software design, and how does it relate to the appreciation of other arts (or sciences)? Why is programming fun? Why are there no elegant algorithms for calendar work (and if there are, what do we mean by "elegant")? Is it because our calendar is irredeemably ugly, impervious to the clean patterning that we admire? And is that because it was developed incrementally, ad hoc, or because of nature itself? We view the irregularity of nature, with its spots, wrinkles, colors, shreds, and other details that resist clean patterns, as beautiful. Do we adopt a different standard when we view the pure and precise algorithm as beautiful? What other kinds of things, like the calendar, resist abstraction, which is essential in computer science [Colburn 2007], and what can we learn from data ontologies [Smith 2003]? Are our abstractions more like abstractions in art or abstractions in science (or even some other quotidian realm), and is there some point of confluence?

Here is a provocative question that could involve all of the classical areas of philosophy: Does learning theoretical computer science make us better people? When we learn about different values of infinity, are we also learning about the limits of perspectives—that context makes a local fact look universal—and thereby something about diversity? When we grasp Gödel's theorems, do we grasp something profound about the boundaries of intellectual effort, and therefore something profound about humanity? Can formal studies and digital expertise be normative? And how can we pursue such questions (especially one as self-serving as this) without falling into absurdity or incoherence? This is not a bid for fatuous speculation! Standards need not be lowered. Analysis via formal systems is fruitful, certainly, but rigor can be found outside of formalisms in the close and disciplined reasoning on complex questions that is regularly practiced by philosophy.

To anyone already addressing the questions I suggest, I commend you and apologize for overlooking your work. To the many successful computer scientists eager to continue their work without probing into its philosophy, I salute you, as well. Keep it up. This is not a demand, not even a plea, but only an invitation.

References

[Andersen 2009] Andersen, David Leech, "A Semantics for Virtual Environments and the Ontological Status of Virtual Objects", APA Newsletter on Philosophy and Computers, 9(1): 15-19, 2009.

[Arp 2009] Arp, Robert, "Realism and Antirealism in Informatics Ontologies", APA Newsletter on Philosophy and Computers, 9(1): 19-22, 2009.

[Boltuc 2008] Boltuc, Peter, "From the Editor", APA Newsletter on Computers and Philosophy, 7(2): 1, 2008.

[Colburn 2007] Colburn, Timothy, and Shute, G.,"Abstraction in Computer Science," Minds and Machines, 17(2): 169-184, 2007.

[Floridi 2011] Floridi, Luciano, "The Philosophy of Information", 2011, Oxford University Press.

[Hill 2015] Hill, Robin K., "What an Algorithm Is", Philosophy and Technology 2015, DOI:10.1007/s13347-014-0184-5.

[HaPoC] The DHST Commission on the History and Philosophy of Computing, hapoc.org, accessed 13 May 2015.

[IACAP] The International Association for Computing and Philosophy, iacap.org, accessed 13 May 2015.

[InPhO] Indiana University Cognitive Science Program, "Indiana Philosophy Ontology Project", https://inpho.cogs.indiana.edu/, accessed 5 February 2016.

[Monnin 2012] Monnin, Alexadre, and Halpin, Harry, "Toward a Philosophy of the Web: Foundations and Open Problems", METAPHILOSOPHY 43(4): 361-379, 2012.

[Rapaport 2005] Rapaport, William J., "Philosophy of Computer Science: An Introductory Course", Teaching Philosophy 28(4): 319-341, 2005. Available at http://www.cse.buffalo.edu/~rapaport/Papers/rapaport_phics.pdf.

[Smith 2003] Smith, Barry, "Ontology," in Blackwell Guide to the Philosophy of Computing and Information, 2003; editor, Luciano Floridi.>

[Turner 2013] Turner, Raymond, "The Philosophy of Computer Science", The Stanford Encyclopedia of Philosophy (Winter 2014 Edition), Edward N. Zalta (ed.), http://plato.stanford.edu/archives/win2014/entries/computer-science/, accessed 13 May 2015.