Wednesday, December 23, 2009

Emacs Paper from 1981

It's been a while since I read RMS's paper on Emacs. Back in 1981, I still had another 2 years before I even saw my first computer. Reading the paper gives some insight into some of the issues they were trying to solve (real time display, extensibility, portability).

The first thing that came to mind when I first read this paper was that (to an outsider at least) Emacs really hasn't changed fundamentally since 1981 - the basic structures have held up well. I don't see any mention of subprocesses in the original paper, so that's something pretty fundamental that is new (since 1981). Of course the other obvious additions are MULE, image support, fonts, and the graphical interface.

Amusingly, vi was not mentioned in the Other Interesting Editors section. From reading the wikipedia article on vi, it certainly was available (it's a part of the Unix standard).

But what really struck me as interesting and powerful was the decision to use dynamic binding. I'd remembered playing with the differences between dynamic and lexical scoping in my SICP class in college, but never saw a reason to use it. Well, it totally fits when you want to customize Emacs' behavior.

The paper is certainly worth the 10 minutes it takes to read.

2 comments:

Paul said...

Dynamic binding is responsible for much of the hardness to maintain emacs packages. It is also responsible for unreadable code, non deterministic behaviour when calling a function (even when called with the same parameters, its behaviour can vary), and a lot of trouble for proper closures and parallel execution. I don't know how much it has helped emacs in the past 30 years, but I beleive new packages should not use it anymore nowaday.

Vivianne said...

I won't argue that the paper is worth reading, but it definitely isn't a 10 minutes reading! By the way, 1981 was the year I was born...