Saturday, April 15, 2006

Software Needs Philosophers

Software needs philosophers.

This thought has been nagging at me for a year now, and recently it's been growing like a tumor. One that plenty of folks on the 'net would love to see kill me.

People don't put much stock in philosophers these days. The popular impression of philosophy is that it's just rhetoric, just frivolous debating about stuff that can never properly be answered. "Spare me the philosophy; let's stick to the facts!"

The funny thing is, it's philosophers who gave us the ability to think rationally, to stick to the facts. If it weren't for the work of countless philosophers, facts would still be getting people tortured and killed for discovering and sharing them.

Does it ever strike you as just a teeny bit odd that after a brief period where philosophy flourished, from maybe 400 B.C.E. to ~100 C.E., we went through a follow-on period of well over one thousand five hundred years during which the Roman Catholic Church enslaved everyone's minds and killed anyone who dared think differently?

What's weirder is that we tend to pretend it didn't really happen. We like to just skip right over the dominance of religion over our minds for a hundred generations, and think of religion today as a kindly old grandpa who's just looking out for us kids. No harm, no foul. Let bygones be bygones. Sure, there were massacres and crusades and genocides and torture chambers with teeth grinding and eyes bleeding and intestines torn out in the name of God. But we were all just kids then, right? Nobody does that kind of thing today, at least not in civilized countries.

We try not to think about the uncivilized ones.

It was philosophers that got us out of that Dark Ages mess, and no small number of them lost their lives in doing so. And today, the philosophy majors are the butts of the most jokes, because after the philosophers succeeded in opening our minds, we forgot why we needed them.

And if we stop to think about it at all, we think that it was other people, people who are very unlike us, who committed those atrocities in the name of Faith (regardless of whether it's faith in a god, or in a political party, or any other form of mind control carried out by force).

We like to think we live in an enlightened age, but we don't. Humans haven't changed significantly in 10,000 years. We're still killing and torturing each other. It's apparently incredibly easy to decide to kill someone and then do it. Happens every day, all around the world. Torture, too.

But those people are just people. If they had been born down the street from you, they'd have gone to school with you, been friends with you, learned to program with you, written blogs and comments, never tortured or killed anyone in the name of an idea. They'd have been you. Which means they are you; you just got lucky in where you were born.

One of the commenters on my last blog entry expressed the fervent wish that I drop dead. To be sure, they qualified it with "on the internet". But if they really feel that way, especially about something as hilariously and absurdly unimportant in the Grand Scheme as whether the Lisp programming language has any acceptable implementations, then what does it say about us?

Everyone who commented angrily on that blog entry was caught. I caught you, anonymous or not, being a religious fanatic. The only "negative" commenter who doesn't appear to be a religious zombie was Paul Costanza (ironic, since he claims to be the opinionated one), who relegated his comments to pedantic technical corrections. They're welcome, of course; I'm always looking to correct any technical misconceptions I harbor. But they're moot, since even if I was wrong about every single technical point I brought up in that entry, my overall point — Lisp is not an acceptable Lisp — remains largely uncontested by the commenters.

Some of them just don't get it, which is fine; no harm in that. If you've been using Lisp for years and years, and you've written books and articles and zillions of lines of Lisp code, then you're unlikely to remember anything about what it's like coming to Lisp for the first time. They're religious because they've forgotten what it's like to be a skeptic.

But make no mistake; a substantial percentage of people who take a side in any programming language discussion that devolves into a flamewar know exactly what the other side means, and they want to invoke the Ultimate Censorship: drop dead! Killing someone, after all, is one of the best ways to silence them. You also have to burn all their writings, which is getting harder these days; hence the increased vehemence on the 'net.

Those of you who've followed what I've written over the past year or so know where I'm going. I'm taking a stand, all right, and it's a very definite one. I'm finding myself drawn inexorably towards a single goal: stamping out technological religion, because I'm frigging tired of not being able to stick to the facts.

FACT: Java has no first-class functions and no macros. This results in warped code that hacks around the problem, and as the code base grows, it takes on a definite, ugly shape, one that's utterly unique to Java. Lisp people can see this clear as day. So can Python folks, so can Ruby folks. Java people flip out, and say "macros are too much power", or "what do u mean i dont understand u" or "fuck you, you jerk, Lisp will NEVER win".

You think I don't hear ALL that, and much more, in the hate mail I get every day?

I sure wouldn't want to be alone with a Java fanatic in a medieval torture chamber, because God only knows what they're capable of.

Turn the mirror towards Python, and what happens? Funny, but the Java folks will mail me saying: "yeah, I've always known I detested Python, and you really nailed exactly why. Thanks!" Meanwhile, Python folks are literally frothing at the mouth, looking for the "Kill That Bastard" key on their 101-key keyboards.

I turned the mirror towards Lisp yesterday. Had to go to the bathroom like nobody's business, and my wife was expecting me home any minute, so I rushed it out: just a few thoughts here and there. So the Gorgon only caught the tiniest glimpse of itself, but hell evidently hath no fury like that of a Lisper scorned, and all that.

It doesn't matter that I rushed it out. I'm glad I did; spending any more time on it, trying to get it "right" by looking up useless factoids like how you can override length's non-polymorphicness with some weird setting (when it plainly should just be the default), would have had the exact same net effect: Lisp zealots would have found some way to turn it into a flamewar. And I'd have been out 2 or 3 more hours.

Let's call it a troll, then, because it was poorly researched; it was just some months-old recollections of pain I'd gone through last year trying to commit to Common Lisp, after another year of trying the same with various flavors of Scheme and finding them all wanting. As far as I'm concerned, Lisp is unacceptable today; it's my opinion and just that, but I'll stick with it.

I still need Lisp; after you learn enough of it, it becomes part of your soul. I get my fix hacking elisp, and I do a lot of it. The commenters are quite right; I've never written anything substantial in Common Lisp, because in each of my serious attempts, there was too much friction. Risk/reward wasn't high enough, and believe me, I wanted it.

But after many attempts, I've given up on Common Lisp. They won't let me use it where I work, and there are probably more Lispers per capita where I work, including some famous ones, than at any other big company in the world. If we can't use it where I work, then it's frigging unacceptable; that's the shortest proof I can offer.

What I'm far more interested today is the situation that arises if you consider my post a troll. I'm far more interested in the social consequences of working in a world filled with religious fanatics of different religious persuasions. Especially given that it's a world in which "natural religion" has, by and large, been marginalized through the work of philosophers.

Let's look at this world in a little more detail, starting with Peter Siebel's comment, which I believe is the most interesting. Peter said:

I was trying to figure out why on earth you spent so much time writing about something that you apparently don't like. Then it hit me: HCGS. So thanks for your help.

His first sentence speaks volumes about the sociology. His viewpoint is exactly what they teach us all as kids: If you don't have anything nice to say, don't say anything at all. We like to think people have a right to believe whatever they want, and that it's not nice to say mean things about other people's beliefs, especially when their livelihoods are at stake.

That's where philosophers come in, folks. They pick your beliefs apart and show you in unforgettable ways the consequences of what you believe in. I'm no philosopher; I know basically nothing about it, but I can tell you I wish fervently that some great philosophers would come along and effect change in our technical society.

Because if nothing else, I can see the consequences of the way we're thinking about things. One of many such consequences is that languages aren't getting any better, and the worst offenders are Lisp and Scheme, which by rights should be racing along the innovation curve faster than their supposedly less capable peers. But they've stagnated worse than any other non-dead language I can think of.[1]

Programming languages are religions. For a long while now I've been mildly uncomfortable calling it "religion", but I don't feel bad about it anymore. They're similar enough. At the top of the language religion is the language itself; it serves as the deity and the object of worship.

Like any other organized religion, there's always a Pope (or a politburo chairman, in countries where the government has brutally set itself up as what is for all intents the religion of choice): a spiritual leader that gives the religion the human touch. This person is almost always the language designer, of course. In Lisp's case it's complicated, because McCarthy, Sussman and Steele aren't very active as spiritual leaders for their languages anymore.

Every major organized religion is a heirarchical government, and programming languages are no exception. You'll find equivalents of cardinals, bishops, priests and laity in programming language camps: the closer you are to the fire, to the spiritual center, the higher your rank. It's a great way to quantify your perceived self-importance: a high-score list, in effect. Great for the ego, but it makes you a piss-poor debater, because you're so emotionally invested in your status.

You'd think your rank would be accrued by virtue of your technical and/or documentation contributions, but in practice it's usually more of a function of how many converts you've gained, how many followers you have, how much you've been spreading the Word.

That's why Paul Graham isn't the Pope of Lisp. He's eminently qualified, but unfortunately he's a heretic. Notice that almost none of the commenters on my last blog mentioned the PG argument I made. The only one who did (as of this writing) tried to make it an argument for Common Lisp. Let's face it: you can't give those heretics too much press; people might start listening to them!

Peter, are you beginning to understand why I write so much about something I apparently don't like? It's because I wanted to like it but found it fatally flawed, technically and culturally. It's as if I were a would-be convert to Roman Catholicism, but I can't bring myself to commit because I've seen too much of their role in creating a history that ironically we all wish we could rewrite.

I was born and raised a Roman Catholic, and I renounced it when I was thirteen years old, after my Uncle Frank (a devout terrorist Catholic if there ever was one) told me to stop reading the Bible, that it would "really screw a person up" to do that, that you needed someone to interpret it for you. That wasn't the only reason I renounced it, but it'll suffice for our purposes.

Technologically I was born and raised an assembly-language programmer; at least that's what my first real job was, for 5 years after I got my CS degree. Assembly is just flagellation, though, and damned uncomfortable at that, so I joined the Church of Java for fully seven years. And practically at the very moment I'd finally tired of chafing at Java's limitations, Paul Graham came along and through his early essays, showed me Lisp. What a great new religion!

Problem is, each time you switch religions, the next one has less impact on you. Once a Catholic, always a Catholic, they say. I don't know what that means for me, since I was raised by the assembly-language wolf, but it appears to mean that I'm never going to be enthralled with another programming language. And now that I've swallowed the red pill, what choice do I have? I need to try to show people what's out there.

Interestingly, it was Peter Siebel's most excellent book, Practical Common Lisp, that played the role of Uncle Frank and killed my desired to continue with Common Lisp. Peter was the first person to show me beast's underbelly. Every other Lisp book had pretended it was pure and beautiful and uncorrupted, because they left all the nastiness out as "implementation-defined". Once I saw what you really need to do in order to build something resembling a portable Lisp code base, and then had a few runs at it myself, I threw in the towel.

I much prefer Lisp the idea to Lisp the implementation.[2]

I can tell you this: I've tried writing this essay for a year. I've tried fully a dozen times. I've tackled it from a dozen angles. I've wanted to say it — software needs philosophers! — so many times, in so many ways. We need great thinkers — the Fyodor Dostoyevskys and David Humes and Aristotles and Jean-Paul Sartres and Ben Franklins and Galileo Galileis and Bertrand Russells and Albert Einsteins to show us the way through the Software Dark Ages we're in today: a time that will doubtless be remembered as every bit as mired in darkness and ignorance as the Dark Ages themselves.

But I've failed. This isn't the essay I wanted to write, because I'm neither a great thinker nor a great writer. However, you might be: if not now, then perhaps someday. So I think it's better to get the idea out now than to hoard it in the hopes of someday writing a world-changing essay.

For those of you who were surprised at the suddenness and vehemence of the Lisp community's backlash to my little rant, I hope I've helped shed a little light, helped you see its inevitability. Basically they've had a lot of practice. Lisp is one of the oldest technology religions, and they've both experienced and doled out their share of religious persecution.

But that's not the lesson you should take away. The lesson is that they are you. Whenever you hear someone ranting about something you take for granted as wonderful and praiseworthy, and you're wondering why they don't leave well enough alone so we can all get back to our incestuous cheerleading, just remember: we went from the Dark Ages to our reeeeasonably enlightened society today by questioning our most cherished beliefs.

So keep questioning them.

[1] Yes, I've read all of R6RS. It's a lukewarm compromise that punts on most of the important issues. It's not going to make Scheme any more successful than it is today, which to me feels practically criminal; it was their one big chance to break out of the rut they're in. But it doesn't matter. Let's pretend this footnote is just a troll. If your hackles went up, then you're a techno-religious zombie, and I hope in my lifetime to find you a cure. Try your best to think about that long and hard before responding.

[2] For the record, the commenter I agree the most with is the one who said the problem basically boils down to an IDE issue. SLIME doesn't cut it, either, as beautiful as SLIME is. Can't use it on Windows to save your life, for instance. But that's one of a thousand problems with the Lisp IDE situation; it's pointless to try to discuss them all in blogger. It's probably pointless to discuss them at all, because it's just going to make me more miserable that no decent IDE exists for Lisp, except for Emacs-as-Elisp-IDE. Which is why I get my Lisp fix by hacking elisp these days.


Anonymous Tayssir John Gabbour said...

I communicate with people on "hot-button" topics like Lisp, politics, etc. And it is generally the case that the internet will draw strong reactions, many of which you simply must sift through and ignore. We can go look at a political blog for evidence.

Imagine if the ancients had the net: "Irrational numbers are just plain ugly! What a hack." "Negative numbers!? Bwahaha, how can you have less than Nothing At All? LOL."

For my part, I've personally seen people spectacularly flame Lisp users, painting them as evil terrorist hordes who hate all things which feel love. I mean, these are just tools -- and the only thing one needs to do is evaluate them on their merits, many of which are political, some technical. It's not that hard, but requires some expertise. Somehow on the internet, that all turns into competing hordes beating the crap out of each other.

I like philosophy. (I want to say "love," but let me restrain myself.) But I read two things recently, Feynman's physics lectures and Aleksandrov/Kolmogorov's math intro. Both excellent books, the best intros to their fields I know of. And yet both mention a dislike of philosophers who paint a completely false picture of their fields. Why is that?

I believe that good philosphers subordinate themselves a bit to the fields they're discussing, at least in preference to building unsupported claims. Philosophers have the privilege of forming abstractions over other people's work, which is fun to do. So it seems that painting it as "philosophy vs. facts" is the entirely wrong way to go. That way lies madness: unsupported philosophies too can lead to the horrors you vividly discuss.

(Incidentally, I like to consider Pascal Costanza a friend, and am not glad you dismissed his taking time out of his life for offering mere "pedantic technical corrections." Presumably for not engaging your point on the level you wished. Did he insult you?)

Anyway, that said, I do agree that many Lisp-using commentators have religious attitudes, and have been frustrated whenever I've tried to turn a critical eye towards Lisp. Delving deeper into Lisp history, we find many political skeletons in the closet which few mention. (Which are educational to learn of, as Common Lisp chose certain forks in the road, as we saw with Interlisp's fate...) But if I were to assign blame, some of it would go to flamers who cause Lisp users to be distrusting of those asking sharp questions. Most Lisp users just give up on internet forums, because the discussion is too objectionable, while the rest are pressured to become cynical.

