Emacs and VI

Two old and exemplar programs are the VI text editor and the editing capabilities of the GNU Emacs computer environment. The two employ fundamentally different user interfaces:

In 1984, I used VI. Since I often change what I am writing as I type it, I came to hate the VI `shift of mode' procedure. I shifted mode too often. Earlier, I found it difficult to compose with pencil and paper or typewriter, since I kept crossing out what I wrote. The Emacs conventions fit me perfectly.

I know that this detailed explanation of the differences fits many of the people with whom I have talked. But do VI and the editing capabilities of Emacs match larger patterns, too?

An old friend of mine, the Reverend Lois Rose, described how she thought, using a metaphor based the development of chemical film: her ideas grow and begin to make sense to others the way a picture appears slowly as you develop it.

(For people who have a slow Internet connection, a more recent metaphor would be to say that her ideas grow and make sense to others the way an interlaced image from a Web site appears, first at low resolution, then as the interlaced lines are filled in, at a higher resolution.)

Put another way, Lois tends first to see a large idea and then fills in details.

On the other hand, I write what amounts to sections of a larger work, and only later put them together. When I write, I am confident that a larger pattern exists, but I first express parts. (Lois says she has trouble seeing connections between parts of my writing that seem utterly obvious to me.)

Does the VI way of writing fit Lois better than me? Would Lois thrive on VI (or VIP mode in GNU Emacs)? Or is the distinction one involving only a detailed manner of writing? Or is it a learned habit?

Going further, do the two modes match two modes of programming?

On the one hand, as far as I can determine, there is the programmer who discovers how a program works by writing it. Often this person also describes himself or herself as a `hacker',

1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. 2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming.

From the on-line hacker Jargon File, version 4.0.0, 24 July 1996,
   or in hard copy,
The New Hacker's Dictionary,
compiled by Eric S. Raymond,
1993, MIT Press, p. 218,
ISBN 0-262-68079-3

(You will often see the word `hacker' misused by writers who know little about the computer industry. The conventional term for a person breaks security on a system is `cracker'.)

On the other hand, there also exist programmers who work to specifications favored by those who run certain kinds of project. A specification states generally what the software should do; then analysts define more detailed modules which implement each action.

Do programmers of the latter sort prefer VI and the shell as an integrating environment? If so, the general thesis holds.

On the contrary, the general thesis fails if the kind of environment a person prefers turns out to depend mostly on the detailed style of how they write, rather than on their general way of thinking.

Which is it?

(Also, it goes without saying that preferences depend on which technologies are available early on. Clearly, no one will learn to use the Emacs editing conventions if an Emacs integrated environment is not available or if it is configured such that the control key in an unpleasant location.)


Return to: Notions

Or return to: Rattlesnake Home Page

webmaster@rattlesnake.com