Computer Science and Philosophy


I originally wanted to title this article “Computer Science Is Philosophy,” but I realized that was too much of a stretch, so instead of merging the two disciplines, I juxtaposed them. Still, I am convinced that some will turn their noses up at this "daring" juxtaposition, despite this backtrack.
What do computer science and philosophy have in common? Much more than one might initially think.
“If you begin with computer science, you will end with philosophy.”
– William J. Rapaport
Perceived difference
At first glance, one might say that the two disciplines are polar opposites.
Philosophy is the discipline of asking questions and wondering why things happen. However, it apparently has the sole task of satisfying man's inherent curiosity about how the world works. It is not commonly given any practical implications; in fact, the saying goes, "Philosophy is that thing by which and without which everything remains as it is."
Computer science, on the other hand, has an enormous impact on reality. We have noticed this for several decades now. The digital revolution has changed the way we work, interact, and live in society. I think there is no discipline that invades our everyday lives more than computer science.
The real-world impact and concreteness of computer science is not only perceived by those who use it, but also by those who make it. Computer science is problem solving and the application of computational thinking—the ultimate in concreteness.
So how can computer science be juxtaposed with philosophy?
Computer science originated from philosophy
It may seem paradoxical but, disregarding the purely practical attempts of Pascal, Leibniz, Babbage, and others, the foundations of computer science arise from philosophical matters. Some of the earliest foreshadowings are Leibniz's search for the Characteristica universalis and Boole's analysis of the laws of thought, but the Entscheidungsproblem, or decision problem, is what gave rise to modern computing.
In the late nineteenth and early twentieth centuries, there was an ongoing debate about the logical and philosophical foundations of mathematics. As part of this debate, in 1928, David Hilbert, one of the most influential mathematicians of that time, posed the question of whether a mechanical procedure (i.e., algorithm) could determine the validity of a statement in first-order logic. Without delving into the details, this mathematical problem paved the way for questions about what automatic computation is, what it means to be able to compute something, and how we can define computability. In other words, to determine whether such an algorithm exists, we must first understand the nature of computation. In short, this is one of those questions of a purely philosophical nature.
The answer to Hilbert's question was negative, and several mathematicians and logicians proved it a few years later, more or less independently. First, Alonzo Church, and later, Alan Turing, defined the concept of computability formally. Turing used his famous abstract machine to formally explain the concepts of algorithms and computations. Although Turing's machine was used to demonstrate the negative outcome of the philosophical debate, it had a significant practical side effect: it paved the way for the field of automated information processing.
A discipline that mere mortals cannot do without nowadays emerged from a philosophical issue seemingly far removed from everyday life.
Representation of reality
However, the relationship between computer science and philosophy does not stop at the origins. Let's try making a juxtaposition that might seem far-fetched at first.
What is philosophy? What is its essence?
This is one of the classic million-dollar questions. Over the centuries, various definitions have been offered by scholars and philosophers themselves. I really like the definition attributed to Voltaire: "When the listener does not understand the speaker, and the speaker does not know what he is saying, that is philosophy", which wittily corroborates the discipline's inconsistency, perhaps including this article…
But, all jokes aside, I find the definition from Treccani quite adequate: "...that activity of thought [...] which tends to seek what remains stable in every experience and is constantly valid as the criterion for action...". In other words, philosophy is the activity that drives us to find a common denominator among distinct phenomena and derive a general law to give order to the world.
What did the Pre-Socratic philosophers do? They analyzed reality, identified common elements in natural phenomena, and developed theories that they tried to validate. Plato and Aristotle did much the same later on. The difference with Pre-Socratic philosophers was that they no longer searched for a natural element common to observable phenomena; instead, they resorted to more abstract concepts, such as ideas and immanent forms. This approach continued for centuries among other philosophers, who offered different representations of reality.
Identifying what different things have in common is what we often refer to as abstraction. Through abstraction, we create a simplified representation of reality by eliminating irrelevant details. But what is the purpose? To understand and eventually control reality.
What do you say? Is abstraction also used in computer science? And for pretty much the same purpose? Great!
Those who design and implement computer systems know that abstraction is the main tool for modeling and controlling reality, i.e., analyzing it, making decisions, and interacting with it. Entity-relationship models, object-oriented programming, and programming languages are all examples of abstraction that simplify understanding and manipulation of reality (or another level of its abstraction).
There is no need to resort to virtual reality and The Matrix as examples of controlling reality. We are talking about the abstraction of reality, not its simulation. However, simulation and the creation of alternative realities have philosophical appeal for sure.
Like a philosopher, a database designer analyzes reality, identifies relevant aspects for the project, and represents them effectively. Then, they test the resulting system for validity. Similarly, a developer analyzes reality and represents it with classes and objects in a manner consistent with the application's purpose. Then, they test for compliance with the expected results.
Philosophers and computer scientists do nothing more than represent reality in a way that is most useful to their purposes.
Questions that go beyond
Some might argue that this comparison is reductive and that philosophers are concerned with more than just representing and attributing meaning to reality. Philosophers are also concerned with existence, the self, and the relationship between the soul and the body. They ask questions such as where the body ends and the soul begins and where the self ends and the external world begins. All of these things are complex and mysterious.
Perfect! Computer scientists face similar questions: What is the relationship between hardware and software? What is the boundary between them? Can hardware be simulated with software? Can software determine whether it is running on real or virtual hardware? What distinguishes two instances of the same software? What is the relationship between concurrency and parallelism?
As you can see, even in computer science, complex and mysterious questions abound.
Not to mention existential questions, such as the difference between data and information, or between data and programs. Is there a clear distinction? What about a program's ability to consider another program (or even itself) as data? This is metaprogramming, which is almost as fascinating as metaphysics.
A Future Without Answers
With the advent of this new generation of AI, philosophical questions have increased. How can a "simple" statistical prediction simulate intelligence?
Turing believed that a chat could determine the intelligence of machines. Today, we all chat with machines, but I am unsure about their intelligent capabilities. Unless his test was actually designed to assess human intelligence…
ChatGPT, Gemini, Copilot, and other AI systems answer our questions by raising much more difficult ones (if we can grasp them):
What is the difference between humans and intelligent machines?
Can a computer understand?
Is intelligence computation?
What is consciousness? Are machines conscious?
Can machines have legal responsibility?
Should an AI be allowed to make decisions?
What are ethics? How can ethics be taught to a machine?
Interacting with AI requires more philosophical skill than we realize, not just for asking questions, but also for giving instructions and interpreting an AI system's responses.
I'll stop here without mentioning quantum computing and other technologies that solve problems and trigger new questions requiring new philosophical and computer theories.
And to think that Picasso claimed that computers "are useless. They can only give you answers."
Subscribe to my newsletter
Read articles from Andrea Chiarelli directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Andrea Chiarelli
Andrea Chiarelli
I'm Software Engineer and Technical Author with over 20 years of experience in software design and implementation. Throughout my career, I've had the opportunity to use a variety of programming languages and technologies on many different projects. In the last few years, I've been focusing on simplifying the developer experience with Identity and related topics as a Developer Advocate at Auth0 by Okta.