Sunday, January 7, 2007

Emacs: cool and wrong

I have to say that emacs has several features that make me almost willing to put up with its idiosyncratic nonesense. (And a big thanks to Raganwald for being snotty about emacs.)

The first things are the kill-ring and registers. I have never worked with an editor that understands that I might want to have more than one thing on my "clipboard" to have available for pasting ("yanking" in emacs parlance), and emacs makes it simple. Well, perhaps not "simple" simple, but relatively easy and almost close to painless.

The second things are how it handles searching through text. Not only does it do incremental searching, showing you all your matches and highlighting the one you are currently "on," but it remembers where you were when you started. So you can easily (as long as you remember the particular key combination) go back to where you were when you started. Also, when doing search-replace, you can enter "recursive-mode", where you can go ahead and type whatever you want at the point in question, then jump back out of the mode and continue search-replacing. How cool is that?

But despite these features, I cannot see myself actually using emacs to do my job. It is too different, and you have to really embrace it to get full value from it. I am a blub programmer; I don't want to embrace anything hackerish too tightly. I need to be able to jump to the next cool thing with as little baggage as possible (and fyi, for me Eclipse is the current cool thing). Other editors work in similar ways (ctrl-c/x/v, to copy/cut/paste vs emacs crazy key combos for kill (but leave behind), kill, and yank), and I can use my experience with other applications to get up to speed on any given gui editor, but emacs seems to be a dead end.

Lisp strikes me as exceedingly similar (and not just because Lisp and emacs are so closely bound). Lisp and emacs are both very powerful, abstract, extensible, and used by frighteningly bright people. But the very power seems to isolate them, as if with all that power they do not have to interact with the great unwashed blub programmers. One of my favorite lines by Paul Graham is in his essay on why programmers at startups should use Lisp. The quote is actually about choosing a language to work in, and he says, "And if you're writing a short, throwaway program, you may be better off just using whatever language has the best library functions for the task." I live and die by libraries other people write, and the community, the libraries, the tutorials, and the general online help are critical to my language decisions. The power of the language for me comes from the community that uses it, not the abstraction of the language itself.

>>PS
I have just been playing with Django, and I found emacs pretty useful.

No comments: