Monday, November 16, 2009

Who doesn't love a good flame war? Seriously, it's becoming the defining art form of our era, this red-headed love-child of the soap opera and professional football. But hey, who doesn't enjoy watching people who don't know what they're talking about, rant and rave IN ALL CAPS?

While the flame war has gone on to touch all aspects of our online society, we programmers have some of the dumbest and longest running wars to ourselves (then again, we've been flaming longer than anyone else, at least online).

So, in honor of our glorious tradition, and because I know almost nothing about the subject, I figured I'd have my say on one of the dumbest of the dumb flame wars, the great VIM vs Emacs debate.

A lot of non-technical types might be scratching their heads right now, VIM, Emacs, what? Basically, VIM and Emacs are glorified text-editors like Notepad, on crack. Both hail from the early days of computing, back when we didn't have things like mice or personal computers. Both have also seen quite a resurgence lately, as new programmers look for ways to increase their productivity and ability to look like they know what they're talking about.

So what's the big deal about two programs that are over 20 years old and still light-years ahead of any text-editor created since then? Really not much. From what I gather, the debate started as a kind of good-natured joking between experienced programmers over their editors of choice. Add a bunch of young programmers looking for validation and a better way to edit code than say, Text-Mate, and you've got yourself a flame war of epic proportions.

Now, for my opinionated rant / call for world peace:

I use VIM, I'd recommend VIM, if you want to use Emacs, go for it. If you're trying to become a better programmer, there are far more important things to be worrying about than which editor to pick. Both will increase your productivity, once you learn how to use them, but neither is going to make you a better programmer on its own.

And on to my comparison:

VIM

VIM is nimble, VIM is simple, VIM rewards those who take its simple commands and chain the together into beautiful pieces of text-editing art. The closest things I can compare it to are AutoCAD and Latin. Maybe this is where my bias comes in, as I have spent a lot of time using AutoCAD and so VIM's concept of modes made a lot of sense to me.

Most of you have probably not used AutoCAD, so let me return to the Latin analogy. Latin is composed of many small "wordlettes" (for lack of a better word), such as "bi" (two) and "ped" (foot). Throw these two wordlettes together and you've got biped, something that stands on two feet. Replace "ped" with "cycle" and you've got a cheap and clean method of transportation.

This is how VIM works, you learn simple, small commands and then string them together like a combo in Street Fighter or a word in Latin.

Emacs

Now it's time to fess up. I have very little experience with Emacs, I've read up on it a bit and recently had the pleasure of watching someone with 20+ years of Emacs experience rip through a bunch of code. From what I saw, Emacs is a fast and powerful editor. Everything I do with VIM can be done with Emacs, albeit with a lot more usage of the Ctrl key.

Emacs is also incredibly powerful and customizable, so powerful that one could create VIM in Emacs. Some would say this ends the debate as to which is "better", whereas I think this simply defines the debate:

Emacscan be customized into the perfect editor (for you), given enough time and the desire to learn.

VIM is as damn close to a perfect editor for everyone, as can reasonably be expected in this world of differing opinions.