If you're interested in helping create a sound "philosophical" movement, I'd like to help out. But that would require advising flamers to go back to hell, and thanking those who back up their disagreements with verifiable facts.

5:16 PM, April 15, 2006  
Anonymous Anonymous said...

Great post.

5:32 PM, April 15, 2006  
Blogger BlogicBlogger said...


It feels like you need some good comments to offset the bad and strange one.

Well, I say rock on. You raise the right questions and you rock the right boats. I am a Java guy, but I can handle the mirror (especially after some of the Hani's posts.....).

You are also right about philosophers; maybe we are just not mature enough to do that. Or maybe they are not being heard in the noise to signal ration we have on the net. I think Bertrand Meyer (Eiffel's creator) is supposed to be quite deep, but I have heard he is a bit hard to bear face to face (as is the case with RMS).

And, oh, I wished I could write half as well as you do!

5:37 PM, April 15, 2006  
Anonymous martin_s said...

I have always considered Lisp to be similar to Latin - very useful to learn, but not very practical.

I would also go as far as to say that Lisp is useful for Computer Scientists (of which I consider myself one), but not so useful for 'programmers'.

As regards philosophers, I would consider Edsger Dijkstra on the of the few philosophers of Software (and they burnt him on the stake).

6:14 PM, April 15, 2006  
Blogger Korollary said...

Nice try. It was clear that sooner or later you were going to run out of "$LANGUAGE sucks because... (insert eighteen paragraphs)" posts. If we need philosophers, we need some who are in touch with the reality. Bashing things surely gets page hits, but produces nothing. What counts is showing how things do work.

6:19 PM, April 15, 2006  
Blogger Steve Yegge said...

tayssir john gabbour: thanks for the thoughtful note.

I like (would like to say "love") philosophy as well, but am unfortunately too new to the classics to be able to say much else about it. Feynman and Kolmogorov (and Godel, if I might add) are all excellent additions to my ad-hoc list, one that would be very long spelled out in full.

Pascal effectively got the highest praise in my blog (hard as it may be to see it) for keeping his comments level-headed. Hope I didn't insult him. I do appreciate his corrections (I need to go back and make sure I understand them, of course, which will take me a few days), and I still think they're ultimately mostly irrelevant to the overall discussion.

All: apologies for not looking at reddit/digg before posting. Yes, there are tons of rational people out there. My point is simply that most of us seem to have points of irrationality. A truly great writer (I'm just speculating here) could help us see language debates more clearly.

Oh, and Lisp lovers are no more or less guilty of techno-religious tendencies than anyone else. Lisp just happens to be what I blogged about list.

6:26 PM, April 15, 2006  
Anonymous Anonymous said...

I enjoyed reading your last blog entry. Sure, it made some generalizations and oversimplifications, but sometimes I believe that can be appropriate to improve the readability of an essay, especially in an informal blog entry. It seems like many of your critics would only have been appeased if you had started every sentence with things like "Most of the time", "In many cases", "For the most part" etc etc. I dislike reading text like that, unless it is a formal paper or some other highly formal resource- but it's overkill in a self-qualified "rant".

Sometimes, when discussing highly technical details (how a symbol is interned, how "passing by value" works, etc.) it is critical that precise language is used- Most of the commenters seemed to have held the details of your essay up to that level- I would argue holding an informal yet interesting rant to that level doesn't benefit anyone, IMHO...

I thought it was funny how upset some commentors got at statements like "CLOS is just a bunch of macros"- I mean, of course you can come up with a million reasons why that statement is false, but I think sometimes it is useful to think about CLOS in that manner... Just like when you ask a stock broker in a bar "How was business today?" they'll say "Great! the DOW was up 30 points today!" Even though they know very well that the Dow Jones average is an artificial construct and has no real scientific validity as an accurate market indicator.

...on the other hand, some of your arguments have been brought up many times before in the Lisp/Scheme community and therefore, admittedly, don't really advance the discourse much- I thought that there were plenty of original points though to make it a worthwhile read anyway...

...but if your really think an essay is just noise, why waste your time belittleing the author? It's sort of like when you go to an art gallery and tell the artist that his work doesn't have anything new to offer- The act of attacking the author, in a way, suggests that he/she might actually be doing something worthwhile, given your reaction...

...If you think you are reading a bad essay, I think the best thing to do is ignore it and not give it more oxygen to feed off of- Then you can leave the comment section to those of us (if any) who want to engage with the author on a more direct level...

Conrad Barski

7:11 PM, April 15, 2006  
Anonymous Anonymous said...

So, some questions:

1. What is it that you want? Is it Lisp + "fixes" to your numbered bullets in the last post?

2. I notice that you've been cheerleading Ruby a bit. Is it that you've tried to use Ruby but Lisp keeps whispering in your ear or something?

3. Isn't the choice issue really a non-issue? What is the problem you want to solve? Choose the implementation that provides the best solution. Switching from one implementation to another is not the same as switching from something like C to Java.

The Java version issue sounds like a red herring to me. There is most definitely a canonical representation, and I'd be scared of any product/language that doesn't grow in some fashion.

7:12 PM, April 15, 2006  
Anonymous Marc said...

Hi Steve,

I for one enjoyed both essays and would like to encourage you to keep on doing what you're doing.

It is rather amazing to me that people can get so bent out of shape over something like their programming language of choice. It really has taken on a lot of qualities of religion. Religions have a positive aspect to them - they inspire passion which drives people to do things to advance their religion. Consider that in the world of "real religion", religion for many centuries was the inspiration for much great art. As we speak, there are Lispers who are writing libraries and frameworks for Lisp, when they could be taking an easier way out and using something that already exists in another language. That's good because it advances the state of Lisp. That's a positive aspect of the religious aspect - it's taking one's passion and channeling it into creativity, an art. We have to be careful about the passion that religion inspires though, because sometimes rather than being channeled into creative endeavors, it is simply used to denounce and persecute. Which gets us nowhere. In fact, it's likely to drive the curious outsider on the periphery away.

Lispers that don't agree with Steve's core premise - I think the best thing you can do is to show us beautiful Lisp. Create art. Human beings can be stubborn creatures that are not easily persuaded by words, particularly words that take on a hostile tone, which make us raise our defenses. Something that is beautiful, though, breaks through and affects us without beating us over the head with it. Show us the beauty of Lisp.

7:59 PM, April 15, 2006  
Anonymous AnMFCAndExJavaProgrammer said...

Keep writing the stuff, Stevey. Ignore the insulting replies and work the intelligent ones. The ignorant insulters are so locked up in their own world that they cannot see the value in questioning their own beliefs.

I'm no philosopher myself, but it seems to me that you're missing a critical component in the reasoning process. Namely, in the real world, you cannot separate the software from the hardware, no matter how much the theorists (philosophers?) would like to believe.

What you refer to by "LISP vs Lisp" has its counterpart in the world of philosophy: Platonism. You refer to the ideal Platonic LISP, so no wonder the real world Lisp does not meet expectations.

Anyway, back to the software-inseparable-from-hardware thing. If software was separable from hardware, it would be another form of pure math, and could be treated as such. In the real world, all sorts of nasty things are done to pure math to make it applicable. Applied mathematicians have to do things to pure math to make it work in the real world; approximations where no analytical solutions exist; simplifying assumptions. The list goes on (and I'm no mathematician either).

Its the same with software. Once you try to apply it in or to the real world, you have to make approximations, simplifying assumptions.

Hardware limitations directly affect the application of the pure theoretical software. Here's the point: hardware limitations are imposed on software. In turn, the requirements for better software motivate the drive for better hardware. We get better hardware, and we can recalculate our software approximations, which motivates for better hardware.... for ever and ever. PG makes a sideways reference to this relationship in one of his essays (about the 100 year language, if I recall correctly).

OK, this is way too long for a rely. I'd better let the flame throwers get to work now.

8:18 PM, April 15, 2006  
Blogger rsheridan6 said...

Philosophers may talk about things that can never be answered, but your previous post can be answered: most of it was false. This "mirror" stuff and zealotry stuff just doesn't apply here. I'm not a Lisp zealot - I don't even like Common Lisp - but you can't go around spreading FUD and expect not to be called on it. You would have made a much more convincing case for your main point by sticking with what you know.

And, regarding Scheme: You could find a lot of Schemers who aren't exactly thrilled with r6rs. Forget the scheme://r6rs commitee. There's been considerable progress recently from other places in the Scheme community. Like everything else in Scheme, you have to go outside the standard. Progress is implementation dependent.

8:29 PM, April 15, 2006  
Anonymous Elver said...

To a degree, at least for me, Python fixes many of the problems I've seen with other languages.

I've also seen its limitations and a couple of places where its elegance shoots itself in the foot.

But it does seem reasonably good and I've been using and recommending it for a while now.

I don't want to sound like troll here (as far as I'm concerned, every technology and language sucks) but what problems have you noticed with Python?

I, too, would like to see some sort of a philosopher point out all the problems. Especially since Python seems one of those languages where they're not afraid to improve things. For example, with the recent addition of decorators, new-style classes, generators, etc.

8:31 PM, April 15, 2006  
Blogger Mystilleef said...

Stop this bickering and whining already. If LISP tickles your fancy, use it. If it's Ruby, Perl or Python, go ahead and use it. Programming languages are just tools. What's more important is how the mind manipulates these tools to do their biding. Great minds aren't constrained by the drawbacks, limitations or flaws found in the tools they use. They produce master pieces regardless of the limitations of their tools. Solving problems creatively, effectively and efficiently should be the foremost goal of a programmer. Not masturbating over the idiosyncrasies of programming languages. We need to encourage meditation, critical thinking and personal development with regards to problem solving. Anyone who thinks he is a better programmer because of the programming language he is fond of is a fool. The programming language you use is not a criteria for determining your problem solving prowess. Neither is it a criteria for determining your intelligence. The programming language you prefer is just a subjective, usually silly, preference. You can't stop me from liking apples even though you think oranges are better. Deal with it!

8:51 PM, April 15, 2006  
Blogger JimDesu said...

I'd never seen your blog before, but had found the previous article googling on "functional ruby", trying to decide if it's really worth all the vast effort implementing the quasi-OO/lambda-calc language I've come up with so I can code like I think, or if I should just use something that already exists and instead of inventing another wheel. I liked it a lot, but I think that your complaint in this post is off-base, albeit in a rather clueful way.

Programmer's language choices will always be religious, because, just like natural languages divide up cognitive reality differently, so programming languages divide up the "reality" of computation differently. Is your world all s-expressions (yuck!) or "PIC 9(9)"s (quadruple-yuck!)? Outside of one's employment, you get to decide! Think about it: software reality looks just like you decide. This is religion, only in our case it's macros vs. member-function-pointers instead of trans-substantiation vs. trans-signification. Of course people are going to be religious. Instead of philosophers of software, what we need are better theologians.

9:05 PM, April 15, 2006  
Anonymous Anonymous said...

A writeup praising philosophy that has more fallacious rhetorical devices than one can shake a stick at, all wrapped in one sprawling Appeal to Emotion. This sort of discourse might be forgivable as part of a drunken outburst at a friend, but that someone took the time to type all of it and post it on a blog boggles my mind.

9:33 PM, April 15, 2006  
Anonymous Sam Minnee said...

The concept of philsophy in software is intruiging, although it's difficult to know exactly what that would be. This, of course, is probably the problem: what we have is a competition between philosophies focused on language design, and those focused on a broader outlook of what it takes to produce a piece of software in the "real world".

Philosophy predominantly concerns itself with finding definitions for things and then holding those defintions up to rational scrutiny. It gets interesting when people argue over potential contraditions in a set of definitions. For example, if God be all-powerful and perfectly-good, is he able to commit evil acts.

How, then, does this form of thought apply to software development? You could proceed like Plato's Republic, and attempt to build a picture of the perfect development environment. Different languages would then become examples and counterexamples in this definition. (Republic is an attempt to define a perfect society, needless to say it's less than successful)

It would be a dry exercise, and many people would find it entirely pointless, but that's what philosophy is all about! ;-)

9:38 PM, April 15, 2006  
Blogger Phil said...

[...]Dark Ages[...]

Man... Nobody appreciates Dante and Augustine and Aquinas.</sigh>

But yes; less dogma, more honesty.

More philosophy. More Fred Brooks and Martin Fowler and PragProg.

10:17 PM, April 15, 2006  
Anonymous Anonymous said...

There are a lot of suitable philosophers in the CS community. I think the main problem is that the programming community ignores them as being "pie in the sky". For example, Dijkstra had a lot of excellent writings on programming and where it has gone wrong. A lot of his ideas on provably correct code has only been taken up by the fringe FP people.

I think people like Donald Knuth are the sorts of folks we need these days. The sort of people who can bridge the gap between the CS community and the far more pragmatic programming community.

11:04 PM, April 15, 2006  
Anonymous Bjørn Stærk said...

The classical age wasn't so fine either. For all their accomplishments, not one of these bright minds went on record against the institution of slavery. Imperialism, tyranny, fanaticism, dogmatism .. the Christians didn't fix this but neither did they invent it.

Not saying it's wrong to admire the classical philosophers as a contrast to religious dogmatism - I do - just keep in mind their flaws and limited impact.

11:40 PM, April 15, 2006  
Blogger Aristotle said...

I’d like to take a moment to remind you that you have, implicitly, called me a zombie, because that is how your Ancient Languages rant characterises those who actually like Perl’s list flattening – how could anyone in their right mind, right?

I fervently agree with jimdesu’s comment. I find that one intriguing, because it’s exactly what I was talking about with a friend recently. He is a Python-head and was trying to write some Perl because he had to. I tried to explain the material differences of how Perl and Python see the world; much of it revolving around that why lists in Perl flatten in the way you find so deplorable. When he understood, he got to the point of asking why anyone would want it the way Perl sees it, whereupon I commented that it’s a matter of mental models. His mental model is more congruent with Python’s than Perl’s, while the reverse is true for me. It didn’t occur to me to imply that he is anything beneath me just because of the difference of perception we have in this matter, though.

I see plenty of this. To take the canonical religious war, you use Emacs; I use Vim. I understand how Emacs is better than vi, and why someone would prefer it. But the ways in which vi is better than Emacs are more important to me. In diminutive examples, I was recently having another discussion that involved GUI look&feel: whether there should be only a single tab close button for all browser tabs (as Firefox currently does it) or one on each tab (as Opera and Safari do). Either approach has merit and clear arguments in favour of it.

As my namesake said some 2,300 years ago, it is the mark of an educated mind to be able to entertain a thought without accepting it.

I know that can’t be news to you.

But that incident where you insulted me has always stuck me throughout my following of your writing, and I thought it was perfectly on topic here to sound a note of caution about it. Be aware here, I don’t mind that you are flaming Perl. I reserve my right to flame other languages, too. I am, personally, hoping that Perl 6 will be a more acceptable Perl, to borrow your turn of phrase, because goodness knows Perl 5 does suck. What I mind is specifically your “zombie” insult.

Be careful about the passionate stances you take. They will carry you into religious territory at inopportune moments.

As for any substantual point, I would have wanted to make, I defer again to jimdesu’s comment, who said exactly what I think about the matter at hand.

12:43 AM, April 16, 2006  
Blogger Laurie Cheers said...

Philosophy is the study of untestable theories.

As soon as a field of philosophy reaches the stage where it's usable and testable in the real world, it turns into something else: physics, psychology, medicine, etc.

And when it does, it turns out that the philosophers were wrong, because the real world is stranger than we can imagine.

On that basis, I'd say we have plenty of philosophers in university CS departments everywhere.

1:47 AM, April 16, 2006  
Blogger Steve Yegge said...

First: a bunch of commenters, here and at reddit, seem to have made the same mistake. They assume I'm claiming that I'm a philosopher, or that this blog entry is "philosophy". They're wrong: I'm not, and it isn't. This is a blog rant: rhetoric that's calling for (more) software philosophers. Yes, it employs a bunch of appeals to emotion and other fallacies and inconsistencies. That doesn't make my rant any less valid an assertion (in the sense of being well-formed and intelligible, despite the rhetoric). You're welcome to disagree with my opinions, but don't make the mistake of thinking I'm claiming to be a philosopher.

Here are my replies to a few particularly good or bad comment snippets submitted so far:

Laurie Cheers wrote:
> Philosophy is the study of untestable theories.

That may be true of theology, but it's certainly not true of the philosophy of math and physics, both of which have played important roles in the development of other branches of philosophy. Math and physics both have active philosophers debating the significance of "hard" findings and "hard" (proven) theorems. Quantum mechanics and artificial intelligence are both hotly debated, for instance; see Roger Penrose's The Emperor's New Mind for an excellent example.

I view software as a field needing first-rate philosophical investigation in the spirit of the great philosophers of math and physics.

sam minnee wrote:
> The concept of philosophy in software is intruiging, although it's difficult to know exactly what it would be.

There are plenty of open questions in software; language design issues are only a tiny subset of them. What about our industry-wide approach to technical interviewing? We all know it's a complete crock, but nobody has done a deep-dive philosophical investigation. It would necessarily be a philosophical investigation because of the need to interpolate from relatively sparse data points: companies keep too much of the data secret to make it strictly scientific.

And what about the question of how to teach computer science? The dean of a top-10 comp sci school told me last week that every year, the amount CS graduate-program students don't know increases. People are graduating with huge gaps in their basic knowledge of how computers work; e.g. they can get a CS degree without the faintest clue as to how compilers or interpreters work. Are computer science and software engineering formally in need of separation? Into how many sub-disciplines? How does this affect how employers should recruit and hire? Again: philosophers needed.

What about outsourcing? What will its impacts be? What about software patents? Microkernels vs. monolithic kernels? Programmable hardware vs. commodity Intel chips? What effect will quantum computing have? What happens if/when Moore's Law runs out? What are the overall aims of the software industry? What's the best way to handle care and feeding of programmers? You could think of questions like this all day long.

More importantly, though, there are issues and questions you simply don't think of: things we don't even have names for yet. One of the key jobs of a philosopher is to create taxonomies and ontologies; giving things names is the critical first step to reasoning about them. It takes great thinkers to notice and express deep realizations about what we're doing.

Unfortunately, all our industry is doing right now is following the economically shortest path. Will that lead us in the right directions? I think the answer is a resounding "no" when it comes to programming language adoption. I think we're wasting millions of person-years from our shortsightedness. Seems like a problem that a suitably talented philosopher could tackle.

Does that make sense?

jimdesu wrote:
> Programmer's language choices will always be religious

I disagree, based on my definition of the term "religious". I think we agree that language choices will always be based on individual tastes, and as they say, there's no accounting for taste. But when I use the term "religion", I really (always) mean "organized religion", as opposed to spirituality, which is a very personal and individual set of choices. Organized religions tend to be dysfunctional in any number of ways, ranging from insincerity (flimsy excuses for social clubs), corruption, and of course in the worst case, persecution.

If you can think of a better term than "religion" for a bunch of X programmers verbally abusing a bunch of other Y programmers under the same roof, with X taking explicit steps to prevent Y from using their preferred language, with not a person in X knowing the Y language more than superficially, then let me know; I'll be happy to use it. "Racism" is another viable possibility for the term I want, since it works on similar principles of wilful ignorance and deliberate persecution, but "racism" lacks some of the symmetry with the organization of programming language camps. The best I can come up with for now is "religion", because of the striking similarity to how organized religions almost always work.

I believe that with sufficient education we can reduce the techno-religious tendencies that programming languages garner naturally (it's just human nature). In particular, I'm looking for more tolerance to open, rational discussions about languages. Doesn't sound like much to ask, but just look around at the vehement responses and you'll see that most people are pretty religious about their languages today.

Aristotle wrote:
> You have, implicitly, called me a zombie.

You misunderstand. Automatic list flattening is neither here nor there as a design choice, and I'm not criticizing Larry (or you) for preferring it. The problem is that in Perl 4 and prior, Larry provided no technical mechanism for creating nested data structures: i.e., trees. It was an accidental oversight, one that I'm strongly hypothesizing is a direct result of his choice to auto-flatten. So far nobody has contested my hypothesis. Even if it's wrong, the problem isn't the flattening, it's the lack of trees: this, IMO, is a pretty bad oversight for a language designer. The fix in Perl 5 required new syntactic mechanisms called "references", which I'm sure you know all about. The question is whether you realize that they're not strictly necessary, and that they in fact impose significant conceptual overhead to both Perl beginners and Perl experts. Less so for the latter, but they still need to be cognizant of the extra syntax and semantics required to manipulate them.

Only if you were to flat-out refuse to consider the possibility that the inability to nest lists was an unfortunate design mistake would I consider you to be a "zombie". Because next time around, we need to learn from our own mistakes, and the mistakes of others. Refusing to admit a genuine mistake smacks of irrationality. But surely you're not irrational, right? This was just a misunderstanding due to me not being clear enough about my hypothesized causal link between auto-flattening and lack of nesting.

elver wrote:
> what problems have you noticed with Python?

Nothing life-threatening. They've done a lot to improve what was already a fine language. I applaud Python's continuous evolution: it's exactly what Lisp isn't doing.

Python still has plenty of warts, and some of them can't be fixed without breaking compatibility. This is not the place to discuss them, but you can certainly find discussion of them elsewhere. My gripe about Python is the same as it is for any other language: it's not the warts; it's the persistent refusal to recognize them as such.

The only really "life-threatening" problem for Python is its performance, which is flat-out terrible. Sure, it works for everything you use it for. But it's a great language, so I wish we could use it everywhere we currently use C++. But we can't, and probably never will.

I do mean it when I claim performance is life-threatening. I think Python will have to break compatibility at some point in order to survive (although we're talking about a 15- to 20-year timeframe here). Otherwise an equally easy and expressive but better-performing language will eventually come along and erode Python's market share.

Python's doing quite well for now, though, and for the forseeable future.

anonymous said...

> 2. I notice that you've been cheerleading Ruby a bit. Is it that you've tried to use Ruby but Lisp keeps whispering in your ear or something?

Of course! All the languages I've learned are whispering in my ears, but Lisp is the most insistent of the bunch. For all I've said about it, Lisp is still the best idea out there. It just needs to be modernized. Java, for all its faults, has raised the bar in many significant ways that just can't be ignored anymore.

3:52 AM, April 16, 2006  
Anonymous Tayssir John Gabbour said...

There's interesting philosophical work concerning computing. (Assuming I know what "philosophical" means in this context.) For example, David Noble analyzed technologies which deskill people vs. those which remove layers of management and favor self-managing teams.

We frequently hear people make blanket statements about technology as a whole being good or bad, when of course products of the human mind are too varied to make a blanket statement. The interesting question is what kinds of technologies -- or what uses of tech -- seem noticeably biased towards (say) democratization vs. centralization.

(This strikes me personally as central to Lisp, as I consider Lisp a "democratizing" technology, where there is relative independence from a central implementor or language designer. Due to, for example, features like the metaobject protocol and macros. There is also possibly something deeper at work when we consider the lack of benevolent dictators and their lackeys.)

4:49 AM, April 16, 2006  
Blogger heather said...

hi. usually your blog is way over my little liberal-arts, renaissance history, literary theory brain, but for once, i feel the need to draw attention to the fact that i was here.
your conception of the "dark ages" between 100CE and 1500 is wrong. just wrong. no redeeming factor. the person who called it the Dark Ages was trying to convince everyone of his own genius. he was great (Petrarch is my favourite), but it isn't an accurate portrayal of the period wherein the Church was fragmented, "feudal" lords maintained a lot of personal power and other sweeping statements that just shouldn't be made because we are talking about 1200 years! That's a very long time and a lot happened.
i completely agree with you though...every domain needs some people schooled in abstract thinking about alternative systems for existence. if i understood anything they were saying, i'd like them even more. for now, i just gape at the beauty of the text they transcribed onto a page.

5:48 AM, April 16, 2006  
Anonymous Jonathan Edwards said...

A philosoper might ask the following question. What can we learn from the fact that programming languages incite religious conflict?

I think it tells us there is little substantial difference between them.

6:25 AM, April 16, 2006  
Blogger Kate said...

Just because the naysayers, heretics, and nutjobs speak the loudest on the net doesn't mean there aren't "philosophers" with a great deal invested in programming and human(social-animal)-language interaction.

Some of us are even willing to relegate "physical hardware" to the realm of ideas (cough anmfcandexjavaetc cough)--which seems to be key to integrating the usefulness of OOP into something which essentially boils down to a string of functional relations.

7:06 AM, April 16, 2006  
Anonymous Anonymous said...

The world needs more people like me because people like me are pretty awesome fyi.

7:12 AM, April 16, 2006  
Blogger Mystilleef said...

We are all philosophers if we want to be. Philosophy is primarily critical thinking and inquiry. It's just that many of us are too lazy to think in this day and age, and prefer others to do the thinking for us. There's nothing extraordinary about a philosopher other than her prolific and intense critical thinking abilities and focus. Socrates was said to have fallen into a trance standing for as long as day thinking over a problem/query/question he did not have an answer to. It was said he wouldn't fall out of the trance until he thought he had an answer. In theology, Prophets have been to known to meditate and even fast for days also indulging in grueling thought processes that affect the plight of humanity in general. Whether we like it or not, the result of their thinking is what shaped our moral code of conduct today as we know it. But what do we do when a programming problem, or any problem for that matter, eludes us? That's right, we type "" and move on with life. Because google knows it all. And it doesn't matter whether the results google give us are woefully inefficient, as long as two or three people say it worked well for them. We don't think anymore. We don't encourage people to be critical thinkers either. Google and blogs do the thinking for us. We don't want to know how things work. Why they work. And what we can do to make them work better. We don't want to consider alternatives. We just want to fight over why we think our preferred programming language should rule the world. It's not even about the problems we can solve with programming languages. It's not about how technology makes our lifes as human beings richer and better. It's about not liking parenthesis. Distaste for whitespaces. Macros being the solution to all problems. etc I'm rambling again.

7:40 AM, April 16, 2006  
Anonymous Anonymous said...

There is one other LISP you have not tried: newLISP. The LISP most Common Lispers choose to ignore and a few choose to complain about, "because it is not a real LISP" ... whatever that means. The first pragmatic, scripting LISP to do real work and get into without learning a lot of weird stuff. This is the website: and a startup building their future on it: .

8:12 AM, April 16, 2006  
Anonymous steve_y2 said...

Is not the basic reason we have so many language fanatics come from their own desire to be right? It is the fear, self-interest, honor motivation argument that was made long ago. No one wants to be incorrect in their choice of their exalted language

IMO all languages are flawed. To me Lisp and Perl look terrible and almost like Sanskrit, which makes it difficult for someone else to read and figure out what the f*!# is going on. Java and C# are too verbose. C/C++ is like a loaded gun, it works great if you manage to point it in the right direction before squeezing the trigger, though C++ is really a mess. Python has that insane indentation syntax, and Ruby is too slow. Then there are the “also rans”.

After all these years, you would think that we would have developed one decent language to rule them all, but that is not the case. That language should be expressive, fast, human readable, and adaptable. It should be able to easily deal with parallel processing environments. It should be self-optimizing. It should be able to compile itself with a minimal bootstrap so it can run on any hardware, but should adapt and directly compile to machine code for that platform. All libraries should be able to be written in that language.

So, get busy and write that new language…

12:14 PM, April 16, 2006  
Anonymous Tom said...

Well, if you start out with a passionate but wrong-headed appeal to why something sucks! sucks! sucks! ... what sort of answers, exactly, would you expect?

For Lisp, there is the compounding factor that there has since time immemorial been poorly informed, passionate FUD against it. It's inherently slow and bloated (this particular complaint stopped once Java stumbled onto the stage), it can't be understood, there are so many misfeatures, there are too many functions, there are too few functions, etc etc. We've all heard it, many times, usually said with great conviction and little actual knowledge.

Personally, I was taught Common Lisp (1st ed) in my very first university course -- those were more enlightened times, I guess -- and managed pretty well. So basically, it sounds like you're not yet over the hump.

Anyway, I'll agree with you on this: Common Lisp of today is a bit conservative and backwards-looking. I think it would be a good thing to start moving forward on a number of issues (but probably not under the aegis of ANSI Common Lisp X3J11 or whatever).

4:45 PM, April 16, 2006  
Blogger Dan Nugent said...

Jonathon Edwards' comment is the single best one here.

I'd like to elaborate on it:

And do you ever notice how not a whole lot of people mention languages with programming models significantly different than C when they make those arguments?

Even Lisp in its Lispyness isn't (from the Programmer's point of view anyway) that much closer to the Lambda Calculus than it is to Turing's state machine.

9:29 PM, April 16, 2006  
Anonymous gmlk said...

Change never comes from upon high, it comes when the common man is changed forever trough education. Change then bubbles up and some person who happens to be in the right time at the right place gets to take the credit for it.

Some technological advances like the step from romain to hindi-arabic numerals made it posible for everyone to learn to do arithmetic, but the real change only happens when knowledge is shared as wide as posible.

Only when nearly all children in a society learn reading/writting and arithmetic can there be newspapers, malls, or computers. As long only a small 'elite' has the knowledge you never get an explosion of creativity.

People today know barely how to use a computer and they tend to use it as virtual paper or film. The application that are made enforce this view: The desktop, the typewriter, the paint, the letter, the newspaper, the magazine.

Consider this: Programming is to arithmetic as writing is to reading. Programs are an expresion of an idea. This is lost to most people these days, hence a multitude of strange laws which make no sense. This is ignorance.

Only when most people learn to design and write programs will they escape this world of legacy ideas and start to make progress. Only then will there be any chance for real change.

Imagine a nation where every person has learned to write programs from an early age. It has become second nature to most people to delegate repetitive work to the computer. A nation of people who understand that "code is data, data is code".

Would they use programs in every day writing if they wanted to express the idea of a process to each other? What kind of features would they expect in a computer? What would their web look like? Would Microsoft Windows or unix be populair? Would either be acceptable? Would they accept the limitations of the von Neumann machines or would they prefer lisp machines? Which languages would they prefer?

The philosophers you seek can only be found in places where programming is a basic skill used by all.

12:34 AM, April 17, 2006  
Anonymous anshul said...

Very well said. Danger lurks when the common theme of the time is "we've reached the best possible state" and we're too close to that in software. People just talk about what language to use for what task, as opposed to the kinds of things we want in languages for tasks.

And it is exactly at this time that philosophers are needed to examine the status quo objectively.

12:43 AM, April 17, 2006  
Anonymous Anonymous said...

Imagine if the ancients had the net: "Irrational numbers are just plain ugly! What a hack." "Negative numbers!? Bwahaha, how can you have less than Nothing At All? LOL."

Actually, that's essentially the reaction of the ancients (and relatively moderns in the case of negative numbers.)

Negative numbers weren't generally accepted in Western mathematics until the 17th century (though one mathematician used them under the name "absurd numbers" in the 15th century.) Pythagorus sentenced the mathematician who discovered that sqrt(2) was irrational to death by drowning.

8:53 AM, April 17, 2006  
Anonymous Anonymous said...

Programming languages are just tools. What's more important is how the mind manipulates these tools to do their biding

While I'm not a proponent of the strong form of the Sapir-Whorf hypothesis, natural languages and programming languages do shape how you think. It's hard for an imperative programmer to see why a functional language is powerful because his view of programming is limited to the imperative paradigm. The same can be said of the programmer who only has experience with functional languages.

For a good example of the power of notation, look at how difficult algebra was historically. Only a few of the smartest people in society could solve algebraic problems and it took them days or weeks. Today a child in school can solve the same problems easily because they have much better notation. In fact, a program can solve many of the same problems without thinking due to the same notation.

Notation changes your capabilities, and so do programming languages.

9:01 AM, April 17, 2006  
Anonymous Mark Haniford said...

Very well said. Danger lurks when the common theme of the time is "we've reached the best possible state" and we're too close to that in software.

Good point. The Lisp people seem to think that Lisp is the apex of programming languages.

It's easy for smug lisp weenies to criticize something like Java, but there's other languages, *cough* - Haskell.

4:37 PM, April 17, 2006  
Anonymous John said...

The comparison between programmers and religious zealots is fantastic. As a former philosophy enthusiast, don’t kid yourself into thinking you are not a philosopher. You’re taking a modern problem, analyzing it, and writing theory based on your thoughts. This is what philosophy truly is.

I agree there needs to be a philosophical movement in technology. I have often contemplated the idea when I see so many issues in modern society, albeit online. It’s nice to see I am not the only one who contemplates the philosophy of technology.

As a relative new comer to programming, I am finding your writing refreshing to the “use this language cause it is neat” mentality of most languages. You look at it logically from a non-fluff perspective. Learning a language is time consuming, and trying to choose a language to learn for a new comer is hard with all the hype around so many langauges.

Thank you, and keep up the good work.

5:11 PM, April 17, 2006  
Anonymous Anonymous said...

people spend time talking about things they hate for many reasons. Sometimes it's to share how they feel, sometimes it's to gather support/spread news about something you hate. For nerds, it seems that the point is to prove how big your brain is.

It's interesting to observe that this ties in to this article about Listening to Women

2:24 PM, April 18, 2006  
Anonymous Anonymous said...

It is really amazing and telling that so many comments repeat the mantra "its just a tool!".
The whole point of Steve's rants (at last imho) is to question the sad state of information technology. And a sad state it is.
Now, if don't agree with that starting point, then nothing will make sense to you and folks will think it is a question of choosing the right tool for the right job, when in fact, those blog entries are triyiing to reach to a deeper level than that.

7:45 PM, April 18, 2006  
Blogger Steve Yegge said...

Dan Nugent wrote:
> Jonathon Edwards' comment is the single best one here.

Well, it was cool, if pithy. :)

Personally, I feel that every single comment here, including the person that said I'd written idiotic drivel, has made me a better person. I value every single one of them, including Foderaro's (from the last entry), since, hey, I love his if* macro. He was kinda mean and superficial, but I'll forgive him, because so was I.

Why do you think I allow anonymous comments? It's because you're all people, and I want to hear your voices clearly.

I wish I could come back and read this all in 500 years. You know our comments will still be around, right? Perhaps we'll be able to see them... I think so, anyway.

12:21 AM, April 19, 2006  
Anonymous Anonymous said...

Lots of people who have replied here have a very vague idea of what philosophy is. The fact that you get people discussing ideas like "philosophy vs facts" is a testament to this - it is a scientist's place to ask "what are the facts?" The philosoper's question is "what is a fact?"

It has less to do with the content of knowledge and more to do with the structure of that knowledge - a programming metaphor might offer philosophy as the code that shows us how we can manipulate all that data we've acquired.

The philosophers of the rennaisance were at the fringes of knowledge but knowledge was a much smaller area then so Descartes could study optics and get co-ordinates named after him as well as writing his Meditations, Leibniz was a philosopher as well as a great mathematician and so on. Now, the cone of expanding knowledge has such a huge surface area that philosophy is spread thin at the edges of it but it is still a necessary practice.

There won't be another Descartes the world he was studying is long since gone, although the questions he raised are as valid as they ever were- as anyone who enjoyed the Matrix will recall, but there is still a great need for good philosophers, especially in our field - for example, most of the problems in the field of AI are at heart epistemological - and everyone needs mould-breaking thinkers, whatever field they are in. It's the only thing that will protect us from magical thinking (something humans are fundamentally inclined to) and the excesses of religion.

7:58 AM, April 19, 2006  
Anonymous Gaius said...

To any drawn to compare the attitude of the faithful, whether religious or c-s, to criticism may I suggest you read the work of Daniel Dennett, and particularly his latest work 'Breaking the Spell'.

12:51 PM, April 19, 2006  
Blogger William said...

I have found Alan Kay to be the thought provoking person regarding programming that I have ever heard. Some good videos where you can hear his thoughts can be found here

12:54 PM, April 19, 2006  
Anonymous Jason Carreira said...

I agree with John... Don't sell yourself short as a Philosopher. Post-modern deconstructionist philosophers don't necessarily ANSWER questions, they break things apart and ask how they should be put back together. You're definitely doing that.

And hey, if it makes you feel any better, you're _my_ "Uncle Frank". Reading your stuff (and the right time / right place thing) made me realize that the malaise I was in was that I'm just bored with Java. It's been my only "real" programming language... 7 or 8 years ago, the last time I was feeling bored, I picked up some Java books and stopped doing Cold Fusion, and now I feel like I've learned as much as I can in Java and I'm picking up some new books...

9:03 PM, April 19, 2006  
Blogger airfoyle said...

Er, I still like Lisp after reading your critique.

I don't hate you or want to kill you. So chalk me up as a counterexample.

I created a blog and actually put a little response in it to your critique. I could devote a lot of time to responding to all of it. But where do people find the time for this blogging activity?

9:24 PM, April 19, 2006  
Blogger Daniel Azuma said...

Steve, have you read Neil Postman? He has some interesting things to say about the interaction between technology and religion, particularly the ways technology tries (and fails) to become a value center. You may not agree with him, but I think you'd appreaciate him. Some of the books I'd recommend are Technopoly and Amusing Ourselves To Death.

10:20 AM, April 21, 2006  
Blogger Peter Schombert said...

I do my best to mock the flamers here. I don't know if that makes me a philosopher about computer science, although I am a philosopher in real life.

12:07 PM, April 22, 2006  
Anonymous Anonymous said...

When I entered university back in 2002 I started with a rather arbitrary way of picking my major/minor. But once I had picked them(computer science/philosophy) I realized what I could use them for;

I was to bring Philosophy to Computer Science.

I knew practically nothing about computers at large in early 2002, although I had been exposed to them(to some extent) through video games, and Microsoft Windows/IRC/webchats. But I tried to suck in as much information as possible, drenching myself in tldp and installing GNU/Linux. But even before I got into free software, and had anything better than an old 386 running MSDOS, I saw that in every place in Computer Science that I looked, everything pointed back to philosophy. And I knew that I was doing the right thing.

Very quickly, I ran out of money; since the Canadian Government didn't care to fund me like some of my peers, I had to work to pay for my education, and concequently my marks fell. My parents picked up the tab somewhat after a year or two of failing grades, and a near-getting kicked out of university. My grades improved and everybody was happy; only there was a catch...
My parents(and to a lesser degree myself after being exposed to the working world) had no desire for me to take philosophy classes and much prefered for me to take 'practical', 'pragmatic' and 'useful' courses. Now this is fine in the short run; I might soon be able to support myself in theory. But what I think, and what this essay has seemed to point out to me is what I've lost;

I no longer have the open mind I once did, and my thinking is biased heavily towards a few certain viewpoints. I don't even try to outthink the box anymore; I just take the box for granted. I'm a GNU/Linux zealot who was once critical of all operating systems. This I can imagine has a lot to do with the lack of influence of philosophy in the last two years. I don't even hang out with philosophy majors anymore for the most part. I can't even remember the last philosophy book or treatise that I've read(the leviathan perhaps?)

So perhaps even if I succeed in university now I've failed in succeeding where you need me to. And for this I'm sorry.
But mabye all is not lost.

Perhaps something can be learned from me? Perhaps that there could be more philosophy-minded thinking if only the people involved in Computer Science and, for your world 'Software' in specific, if the ratrace wasn't eating everybody's mind and soul quite so much(where do we find time to blog indeed?). And likewise this could be extended to the non-software world.

...of course chances are it *is* being so extended*. Despite a disconnect between the philosophy and the physics, computer science, software and other worlds, there is opportunity and a real chance that that disconnect can be mended in the near term. We are slowly as a whole coming out of the dark ages, if we can continue keep the momentary slips(baby boomers allowing the bush's to run america) at bay that is.

*unless you believe the peak oil theorists

(responding to thread)
Oh and please don't keep up the blog entries (to some extent at least); you've got something going here.


5:10 AM, April 24, 2006  
Anonymous piglet said...

I started that piece but found it intolerable to read on. I do synpathize with your general point - that philosophy is important (well that appears to be your point from the first paragraphs, but I'm sure I missed the Lisp part that is bound to follow) - but does it have to be so naive? Do you have to announce your alsmost complete ignorance of all matters philosophic with fanfares? First, philosophy, like all science, is not ethically good or bad per se. Just as there were (and still are) scientific theories justifying racism, so there have been (and still are) philosophies justifying oppression, slavery and genocide. Plato and some of his fellow philosophers were working hard to develop a philosophy that sounded good and beautiful while celebrating inequality and slavery(hint: a standard method to achieve this is to invent a heavenly realm of ideals). Similar things can be said about philosophers sympathizing with fascism, like Carl Schmitt, Martin Heidegger etc. And your claim that there was no philosophy between antiquity and modernity is ludicrous. Medieval occidental philosophy (Augustine, Thomas Aquinas etc.) was of course subordinate to religion and the church but it was still philosophy, whether you like it or not, and much of modern philosophy is influenced by those church men. Steve, why is it that you have to write over-over-overlong blogs about subjects you don't understand? It's not a genuine interest in philosphy, I must conclude. Mind you, philosophy isn't about screaming as loud as you can, it's about thinking - studying - a lot of studying, actually - before talking. Si Tacuisses, Philosophus Mansisses as they used to say in the old days. You SHOULD absolutely get hold of some Russell before you continue discracing yourself like this. Have a look:

And please, please SHUT UP!

10:41 AM, April 24, 2006  
Blogger Peter Schombert said...

In response to piglet: Steve understands much more about philosophy than you do, clearly. For example you claim there are philosophies supporting oppression, slavery and genocide. I challange you to name one modern philosopher who supports these positions. And yes, they only count as a philosopher if they have a degree and hold a position at an accredited university, at the bare minimum. Steve is also partly right about Medieval philosophy, as many would classify large portions of this work as theology, not philosophy. Some of their thoughts may have been philisophically intersting, but the majority of these authors were teologians, not philosophers. Don't believe the History of Western Philosophy is the last word on what philosophy is either, you need to read more contemporary authors to understand the current state of the field.

10:34 PM, April 24, 2006  
Anonymous piglet said...

Peter Schombert:
so philosophy is only what you like to call philosophy, right? Of course you can solve any problem by changing the terminology to suit your preferences. But then you have problems once you are trying to communicate with others. Whether Thomas Aquinas was a philosopher or not is not a matter of personal taste. No student of philosophy would seriously deny that he engaged in the activity identified as "philosophizing", nor was he lacking academic degrees and recognition.

Do you seriously deny that some modern philosophers have sympathized with fascism? And is Plato's justification for slavery not an issue any more because he is dead? I would hope that no living philosophers support this kind of positions, but to claim that they don't exist in philosophy (or elsewhere in science) is wishful thinking. To repat my point, philosophy is not ethically good or bad per se.

"Don't believe the History of Western Philosophy is the last word on what philosophy is either"
Sigh. You are free to name your preferred literature. Just read *something* about philosophy before starting to shout.

8:08 AM, April 25, 2006  
Blogger Peter Schombert said...

piglet,the reason I asked you to find someone in a university who held these views is because anyone can make claims, but not everyone's opinion should be considered reflective of the field. Also I am asking you to find someone still alive, because once again views change. If you wish to claim that philosophers support racism, ect this is the kind of requirement you must meet. Also, The History of Western Philosophy is about 60 years out of date. Do you reccommend physics books that are 60 years old as well? A lot has changed since Betrand Russel wrote his book.

12:38 PM, April 25, 2006  
Anonymous piglet said...

Once again, what I am criticizing is the view that contrasts the idealized golden ages of classical and modern philosophy with the "dark", presumably non-philosophical middle ages. That view is historically erroneous and needed to be put in perspective. No more, no less. Illusions don't deserve indulgence.

I recommended Russell because the author of this blog has professed interest in mathematics, in language and now in philosophy. Russell's philosophical work covers subjects such as logic, mathematics, language, scientific knowledge and more. That he has also written a brilliant history of philosophy doesn't hurt either. Of course you may prefer other authors but I think Russell would be an excellent choice for Mr. Yegge to get some firmer understanding of what philosophy is about.

7:37 AM, April 26, 2006  
Blogger ron said...

Steve, its amusing that you have been on a "quest for the holy grail" [universal programming language]. You believe it doesn't exist, yet you are questing for it. Is that rationale? Is it religious?

9:43 AM, May 12, 2006  
Blogger kruhft said...

Nice essay, and a subject that I have thought much about in the past. Your analogies are quite correct, and I do agree that there is a need for change; the only problem being "what"? Every langauge that is designed comes to a point of elegance vs. practiality vs. implimentation and someone has to make a decision, and when someone makes a decision, it is generally easier to make a personal choice, especially with a difficult field such as programming (as in, one chooses the way that is easiest and most sensical, which may not be the case for others that have to use the system).

Lisp is a pile of personal hacks that spread such that others found them useful; the hacks that were not understandable to others have long since died. This is not to be negative of hacks, just that Lisp is the hacker language...the first programmable programming language designed by and for hackers. Hackers share, their ideas spread to be taken by others, or forgotten in the past.

Lisp is the philosophical programming language; a language of thinkers and tinkerers pushing the limits of what a high level language could do (at the time, although you still can if you choose to). Common Lisp is a collection of those ideas, pulled together by a commity, trying to make a common base that all can work from and with. I don't know if it failed miserably, although it seems that half the people think it did, and the other half done.

Sounds like a typical political system to me, but how could it be any different given that the people design and take part in it.

You have to bend your will to accept Lisp (or any programming language) "into your heart", using the analogy of Christianity and Jesus here. Many people seem (including myself) view Lisp as a programmatic "saviour", but of course when they use it, they find the ideas that they had sometimes don't live up to what the realization has become (as you mentioned in your essay).

It's not difficult to write your own lisp (It's a pain to write a Common Lisp, but that's not what I'm saying). There were a number of lisps around due to its ease of implimentation; if you like the idea, write your own. Lisp is the language designers language, so if you aren't happy with what the group has said, make something that is closer to what you want.

Of course, you might not be able to get other people to like it, or use it, or appreciate it. But (and this is very important) you will have your own personal language. This is similar to Wittgenstien's thoughts and really the path to true , ultimate power. A programming language is for controlling the computer; it is how you speak with it, since you cannot directly. Having a dialect that you have designed and you know best will give you the ultimate link with your machine and having written, the ultimate ability to modify it to your whims (since you wrote it, and thus know it by hear) should you feel the need (and you will, since something like that is a project of your life).

I guess I stared rambling, but I think much about this subject. Check my blog for a 'philosophical' post/ramble about programming called 'the problem with parsing' (and don't comment on the lack of capitals, it's been done enough already and I know :).


12:54 PM, May 21, 2006  
Anonymous Anonymous said...

You're aware that Xah Lee has cross posted your article in 5 Usenet groups for the sole purpose of trolling?


9:29 PM, May 21, 2006  
Blogger zby said...

I think the analysis of this situation should start with the fact that everyone who has invested his time to learn a programming language (an editor, an operating system) has an incentive to convince others to use it. This is because the language he invested so much into needs other practitioners to thrive to create new libraries, fix bugs, develope new features. This all happens on the unconscious level and is in this regard indeed similar to religion.

It is also interesting to know that the cognitive dissonance mechanism makes those with doubts the most active zealots. They push the doubts into the unconsciouss and use convincing others to hide their disturbing existence.

1:59 AM, June 16, 2006  
Blogger Matthew said...

As someone with a Philosophy B.S. and a background in programming language theory (mostly informal, plus coursework), I can tell you that there exists what I would call interest in "philosophy of software languages."

It's not the "humanities" image of philosophy that many people conjure up when they think of the word. Modern Philosophy goes together with the study of logic and logical systems, and that is where the philosophy of software languages lies. Software language research focuses these days on formal definitions and provable statements; ie. type theory.

This stuff tends to be rather dry and boring to most people, and juicy flame-wars about arbitrary syntactic decisions get more attention.

Not to say there aren't "religious" sides to the programming language theory guys. For one thing, many assume their work is relevant to the field of commercial software engineering. Which it may be in some cases, and that's great. Interesting programming languages like Standard ML, Objective CaML and Haskell have come out of this kind of research.

On the other side, you have the "hackers" who don't care for mathematical-style proofs and just want to get things working.

The university I received my degree from emphasizes the former style these days. And yet I find myself sympathizing with the latter category, in which Lisp falls as well.

I think they every smart programmer goes through the "I can create a better language than what exists" phase. It certainly happened to Lisp: 20 years ago there were hundreds of dialects of incompatible Lisps.

When you argue that "Lisp could be so much better" I don't disagree. Neither, I'm sure, do many Lispers. But the fact is, Lisp has been through that phase, and it nearly destroyed the language. Memory of those times could certainly fuel some of the more negative comments.

Today, Common Lisp is thriving. I don't know how it appears to you. I work as a Common Lisp programmer and I use it on Unix and Windows environments every day alongside other CL programmers. I see the free software compilers have advanced considerably and I use them a great deal too. I'm quite happy with SLIME even though I know it could be done better (I'm curious what problems you have using it).

It probably seems strange to choose to use Common Lisp in commercial applications because of available support, but that's what I do. On one end of the spectrum you have Java with its wide-spread support. Or you could conceive your own language and have zero support at all. Common Lisp probably appears to be closer to the latter than the former, but I found that there are lots of opportunities if you try and look for them. This has only become more true over the last 5 years as the language and community has grown.

That's more than your typical Java programmer will want to do, and I don't expect them to do more.

It can be lots of fun and educational to create new languages. The next step is very difficult: creating robust and efficient implementations, with vast support for application programming.

Common Lisp arose to solve that "next step." Whether you like it or not, Common Lisp isn't going to be that "pure" Lisp of your imagination, because that "pure" Lisp is precisely that: imagination. Reality has a funny way of making life more difficult than we would have liked.

But don't stop dreaming...

2:14 PM, August 04, 2006  
Blogger George said...

PLT scheme is pritty nice you can even make executables and has librarys for evreything. but the problem is that the standard for scheme is weak so to make it work you must get the right implementation. hopefuly stallman can revive lisp by makeing his own dilect. that would save lisp from extinction. or paul grahm with ark.

10:36 PM, August 10, 2006  
Blogger George said...

requireing every one to use plt scheme is not a big deal consitering there is a lot of gcc psific code around.

11:06 PM, August 10, 2006  
Blogger basscakes said...

The problem as I see it (as a philosopher forced into the tyranny of writing code to make money), is that humans are myopic. Add to the mix that science and its adherents tend not to view it as a field of discourse that exists in very specific time and place in culture -- meaning its adherents share many characteristics with religious fanatics -- but as THE hammer which can smash all existential nails -- and you've got what a comedian would call a "tough crowd".

One of the great inventions of western discourse is the idea that you can assemble a set of "facts" and have an absolute proof. This is the framework on top of which the entire Scientific enterprise is based. My dad is a physicist and he used to say, "you can't blow things up with philosophy," but that was until he read Michel Foucault. My dad also counts James Joyce as his favorite author, so he is 1 in a million amongst the science crowd.

Philosophy is a useful critical tool for analyzing how things are put together while being somewhat content neutral. The philosopher finds his or herself analyzing the meta-aspects of everything in life. When it comes to software, my opinion is the same as it is for trying to find a place to live in North America: they all have some suck, and they all have some good.

Seattle, where I live now, is haunted by its Lutheran past and contains the most obnoxious drunk people I've ever encountered. You will never teach these people how to party or do anything that isn't really white, no matter how hard you try -- because they don't want to change. On the other hand, I enjoy snowboarding in knee-deep powder after work, something I could never ever do back home in New York. New York sucks for a variety of other reasons, such as the difficulty and expense of escaping all those people who know how to party so well.

Congratulations for recognizing that a humanistic point of view is always useful in any field. The religious zealots need to realize that sometimes, you need to put down the hammer and use the screwdriver. Liberal arts majors like me love Java, because any half-intelligent monkey can churn out some corporate code that meets the requirements without taking away too much time from reading the columnists on

2:05 PM, October 31, 2006  
Blogger henz said...

I agree with you, I've seen so many of my colleague so devoted to their choice of programming languange and just saying bad thing subjectively to the other.

2:05 AM, July 25, 2007  

<< Home