Skip to content

Vi vs Emacs again

It is the eternal war: Emacs vs vi, the programming editors from 1976 are still the standard for today’s software. Why Atom Can’t Replace Vim, Learning the lesson of vi goes to the core in describing two underlying philosophies driving text editing software design.

It’s reductionist to say that these two editors were each built around one big idea, but what the hell, let’s be reductionist. Because what stands out in 2014, looking at modern editors like Sublime Text and Atom, is how Emacs’ big idea has been thoroughly learned — and how vi’s big idea hasn’t.

Emacs’ big idea was that it could be modified and extended cleanly.

Vi is fundamentally built on command composability. It favors small, general-purpose commands that can be combined with objects to compose larger commands. By contrast, Emacs and its philosophical descendants (including Sublime Text and Atom) use monolithic, special-purpose commands.

This is mindful of the RISC vs CISC debate in processors. Reduced instruction set computers have a small set of instructions that are used to build more complex operations. Complex instruction set computers are designed to perform complex things in one instruction. CISC processors may have special circuitry for these complex operations although, it seems, current designs usually depend upon a RISC like microcode to convert the complex instruction into a series of simpler processor operations.

Atom is a code editing project at Github

At GitHub, we’re building the text editor we’ve always wanted. A tool you can customize to do anything, but also use productively on the first day without ever touching a config file. Atom is modern, approachable, and hackable to the core. We can’t wait to see what you build with it.

On the one hand, it is good to see that efforts continue to make a better code editor. On the other, it is interesting that the legacy of 1976 still holds the standard. Code is still plain ASCII text and doesn’t need either the extended character sets or style sheets common for human digestible documents. The effort in improving code editing is in its awareness of the protocols being used. That means such things as language construct and API lookup, automatic completion of language constructs, automatic ‘pretty print’ text layout assistance, and other application focused efforts. 

The core abilities to mangle text are still the critical functions. Getting a good handle on regex is probably the toughest part of this. The editor command structure is more just a nuisance. Atom and the IDE editing functions are more for the serious professional building code. The range of text editing software makes for an interesting study as the interface between humans and machines as the machines have evolved over the years. Now, the machines are the limitations they used to be yet software designed to work on tape and card stored code libraries and teletype terminals is still in use. The entry about learning the lessons from these legacy editors provides good insight.

Post a Comment

You must be logged in to post a comment.