Wednesday, February 11, 2009

Cartesian Programming

I long ago decided that my (not yet finished) book ("The Pop Psychology of Programming", if you're paying attention) had to include a brief history of psychology. The reason is, people have lots of stereotypes and misconceptions of psychology, but what those might be depends a bit upon when you learnt anything about psychology. If most of your psych-ed came from watching 60's TV, then you're still imagining a couch-bound "talking cure". If you took a Psych 101 in the 70's, then you might imagine the field is stuck back in behaviorism. So, a Brief History of Shrinks seems like a plausible way to help get disparate readers more or less on the same page

But what I only recently decided was where to start my History of Psychology. People who write a History of Anything seem to vie with each other to start off at the earliest historical date possible. When it comes to psychology, I believe the winner is the guy who claims there was a pharaoh in ancient Egypt doing psych experiments. Well, I sure ain't gonna start back that far. For a long time, my draft of that chapter started with Freud (having found a cartoon that nicely captures the deconstruction of Freud), but now I've found what the truly best starting point is: Descartes.

Why Descartes?

Descartes is the "I think, therefore I am" dude, and also whom Cartesian coordinates are named after, one of those inventions so taken for granted that it's hard to envision the tedious chaos that preceded it (like automobile cupholders). He does not have that much to do with modern nuts-and-bolts psychology, except for framing a key question that still absorbs a great many great minds today: is the mind something separate from the body?

In that simple-sounding summation is an enormous amount of baggage that can still get even mild-mannered (pot-smoking) philosophy majors red-faced and frothing. Tied up in there are questions of free will and (highly relevant for a synthesis of programming and psychology) whether or not machines can truly "think".

If you're not careful in your reading list, you might skate through a study of psychology and think Descartes' question is none at all -- lots of Smart Folk only exhibit humorous indulgence towards those who still hope to find a Ghost in the Machine (a phrase invented specifically to make fun of Descartes conclusion that mind was separate from brain and body). But even though reductionism has chipped away at the spaces where there might be any room for an ethereal mind/spirit to still be hiding, the folks rooting for the Ghost are in deadly earnest, and not lacking in brain power themselves. Those pinning their hopes on quantum spookiness have no lesser light than physicist Roger Penrose on their side, even though some of them are wildly extrapolating his nubs of true science into flights of fancy. If they are dwindling in number and persuasiveness, well, Kurzweil's "singularity" of machine sentience continues to be in no great hurry to appear and prove them wrong.

Descartes As Programmer

Having finally settled on Descartes as my start, I am pleased to recognize him as having a true, stereotypical programmer personality. A prickly fellow, not inclined to suffer the mental deficiencies of others in silence, I think he almost certainly would have been a programmer today (although, Wolfram-like, he most likely would have insisted on inventing his own computer language rather than deigning to use one invented by his lessers).

But most of my newfound fondness for Descartes comes from the realization that he just wanted to solve everything himself, and not have to pay attention to other folks' solutions. "I think, therefore I am" was his insistence on building on absolutely nothing gotten from no one else. How can one look at Richard Stallman insisting on reinventing Unix from scratch, or Steve Gibson insisting on writing massive applications entirely in assembly language, and not see the spirit (others might choose another word) of Descartes?

As I will write about extensively in my book, the programming industry holds some deeply mistaken views about talent and the brain, and those mistakes push it to hire and encourage just the sort of folks who are not so interested in learning from the works of others. All this mishmash comes together in a golden opportunity to coin a new term: Cartesian Programming.

Cartesian Programming

"Cartesian Programming" (so sez I) is the practice of coding a solution to a problem without making the slightest effort to examine any prior work done on that problem by others. One might phrase it as: "I code, therefore I am (not interested in reading your code)".

There is a fly in my ointment. It turns out that someone else has already coined the term "Cartesian Programming" to refer to some academe-doomed programming language construct whose practical value could not fill a teaspoon, even if you spit into it to help. (Perhaps a sense of phrase-ownership has made me harsh!) But these things are best settled by gentlemanly edit-war on Wikipedia, where opinion goes to be (nearly) made fact. I trust I can generate enough enthusiasts for my definition to mold Wiki-reality my way.

1 comment:

Anonymous said...

Thanks! I thought I had coined the term (for a short story) until I googled it. This is by far the best definition I've seen on the web (and there are a lot)!