Plato and Object-Oriented Programming

I’ve been working my way through an introductory philosophy book that provides a short history of western thought and philosophical tradition. I’ve just finished the chapter introducing Plato and Platonic thought, and the particulars (heh) of Plato’s philosophy struck a chord with me because of the universal/particular dichotomy he introduced. It reminded me of what I had learned about object-oriented programming over the last few years.

Plato’s philosophy in essence is the idea of separation of particulars from universals. Rather, his philosophy stressed the importance of abstract ideas over the observation of reality. Plato’s thesis was essentially that observation was inherently unreliable, and his famous “Cave” problem clearly illustrates his idea that our eyes filter any observations we might make and our eyes can make mistakes because we are imperfect creatures. In the cave problem, Plato posits that generations of people have been born in a  cave tied to stakes facing a wall that is illuminated by a fire on the back wall. The problem states that no one born in the state of being tied to a stake ever has any idea what a fire is, or what objects cast the shadows on the wall, or even their own condition relative to reality perceived by someone who’s not tied to a stake. Plato finally postulated that anyone finding people in this condition would try to lead them out of the cave, and be killed as a result of the enormous discomfort and change inherent in being brought of a cave and into the light for the first time.

While Plato is technically correct in his problem (perception of people tied to stakes is flawed, any steps taken to shed ignorance are painful, etc.), his scenario presents problems of its own that have to be addressed if we’re going to talk about ideas vs. perception. 1) Men aren’t usually born tied to stakes, 2) even if men were born tied to stakes it would be unlikely for them to remain living in such a condition, and 3) men have needs and desires that can help them overcome fear of the unknown. In addition to the caveats mentioned, Plato himself is trusting in his own perception of the problem he’s concocted. I think that gives us permission to pause and reevaluate this idea of Plato’s that says that perceptions are nothing compared to ideas. I think the best way I know how to do this is through the language of computer programming, and particularly in the ideas of declaration and implementation.

A declaration of a class in an interface or header file can be considered an idea or ideal. We don’t care how the interface or declaration achieves what it says its going to do because its just an idea when its declared. But an interface or declaration doesn’t actually do anything useful. In fact, without an implementation of the interface or declaration it simply adds dead weight to any program you might want to compile. Worse, the interface or declaration may say it does one thing, but have a side effect or unintended consequence in the implementation. The problems with platonic evaluations of reality are similar to the problem of a mis-matched implementation/declaration. While this may provide an argument for platonic ideas in the sense that ideas are the only reality, my point is that ideas don’t have any inherent worth until they’re implemented in reality. Yes, those ideas might lose something in translation from abstract thought to reality but ideas that aren’t acted out are forgotten and don’t affect anyone.