Software Needs Philosophers

Xah Lee xah at xahlee.org
Sun May 21 11:15:31 CEST 2006


Software Needs Philosophers

by Steve Yegge, 2006-04-15.

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.
[ • Peter Siebel is the author of the book Practical Common Lisp,
2005. ( http://gigamonkeys.com/book/).]

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.

[• Paul Graham is a lisp dignitary. He is well known for having sold
his ecommerce software written in lisp to Yahoo.com for $49.9 million,
among other things. See Paul Graham↗ and http://www.paulgraham.com/ ]

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]

[ • Fyodor_Dostoyevsky↗, David_Hume↗, Aristotle↗,
Jean-Paul_Sartre↗, Ben_Franklin↗, Galileo_Galilei↗,
Bertrand_Russell↗, Albert_Einstein↗ ]

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.

[ • R6RS refers to the Scheme Lisp language's upcoming specification.
See Scheme programming language↗ ]

[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.

[ • SLIME is a emacs mode for lisp programing. See
http://common-lisp.net/project/slime/. ]

[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.

----
This post is archived at:
http://steve-yegge.blogspot.com/2006/04/software-needs-philosophers.html

and
http://xahlee.org/Periodic_dosage_dir/_p/software_phil.html

This essay is reported with permission.

   Xah
   xah at xahlee.orghttp://xahlee.org/




More information about the Python-list mailing list