Who needs philosophy?

Definitely not folks who work with technology. Most definitely not engineers. I was one of those people, an engineer. (There is a certificate somewhere that attests to that.) Philosophy for me was about looking out into the distance and thinking about whether I was really thinking or dreaming or existing in some sort of fugue state induced by the Mumbai heat searing metal compartments of local trains. The word ‘Philosophy’ conjured images of busts of men whose names were as strange as the non-spelling of ‘Irinjalakuda’ is to the English language. Even though I went through Sophie’s World, it seemed her world was never mine to hold and understand.

Around six years ago, I read a paper, and something shifted. It was called ‘Classes versus Prototypes: Some philosophical and historical observations’ by Antero Taivalsaari[1]. The paper spoke about Plato and object oriented programming in the same breath. I knew about object oriented programming but I didn’t understand its relationship with Plato.

I encountered object oriented programming in a book by Timothy Budd and was smitten by it. Budd’s book is innocuously (and sincerely) titled ‘An introduction to Object Oriented Programming’. It does not have the identity of the murderer tucked away in the last page, but I read it as though such a revelation was sure to come.

Budd starts about how people who are new to object oriented programming understand it better than those who have worked on procedural programming. Procedural programming models the world as a set of steps, a process or a procedure. In other words, you instruct the computer to perform actions by coding these actions as a series of procedures. On the other hand, object oriented programming was about seeing the world anew, as a set of objects that belonged to certain categories and the relationship between them. You change the world by performing different operations on these objects. Budd argued that it is easier for someone who has not thought of manipulating the world in terms of procedures to start conceptualising it in terms of categories, objects that belonged to those categories, and the relationship between them. An untutored mind could adopt to this new way of seeing rather than the one that was already moulded and ossified. As a regular student, keen to see the world in radical new ways, I was eager to reshape my mind, and read the whole book in one go.

I never realised until I read Taivalsaari’s paper that what had gotten me excited about Budd’s book and object oriented programming in the first place was the philosophy behind it, which is to see the world as a set of objects that are related to each other. What I didn’t understand back then was that philosophy was about a way of seeing the world in order to understand it, and every discipline, including computer science rests on philosophy.

Every discipline tries to understand the world, and therefore, every discipline has a certain philosophical foundation that tells you how that discipline perceives the world. Plato and Aristotle thought that the world has a certain fixed ‘order’, and we discovered that ‘order’ as we understood the world. For a long time most disciplines in the Western canon adopted this approach to looking at the world, and computer science was no different:

What Plato and Aristotle thought:

“… categories were thought to be well understood and unproblematic. They were assumed to be abstract containers, with things either inside or outside the category. Things were assumed to be in the same category if and only if they had certain properties in common. And the properties they had in common were taken as defining the category.[2]

Relationship between Aristotle’s model of the world and object oriented programming:

“His [Aristotle’s] classifications were based on the same idea that underlies object-oriented programming today. A group of objects belongs to the same category if the objects have the same properties. Thus, categories of objects are defined by common properties that a group of objects (the extension of the category) share.[3]

For a second, think about the consequences of adopting Plato’s and Aristotle’s philosophical position for different disciplines:

  1. There is one ‘ideal’ world out there
  2. All of us ‘discover’ this world when we understand it

Image 1 – Is there an ‘ideal world’ we all discover? Or the world we perceive is the world we know?

But, if you think that the world is not fixed, and the world is what we perceive, what we make of it, you adopt a different philosophy, a different way of looking at the world. A lot of disciplines, including computer science, started grappling with this different way of seeing the world, a way of seeing that was rooted in being human. By virtue of the bodies we inhabit, we understand the world a certain way. We perceive the world a certain way because we as humans are made a certain way; our bodies influence our cognition: if we adopt such a philosophical position, then we understand cognition as ‘embodied’. This in turn means that there is no ‘ideal’ world out there for all of us to perceive the same way, but the perceptions differ based on the vessel doing the perception. And as there are many kinds of human beings, there are different ways in which this classification can be done, this understanding can happen.

Consequences of adopting an ‘embodied’ understanding of cognition, and therefore a different philosophical position for different disciplines:

  1. Each of us understands the world in our own way, and that understanding is shaped by our bodies
  2. There is no ‘ideal’ world for us to understand, but there are ‘interpretations’

It is a dramatic shift in thinking about the world, a fundamental philosophical shift. It means moving away from thinking there is one world we all are trying to understand, to thinking about everyone’s perception as a valid interpretation of the world.

Different disciplines from economics, cognitive science, linguistics, computer science, psychology – all of them grappled with this philosophical shift. And in a series of blogposts, I hope to explore this shift, and what it means for research and practice. (There will be politics too – after all, what doesn’t have politics?)

[1] Taivalsaari, A. (1996). Classes vs. Prototypes Some Philosophical and Historical Observations. Journal of Object-Oriented Programming10(7), 44-50.

[2] Lakoff, G. (2008). Women, fire, and dangerous things. University of Chicago press.

[3] Taivalsaari, A. (1996). Classes vs. Prototypes Some Philosophical and Historical Observations. Journal of Object-Oriented Programming10(7), 44-50.

Leave a Reply

Your email address will not be published. Required fields are marked *