« How to Tell Somebody What They Don't Know| Main | Keeping your Mouth Shut »

Plato and OOP: Together Again

| | Comments (0)
I'm taking my hour of exercise each morning and listening to a tape series about great thinkers in Western culture. Today I learned some about Socrates and Plato. If you are a C++, Java, or C# programmer, you should take some time to learn about those dudes who lived a long time ago and wore togas. After all, they're the ones who really created analysis and OOP. Somebody recently said that all of western science was just footnotes to Plato's work. There's a lot of truth in that.

It's fascinating to me how much philosophy and computer programming are related. In both disciplines, you start off wandering around in the world, trying to figure out where to start. Your boss says "write me a timecard system" or your parents ask you "what are you going to do with your life?"

Some folks do a lot of abstract planning first. Some folks just jump right in. In either case, you are trying to make something useful from the things you can observe and reason about. You are taking your perception and reason, abstracting and analyzing it, then acting on it (by coding or picking a course for your life, for instance)

Usually the folks who jump right in get lost fairly quickly. It's easy in OOP to create complex structures which do not work like they are supposed to do. Many of us have found that it's good to come up with some abstract ideas and plans before you start typing in code. Likewise, people who don't think a lot about philosophy end up doing things that don't make any sense in their life. Just like a good class diagram is important for constructing an Object-Oriented Program, a sound philosophical foundation is essential for a life well-lived.

in our lives, most times we get these foundations from church, our political parties ( a troubling development), school chums, professors, friends, or mass media (another troubling development). Lately, lazy thinkers -- especially Americans and Europeans -- want all of their philosophy pre-packaged and pre-chewed for easy consumption. Their attitude is "don't make me do a lot of thinking, just show me the good guys and the bad guys and tell me a story" It's sort of the couch-potato's guide to thinking for yourself. Pre-chewed food for the mind.

Likewise, when we computer guys go to see demonstrations of the latest technology from companies like Microsoft, they show us some kind of fool's show where all of this happy and easy stuff happens and code just falls out magically from the box. Don't get me wrong -- I'm not opposing progress or automation in any way. But somebody is supposed to be doing some thinking in the whole process. Analysis is not dead, nor does it sleep. A lot of us simply want somebody else to do all of the heavy thinking for us. I wish it were so easy.

I think that if you want to survive in the next century, you had better put down the I-Pod and the South Park DVDs and pick up the Socrates and Aristotle, because that's the type of "heavy thinking" that computers and cheap labor cannot replace. It's the thing you have they cannot take away from you. You'd better get good at it.

Plato, for instance, came up with the idea of Platonic Forms. Plato theorized that for every thing we observe in the world there is a "true" version of that thing. That there is a world of "true forms" that are instantiated and aggregated into the things we observe. There is an abstract concept of "bed" in which all real beds are examples of. When a carpenter goes to build a physical bed, in his mind he is thinking of the "true" bed, which he uses as a template to make a physical bed (or a physical instance of a bed). Is this ringing a bell for any of you object-oriented programmers out there? Anybody here understand the difference between a class and an object? How about what an abstract base class is? Or an interface? Plato was talking about these things 2500 years ago. If you think that stuff is high-technology, or even modern or recent, you're sucking wind.

The philosophies can immensely help those interested in Artificial Intelligence. After all, a lot of philosophy is the observation of the world and the formation of an abstract language about it. Then the individual acts on those abstract ideas to change the world around them. I can't think of any better definition of what an artificial intelligence should be doing.

Unlike what we see today on TV and at trade shows, the philosophers never claimed to have all of the answers (well most didn't, anyway). Plato went off the rails with his Republic and his lack of understanding the limits of rationalization. Socrates obviously didn't understand that not everything could be taught and the limits of knowledge. There is no "Philosophy 1.0" or "Philosophy 1.1" and progress s nowhere near a straight line. i'm not even sure the word "progress" can be used over the last 2500 years. But there's wisdom there, and there's valuable material for our professional lives. Plus you can be a hit at all of the cocktail parties and geek-fests. And what better way to pick up chicks than a rousing discussion of Plato's Republic? You'd be like a chick magnet or something.

More seriously you might be able to provide more for you and your family than before. Your life and your work gets easier. Is that cool or what?

Leave a comment

About this Entry

This page contains a single entry by Daniel published on May 8, 2006 2:37 PM.

How to Tell Somebody What They Don't Know was the previous entry in this blog.

Keeping your Mouth Shut is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.23-en
Daniel Markham