Happy birthday to all philosophers out there and to our philosophy graduates who turned to programming! We’re excited to be surrounded by an impressive number of developers who are philosophy majors. Yes, while it might surprise you, philosophy and programming are no strangers to each other. As a developer, you’re probably aware that your code reflects how you perceive the problem and its solution. Before starting to write the code, the first step is to take some time and reflect on the given problem. You consider the already existing facts, experiment with connecting different ideas, and try to find the best solution on a specific matter. Likewise, philosophers go through the same steps while defining a hypothesis.
Alan Turing, the Artificial Intelligence pioneer, was both a computer scientist and a philosopher. While trying to find the answer to the question “can machines think for themselves?”, he developed the Turing Test. The idea behind it is pretty straightforward – if a human (who takes the role of the judge) can’t tell who is the human and who is the machine while reading a conversation between the two parties, then the machine wins. The machine is designed to generate human-like responses, and, during the whole process, all participants are separated from each other. The purpose is not to test the accuracy of the machine’s answers from a factual perspective, but how closely its answers resemble those a human would give. The test is also known as “the imitation game”. And, while it’s been both highly influential and widely criticised, it’s also an important concept in the philosophy of artificial intelligence.
While the programming world wouldn’t have been the same today without Alan Turing’s accomplishments in the ‘50, this work field’s roots go back to Ancient Greece. Although there are many examples to choose from, let’s stick to talking about Plato and his student, Aristotle.
Plato’s Theory of Forms (or Ideas) expresses how the world is an imperfect representation of its perfect Form (or Ideas). Plato believed the world exists in an abstract state, while being independent of minds in its own realm. As it might sound a bit confusing, let’s continue with a specific example: a chair. When visualizing the chair, you’ll view it in a specific, perfect shape. If you take a pencil and try to recreate the perfect chair in your head on paper, you’ll end up with a poor reproduction. Now, take the chair example and apply it to what’s around you. Because, according to Plato, everything in this world, including the world itself, has a corresponding (and perfect) abstract in the world of ideas (forms).
If you found similarities between Plato’s theory and OOP, your senses are correct. Continuing the chair example, consider the class a blueprint defining which attributes are in the objects it produces. First, you can define the chair’s basic attributes: legs, seat, and back. Then, you can make your chair special and add some extra attributes that will make your chair stand out from the crowd. You have infinite possibilities when it comes to choosing attributes, just like in Plato’s world of ideas.
# this is where you define the chair’s main attributes: legs, seat, and back.
class ModernChair( Chair):
# this is where you’ll add the attributes that make your chair unique (maybe a foam seat cushion? Or an adjustable height leveler? A built-in lumbar support?
my_chair = ModernChair()
If he were to work today, Plato would be a great fit for our Java department or in a Perl position. However, he would surely not work in the same department as his student, Aristotle. While one sees each object in the world as a reflection of its perfect, imaginary version, the other argues everything in the universe is built out of four basic elements: fire, earth, air and water. Together, these 4 elements mix up and create everything that surrounds us. In contrast to Plato’s abstract and theoretical philosophy, Aristotle had a more practical and experimental approach. A role where he had to write code in C would’ve been his cup of tea. Nevertheless, they would both be celebrating World Philosophy Day.
If they were to work at evozon, they would be celebrating either at home or at the office. While Plato would’ve argued that the hybrid approach is imperfect and that we’re simply trying to reproduce its perfect, but abstract correspondent, we think it works great in the real world. And, it’s surely here to stay. What could be better than mixing the best of both worlds (a.k.a work from home and work from the office) according to how it works best for each of us?
While some may still try to differentiate philosophy from programming (one being an art subject while the other is a science subject or one being an impractical domain while the other is practical), we hope we made you at least curious about their common attributes. Because, if we look a bit deeper, both programmers and philosophers rely on logical reasoning to solve conceptual problems. They complement each other through their differences and, instead of separating them, a more productive approach would be to have them work together. We can vouch it’s a great approach – our philosophy major programmers are a living proof.
If you’re curious to learn more on how these two fields mix, you can check out this article, this article, or this article. Or, you can watch this video, this video, or this video. There are even some articles out there that try to find arguments in regards to how famous philosophers would choose their programming language today. What do you think? Would you rather see Plato using C++, Perl, or something else? Also, if you want to see some examples of the philosophy x programming x memes combination, we advise you to keep on scrolling!
Article written by Ruxandra Mazilu