|
 |
Holy Wars. Computer nerds seem to be having them all the time. Take
programming languages, for example. Need I elaborate further on the
death threats and other raving lunacy that has been uttered over
programming languages? And text editors. I don't even need to tell you
the crazy words that have been spoken about mere text editors. But those
are just the well-known ones. Windows vs Linux vs MacOS. FAT vs NTFS vs
ext2 vs ext3 vs RiserFS vs XFS vs WTF-are-you-on-about-FS. Kerberos vs
NTLM. SSH vs IPsec. KDE vs GNOME. Debian vs SUSE vs RedHat vs Corel vs
Small Pink Lizard Linux. Intel Core i9 vs AMD Phenom II. MP3 vs AAC vs
WMA vs Ogg Vorbis vs FLAC vs Monkey. MPEG1 vs MPEG2 vs Xvid vs DivX vs
H.264 vs my grandma's old valve TV. WinZip vs WinRAR vs 7zip vs UPX vs
infinite monkeys with typewriters. Quicksort vs mergesort vs heapsort vs
shellsort vs radix sort vs my receptionist. I could go on. (And on, and
on, and on...) The short version? For whatever reason, computer geeks
seem to spend forever arguing about stuff.
Basically what most of these arguments boil down to is "my favourite
tool for X is the best - and you should all agree with me".
Now, think about that for a moment. "My favourite"??
Tell me, how many Holy Wars have you seen fought over whether strawberry
icecream is better or worse than chocolate icecream? Uh, none. Nobody
*cares* what you think is the best icecream, because everybody realises
that IT DOESN'T MATTER. It's just a personal preference that doesn't
make any difference to anything.
Then again, icecream isn't a tool. So how about real tools?
Well, I don't know any mechanics *personally*. But I've yet to see a
bunch of them get into an irate shouting match about whether an
adjustable spanner is better or worse than a well-made fixed spanner.
You can see how there would be merits to both, and how some people might
prefer one to the other, and they *could* spend months debating it...
it's just that they don't. As far as I'm aware, no mechanic actually
gives a **** about the difference. Given the option, they just use
whatever tool they prefer, and if there isn't an option, why argue about
it? It's just a tool.
What you *do* sometimes see is wars fought over styles and fashions.
Stuff like the Mods vs the Rockers. But that's more about tribal
supremacy than anything rational to do with clothes.
So WTF is up with all these Holy Wars about programming languages? Well,
here's my best guess:
1. A programming language is a tool. You use it to write programs with.
2. Some programming languages definitely *are* "better" than others, in
an objective way.
For example, take BASIC. The 1980s was a decade of 8-bit home computers
running BASIC. It's a great language for non-experts trying to piece
together simple programs. But no sane person will seriously suggest that
BASIC is any match for the likes of C, C++, Java, Lisp, Erlang... I
mean, come *on*! It has a global namespace, it has 3 data types (and you
can't add new ones), hell it doesn't even support recursion! Exception
handling? What exception handling?
3. The majority of computer programmers - *especially* the vocal ones
who join in Holy Wars - write computer programs out of passion, not
necessity. Writing computer programs is difficult and frustrating. Doing
it even remotely well _requires_ persistence, determination, motivation
and, frankly, intelligence. In other words, hobby programmers are
persistent, determined and highly motivated people. And most of them
consider themselves highly intelligent (whether they are or not).
4. Suppose you have an IRC conversation that goes like this:
Alex: I think programming language X is the best.
Bob: Actually, I think programming language Y is the best.
Alex: I don't think that's true.
Determining which programming language is superior requires real insight
and intelligence. And if you fail to see why one language is better than
another, basically that means that YOU'RE STUPID.
If I sit here and tell you why my favourite programming language is
better than the one you use and you still don't agree with me, that
basically means that you're too stupid to understand why I'm right. And
if somebody insists that their programming language is better than mine,
basically they're suggesting that I'm too stupid to see why.
People don't like being stupid. But *especially* people who consider
themselves experts on something, and who often spend every spare minute
soaking up more information and more knowledge for no reason other than
passion and intellectual curiosity... *Those* people do not like being
called stupid at all!
And that, I think, is what all these Holy Wars boil down to. "X is
better than Y, and if you can't see that, you're stupid!" "What?! Y is
*clearly* better than X! How dare you call me stupid! YOU'RE STUPID!"
"NO, YOU ARE!!!1!1!!eleven!" General chaos ensues.
Truth is, if you compare almost any pair of complex objects, usually one
is so clearly superior to the other that there's nothing to argue about,
or else both have advantages and disadvantages, and which one is "best"
depends on what you're trying to do with it. And yet people still want
one to be the "winner". People still want to "win" arguments.
Now obviously there are people out there who just like arguing with
people. But even sane, apparently rational computer geeks somehow end up
having shouting matches about whether the Java VM is better than the
Microsoft CLR (or something equally moot). Somehow, it's hard to resist.
Take me, for example. I know that Haskell is not the best solution for
all situations. For example, while it's a fantastic language, the
library support is patchy at best, it's not brilliantly integrated with
Windows, and debugging leaves *a lot* to be desired. But you know what?
I don't *care*. I *want* Haskell to be "the best programming language",
or to eventually *become* "the best", because I *like* it. It's so
*perfect* for the kind of code I write. It makes everything I want to do
so *easy*. It's the coolest thing I've ever seen in my life - and it
makes me angry that everybody else thinks I'm a moron for saying so.
It stops being a rational argument and degenerates into "I must prove
that Haskell is the best, no matter what it takes". And that's when
things start to get crazy.
Now personally, I now try to avoid claiming that Haskell is the best at
everything. I know it isn't. I point out what's bad about Haskell as
well as what's good. Unfortunately, it doesn't matter what I say. Nobody
will ever be interested in Haskell, and that makes me very sad. It makes
me feel like "I lost". Which is silly - *I* still have Haskell, *I* can
still use it in whatever way I want. But it's upsetting to me that I
lost the argument, and nobody else sees how awesome Haskell is. And so
unless I'm careful, there's still the danger that one day I will find
myself screaming "HASKELL RULES, YOU FOOLS!" again.
This, I hypothesize, is why Holy Wars are fought. About all kinds of
things, from which wavelet has the best statistical properties to which
corporate software house is the least evil. It all comes down to
everybody wanting to think they're smarter than everybody else.
Post a reply to this message
|
 |