Therefore, when I wrote my second implementation of Emacs, I followed the same kind of design. The low level language was not machine language anymore, it was C…
Now, this was not the first Emacs that was written in C and ran on Unix. The first was written by James Gosling, and was referred to as GosMacs. A strange thing happened with him. In the beginning, he seemed to be influenced by the same spirit of sharing and cooperation of the original Emacs. I first released the original Emacs to people at MIT.
RMS 在打算用 C 写第二版 Emacs 的时候,发现高司令的 GosMacs 已经在先了,而且这时有人给了他查看 GosMacs 代码的权限:
At that time I was working on the GNU system (a free software Unix-like operating system that many people erroneously call “Linux”). There was no free software Emacs editor that ran on Unix. I did, however, have a friend who had participated in developing Gosling’s Emacs. Gosling had given him, by email, permission to distribute his own version. He proposed to me that I use that version.
Weber : But Stallman was not involved. No one went after him because he had no money, right?
Gosling : Right. I mean, you can’t sue a homeless person, right, which is, you know, he-- Yeah, he had sort of weird views on, you know, economic models at the time.
1981 Gosling Emacs :
by James Gosling :
written in C; with "Mocklisp"
as its extension language.
/ |
1983 / |
/ Unipress Emacs (6-may-83)
/ $395 commercial product.
1984 / Hemlock
/ by Bill Chiles,
/ Rob MacLachlan, et al.
1985 GNU Emacs 13.0? (20-mar-85) written in Spice Lisp
by Richard Stallman. (CMU Common Lisp)
initial public release? :
| :
GNU Emacs 15.10 (11-apr-85) :
|
GNU Emacs 15.34 (07-may-85)
|
GNU Emacs 16.56 (15-jul-85)
(Gosling code expunged
for copyright reasons)
RMS: I can’t remember all the hacks that I was proud of, so I can’t pick the best. But here’s something I remember fondly. The last piece of Gosmacs code that I replaced was the serial terminal scrolling optimizer, a few pages of Gosling’s code which was proceeded by a comment with a skull and crossbones, meaning that it was so hard to understand that it was poison. I had to replace it, but worried that the job would be hard. I found a simpler algorithm and got it to work in a few hours, producing code that was shorter, faster, clearer, and more extensible. Then I made it use the terminal commands to insert or delete multiple lines as a single operation, which made screen updating far more efficient.