-
Notifications
You must be signed in to change notification settings - Fork 29
/
chap06.tex
436 lines (331 loc) · 57.1 KB
/
chap06.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
%% Copyright (c) 2002, 2010 Sam Williams
%% Copyright (c) 2010 Richard M. Stallman
%% Permission is granted to copy, distribute and/or modify this
%% document under the terms of the GNU Free Documentation License,
%% Version 1.3 or any later version published by the Free Software
%% Foundation; with no Invariant Sections, no Front-Cover Texts, and
%% no Back-Cover Texts. A copy of the license is included in the
%% file called ``gfdl.tex''.
\chapter{\ifdefined\eng
The Emacs Commune
\fi
\ifdefined\chs
Emacs公社
\fi
}
\ifdefined\eng
The AI Lab of the 1970s was by all accounts a special place. Cutting-edge projects and top-flight researchers gave it an esteemed position in the world of computer science. The internal hacker culture and its anarchic policies lent a rebellious mystique as well. Only later, when many of the lab's scientists and software superstars had departed, would hackers fully realize the unique and ephemeral world they had once inhabited.
\fi
\ifdefined\chs
二十世纪七十年代,从哪个角度看,麻省理工学院的人工智能实验室都是个特别的地方。里面有尖端的项目,顶级的研究人员,他们为整个实验室赢来了美名。而实验室内部的黑客文化,无政府主义的基调又为实验室平添了一层反抗权威的个性。几年之后,实验室中很多科学家和明星开发人员纷纷离开,黑客们这才意识到自己曾经的环境是多么独特。
\fi
\ifdefined\eng
``It was a bit like the Garden of Eden,'' says Stallman, summing up the lab and its software-sharing ethos in a 1998 \textit{Forbes} article. ``It hadn't occurred to us not to cooperate.''\endnote{See Josh McHugh, ``For the Love of Hacking,'' \textit{Forbes} (August 10, 1998), \url{http://www.forbes.com/forbes/1998/0810/6203094a.html}.}
\fi
\ifdefined\chs
在一篇1998年《福布斯》杂志上的文章中,斯托曼回忆当时实验室的氛围,说:“那就好像是个伊甸园。在那样的环境中,我们不可能拒绝互相合作。”\endnote{参见乔希·麦克休(Josh McHugh)的文章《黑客之爱》,《福布斯》1998年8月10日。http://www.forbes.com/forbes/1998/0810/6203094a.html}
\fi
\ifdefined\eng
Such mythological descriptions, while extreme, underline an important fact. The ninth floor of 545 Tech Square was more than a workplace for many. For hackers such as Stallman, it was home.
\fi
\ifdefined\chs
这样的描述也许略显夸张,但却反映了一个很重要的事实:技术广场545号楼9层,那里曾经不仅仅是一个工作场所。对于像理查德一样的黑客来说,那里更像是家。
\fi
\ifdefined\eng
The word ``home'' is a weighted term in the Stallman lexicon. In a pointed swipe at his parents, Stallman, to this day, refuses to acknowledge any home before Currier House, the dorm he lived in during his days at Harvard. He has also been known to describe leaving that home in tragicomic terms. Once, while describing his years at Harvard, Stallman said his only regret was getting kicked out. It wasn't until I asked Stallman what precipitated his ouster, that I realized I had walked into a classic Stallman setup line.
\fi
\ifdefined\chs
“家”这个字,在理查德的心中,有着特别的份量。他少年时,家中的变故和经历让他直到上了大学,才对家这个概念有所感悟,并心存感激。他曾把哈佛的宿舍当作自己第一个真正的家。描述起当年离开宿舍的时候,他甚至依然心存悲伤。他有次提起自己的大学生涯,说道大学期间,最悔恨的一件事情,就是被哈佛踢出校门。我问他究竟是触怒了何方神圣,才被赶出学校的。这才发现理查德早有准备:
\fi
\ifdefined\eng
``At Harvard they have this policy where if you pass too many classes they ask you to leave,'' Stallman says.
\fi
\ifdefined\chs
“哈佛有个规矩,你修了太多的课程,就必须得毕业了。”理查德道。
\fi
\ifdefined\eng
With no dorm and no desire to return to New York, Stallman followed a path blazed by Greenblatt, Gosper, Sussman, and the many other hackers before him. Enrolling at MIT as a grad student, Stallman rented a room in an apartment in nearby Cambridge but soon viewed the AI Lab itself as his de facto home. In a 1986 speech, Stallman recalled his memories of the AI Lab during this period:
\fi
\ifdefined\chs
离开了宿舍,又不想回纽约。理查德跟随着和格林布拉特,高斯伯,萨斯曼等人的足迹,来到了麻省理工学院,继续读博士。他在剑桥市一带租了一所公寓,但没有多久,他就把人工智能实验室当作了自己真正的家。在1986年的一次演讲中,理查德回忆起那时的人工智能实验室:
\fi
\ifdefined\eng
\begin{quote}
I may have done a little bit more living at the lab than most people, because every year or two for some reason or other I'd have no apartment and I would spend a few months living at the lab. And I've always found it very comfortable, as well as nice and cool in the summer. But it was not at all uncommon to find people falling asleep at the lab, again because of their enthusiasm; you stay up as long as you possibly can hacking, because you just don't want to stop. And then when you're completely exhausted, you climb over to the nearest soft horizontal surface. A very informal atmosphere.\endnote{See Stallman (1986).}
\end{quote}
\fi
\ifdefined\chs
\begin{quote}
“比起其他人,我睡在实验室里的日子可能更久些。因为每隔一两年,我总会因为各种原因,会有那么几个月的时间没地方住。这期间,我就住在人工智能实验室里。我一直觉得那里很舒服,冬暖夏凉。那个时候,睡在实验室一点也不稀奇。他们都是热情满满,一直写代码调程序,因为你实在不想停下来。等到实在太累了,就在旁边找片平坦舒服的地方,倒头睡下。大家都是这么不拘一格。\endnote{参见理查德在瑞典皇家技术研究所的演讲(1986年10月30日):http://www.gnu.org/philosophy/stallman-kth.html}。”
\end{quote}
\fi
\ifdefined\eng
The lab's home-like atmosphere could be a problem at times. What some saw as a dorm, others viewed as an electronic opium den. In the 1976 book \textit{Computer Power and Human Reason}, MIT researcher Joseph Weizenbaum offered a withering critique of the ``computer bum,'' Weizenbaum's term for the hackers who populated computer rooms such as the AI Lab. ``Their rumpled clothes, their unwashed hair and unshaved faces, and their uncombed hair all testify that they are oblivious to their bodies and to the world in which they move,'' Weizenbaum wrote. ``[Computer bums] exist, at least when so engaged, only through and for the computers.''\endnote{See Joseph Weizenbaum, \textit{Computer Power and Human Reason: From Judgment to Calculation} (W. H. Freeman, 1976): 116.}
\fi
\ifdefined\chs
实验室里的这种氛围,有时候也会引来麻烦。有些人把它看作是个宿舍,而外人看来就像是个电子大烟馆。1976年,麻省理工学院的一位研究人员约瑟夫·魏岑鲍姆(Joseph Weizenbaum)曾在一本名为《计算机的能力与人类的理性》(Computer Power and Human Reason)中,用“电脑流浪汉”来形容类似人工智能实验室里的这批人,并对此多有指责:“衣服打着褶,头发不洗,胡子不刮,蓬头垢面,这群人不管自己的形象,更不会关注外面的世界⋯⋯这种电脑流浪汉就存在于我们的现实世界之中,他们沉迷于计算机,一切生活只能依赖电脑,而他们的日子里只有计算机\endnote{参见约瑟夫·魏岑鲍姆(Joseph Weizenbaum)的书,《计算机的能力与人类的理性》(Computer Power and Human Reason)(W.H. Freeman出版社,1976年),第116页。}。”
\fi
\ifdefined\eng
Almost a quarter century after its publication, Stallman still bristles when hearing Weizenbaum's ``computer bum'' description, discussing it in the present tense as if Weizenbaum himself was still in the room. ``He wants people to be just professionals, doing it for the money and wanting to get away from it and forget about it as soon as possible,'' Stallman says. ``What he sees as a normal state of affairs, I see as a tragedy.''
\fi
\ifdefined\chs
如今这篇文章已经发表了二十多年,而理查德听到“电脑流浪汉”这词依然心存不快。一说起这事,理查德就用一般现代式来形容,就好像魏岑鲍姆在他身边一般:“他就希望大家把这当成一份职业。你干这活就该只为挣钱,干完活你就走人,回到家就什么都不记得。他所谓的这种正常生活,在我看来根本就是个悲剧。”
\fi
\ifdefined\eng
Hacker life, however, was not without tragedy. Stallman characterizes his transition from weekend hacker to full-time AI Lab denizen as a series of painful misfortunes that could only be eased through the euphoria of hacking. As Stallman himself has said, the first misfortune was his graduation from Harvard. Eager to continue his studies in physics, Stallman enrolled as a graduate student at MIT. The choice of schools was a natural one. Not only did it give Stallman the chance to follow the footsteps of great MIT alumni: William Shockley ('36), Richard P. Feynman ('39), and Murray Gell-Mann ('51), it also put him two miles closer to the AI Lab and its new PDP-10 computer. ``My attention was going toward programming, but I still thought, well, maybe I can do both,'' Stallman says.
\fi
\ifdefined\chs
然而,黑客的生活中,也依然会有悲剧。理查德回忆,在他从人工智能实验室的兼职黑客,到转成全职黑客的这些年间,经历了一系列不平静的遭遇。他只能靠玩弄计算机来度过这段难熬的日子。正如他之前说的,第一个不幸遭遇就是从哈佛毕业。之后他凭着对物理学的兴趣,在麻省理工学院开始攻读物理系的博士学位。选择麻省理工学院是个非常顺理成章的事情。一来,有众多著名校友做榜样:有1936年毕业的校友,晶体管发明者之一威廉· 肖克利; 1939年毕业的校友,著名的理论物理学家理查德·费曼;1951年毕业的校友,夸克之父默里·盖尔曼。除了这些名人以外,吸引理查德的,自然还有人工智能实验室和里面那台全新的PDP-10计算机。理查德说:“我那会越来越喜欢编程,但当时觉得,我没准能两者兼顾,编程、物理两不耽误。”
\fi
\ifdefined\eng
Toiling in the fields of graduate-level science by day and programming in the monastic confines of the AI Lab by night, Stallman tried to achieve a perfect balance. The fulcrum of this geek teeter-totter was his weekly outing with the Folk-Dance Club, his one social outlet that guaranteed at least a modicum of interaction with the opposite sex. Near the end of that first year at MIT, however, disaster struck. A knee injury forced Stallman to stop dancing. At first, Stallman viewed the injury as a temporary problem; he went to dancing and chatted with friends while listening to the music he loved. By the end of the summer, when the knee still ached and classes reconvened, Stallman began to worry. ``My knee wasn't getting any better,'' Stallman recalls, ``which meant I had to expect to be unable to dance, permanently. I was heartbroken.''
\fi
\ifdefined\chs
白天读着物理学的博士课程,晚上跑去人工智能实验室鼓捣计算机,理查德试着在这种生活里保持平衡。两头的忙碌,让他只能在每周末偷出几分闲暇,跑去民间舞俱乐部,放松一下身心。而这个活动,也成了他唯一能认识异性朋友的机会。然而,在麻省理工学院的第一年结束时,悲剧再次降临。他膝盖受伤,从此不能再跳舞。一开始,他还以为只是个小伤,养一阵子就会好。他还是照常参加俱乐部活动,聊聊天,听听音乐。可暑假结束,他膝盖依旧疼痛,加上新学期课程开始,理查德开始担心。他回忆:“我膝盖一直也没见好,这就意味着我很可能终生都无法跳舞了。我当时伤心透了。”
\fi
\ifdefined\eng
With no dorm and no dancing, Stallman's social universe imploded. Dancing was the only situation in which he had found success in meeting women and occasionally even dating them. No more dancing ever was painful enough, but it also meant, it seemed, no more dates ever.
\fi
\ifdefined\chs
离开了大学时的宿舍,又没法继续跳舞,理查德丧失了任何社交的机会。跳舞是唯一能让他在女性面前获得成就感的活动,他甚至有时候还能借此和女生单独出来约会。不能跳舞本身已经让他够痛苦了,而这也同样意味着,他从此恐怕就没机会和女生约会了。
\fi
\ifdefined\eng
``I felt basically that I'd lost all my energy,'' Stallman recalls. ``I'd lost my energy to do anything but what was most immediately tempting. The energy to do something else was gone. I was in total despair.''
\fi
\ifdefined\chs
“我当时就觉得自己像个泄了气的气球。我失去了做各种事的动力,我彻底地绝望了。”
\fi
\ifdefined\eng
Stallman retreated from the world even further, focusing entirely on his work at the AI Lab. By October, 1975, he dropped out of MIT and out of physics, never to return to studies. Software hacking, once a hobby, had become his calling.
\fi
\ifdefined\chs
这之后,理查德再次远离了这个世界,专心投入人工智能实验室的工作。1975年十月,他放弃了麻省理工学院的课程,从此没再回到课堂。软件开发,曾经只是他的兴趣,如今则成了他的责任。
\fi
\ifdefined\eng
Looking back on that period, Stallman sees the transition from full-time student to full-time hacker as inevitable. Sooner or later, he believes, the siren's call of computer hacking would have overpowered his interest in other professional pursuits. ``With physics and math, I could never figure out a way to contribute,'' says Stallman, recalling his struggles prior to the knee injury. ``I would have been proud to advance either one of those fields, but I could never see a way to do that. I didn't know where to start. With software, I saw right away how to write things that would run and be useful. The pleasure of that knowledge led me to want to do it more.''
\fi
\ifdefined\chs
回头看看这段往事,理查德觉得,从一个学生转变成一个全职黑客几乎是命中注定的。他觉得,自己早晚都会放弃其他任何追求,专心成为一名黑客。他说:“物理和数学领域里,我很难做出一些自己原创的贡献。倘若我能在那里有所成就,我自然乐见其成。可我始终没能在这些领域里,找出自己的套路。我甚至都不知道从何开始。而在软件领域,我立即就能知道怎么写软件,怎么让它跑起来,怎么做出有用的东西。软件领域里的知识,让我有了继续深究下去的动力,也让我从中感受到了无尽的乐趣”
\fi
\ifdefined\eng
Stallman wasn't the first to equate hacking with pleasure. Many of the hackers who staffed the AI Lab boasted similar, incomplete academic résumés. Most had come in pursuing degrees in math or electrical engineering only to surrender their academic careers and professional ambitions to the sheer exhilaration that came with solving problems never before addressed. Like St. Thomas Aquinas, the scholastic known for working so long on his theological summae that he sometimes achieved spiritual visions, hackers reached transcendent internal states through sheer mental focus and physical exhaustion. Although Stallman shunned drugs, like most hackers, he enjoyed the ``high'' that came near the end of a 20-hour coding bender.
\fi
\ifdefined\chs
这份乐趣,并非只有理查德一人能感受到。很多黑客早已乐此不疲。人工智能实验室里,充斥着很多这样的人,他们和理查德一样,都在学业中途,转职成了全职黑客。其中大多数人都是数学或电子工程专业出身,他们当初选专业,一来为拿个文凭,二来可以体验解决旷世难题后的那份欣喜。当年圣·托马斯·阿奎那(St. Thomas Aquinas)编写《神学大全》时,曾号称感受过上帝的异象。而这份体验,黑客们也常有感受。他们通过集中精神,身心齐动,也达到了内心上的超脱,开始了忘我地工作。虽然理查德和其他黑客都拒绝毒品,但在电脑前写上二十来小时的代码,也同样能给他们带来一份飘飘然的感觉。
\fi
\ifdefined\eng
Perhaps the most enjoyable emotion, however, was the sense of personal fulfillment. When it came to hacking, Stallman was a natural. A childhood's worth of late-night study sessions gave him the ability to work long hours with little sleep. As a social outcast since age 10, he had little difficulty working alone. And as a mathematician with a built-in gift for logic and foresight, Stallman possessed the ability to circumvent design barriers that left most hackers spinning their wheels.
\fi
\ifdefined\chs
这其中,最能让他们陶醉的,恐怕就是那份无法言状的自我满足感。理查德简直天生就是个黑客。他少年时熬夜学习的经历,让他可以轻易胜任长时间的工作,并且只睡很少的觉。而他的数学背景,又让他有着过人的严密逻辑和数感。很多让其他黑客望而生畏的设计难题,放到理查德面前却变得轻而易举。
\fi
\ifdefined\eng
``He was special,'' recalls Gerald Sussman, an AI Lab faculty member and (since 1985) board member of the Free Software Foundation. Describing Stallman as a ``clear thinker and a clear designer,'' Sussman invited Stallman to join him in AI research projects in 1973 and 1975, both aimed at making AI programs that could analyze circuits the way human engineers do it. The project required an expert's command of Lisp, a programming language built specifically for AI applications, as well as understanding (supplied by Sussman) of how a human might approach the same task. The 1975 project pioneered an AI technique called dependency-directed backtracking or truth maintenance, which consists of positing tentative assumptions, noticing if they lead to contradictions, and reconsidering the pertinent assumptions if that occurs.
\fi
\ifdefined\chs
杰拉尔德·萨斯曼(Gerald Sussman)是人工智能实验室的教授,1985年之后,他还担任了自由软件基金会董事会成员。回忆起理查德,他赞叹:“他太特别了。思维清晰,设计流畅。”萨斯曼曾邀请了理查德加入人工智能实验室,参与了1973年和1975年的项目。两个人工智能的项目目标,都是通过编写程序,让计算机能够像人类的电子工程师一样,分析电路。这个项目需要一位Lisp语言的专家,同时,还能了解人类是如何解决类似的电路分析的问题。Lisp语言曾是专门设计用来编写人工智能程序。1975年的项目,则开辟了相关性制导回溯技术(dependency-directed backtracking)的先河,这个技术又名真值维护(Truth maintenance),基本思路是首先产生几个假设,然后检测在假设前提下是否存在矛盾,如果存在矛盾,则重新设计假设。
\fi
\ifdefined\eng
When he wasn't working on official projects such as these, Stallman devoted his time to pet projects. It was in a hacker's best interest to improve the lab's software infrastructure, and one of Stallman's biggest pet projects during this period was the lab's editor program TECO.
\fi
\ifdefined\chs
这些正式项目之外,理查德也会花时间维护着自己的个人项目。黑客们都喜欢改进实验室的各种基础软件。理查德当时手头最大的个人项目,就是实验室的一个编辑器软件,名为TECO。
\fi
\ifdefined\eng
The story of Stallman's work on TECO during the 1970s is inextricably linked with Stallman's later leadership of the free software movement. It is also a significant stage in the history of computer evolution, so much so that a brief recapitulation of that evolution is necessary. During the 1950s and 1960s, when computers were first appearing at universities, computer programming was an incredibly abstract pursuit. To communicate with the machine, programmers created a series of punch cards, with each card representing an individual software command. Programmers would then hand the cards over to a central system administrator who would then insert them, one by one, into the machine, waiting for the machine to spit out a new set of punch cards, which the programmer would then decipher as output. This process, known as ``batch processing,'' was cumbersome and time consuming. It was also prone to abuses of authority. One of the motivating factors behind hackers' inbred aversion to centralization was the power held by early system operators in dictating which jobs held top priority.
\fi
\ifdefined\chs
七十年代,理查德在TECO上的工作和之后的自由软件运动是一脉相承的。而这段历史在计算机史上,也是值得一书的。五六十年代那会,计算机刚刚进入大学校园,所谓编程还是个很抽象的概念。那会的程序员,如果想要和计算机沟通一下,就必须得拿着一大摞卡片,上面打着孔,记录着软件中的指令。他们得把这一叠卡片交给系统管理员,让管理员把它们一张一张插到计算机里。计算机执行完卡片上的指令,然后把结果用打孔的方式,输出在另外几张卡片上。程序员则拿着这些计算机输出的卡片,回去分析解读。这个流程,通常被成为“批处理”。批处理是个非常费时费力的活,而且也给了计算机管理员太大的权力。黑客们痛恨权威的传统,恐怕很大一部分原因,要归咎于当时的计算机管理员权力过大,他们有权决定哪个程序优先运行。
\fi
\ifdefined\eng
In 1962, computer scientists and hackers involved in MIT's Project MAC, an early forerunner of the AI Lab, took steps to alleviate this frustration. Time-sharing, originally known as ``time stealing,'' made it possible for multiple programs to take advantage of a machine's operational capabilities. Teletype interfaces also made it possible to communicate with a machine not through a series of punched holes but through actual text. A programmer typed in commands and read the line-by-line output generated by the machine.
\fi
\ifdefined\chs
1962年,很多计算机科学家和黑客都参与了麻省理工学院的MAC计划(Project MAC)。这一计划是人工智能实验室的前身,它曾试图解决批处理带来的问题。MAC计划引入了“分时”(Time sharing)的概念。这个概念之前曾叫做“偷时”(Time stealing),它利用一个程序运行中间的空隙,来执行另外一个程序,由此多个程序可以有效利用计算机。同时,电子打字机也被引入进计算机系统,作为人际交互的设备。从此人们再也不用靠打孔来和计算机交互,人们可以利用打字机,把命令敲进去,然后等着计算机把结果一行一行打印到纸上。
\fi
\ifdefined\eng
During the late 1960s, interface design made additional leaps. In a famous 1968 lecture, Doug Engelbart, a scientist then working at the Stanford Research Institute, unveiled a prototype of the modern graphical interface. Rigging up a television set to the computer and adding a pointer device which Engelbart dubbed a ``mouse,'' the scientist created a system even more interactive than the time-sharing system developed at MIT. Treating the video display like a high-speed printer, Engelbart's system gave a user the ability to move the cursor around the screen and see the cursor position updated by the computer in real time. The user suddenly had the ability to position text anywhere on the screen.
\fi
\ifdefined\chs
二十世纪六十年代,交互界面的设计也有了长足进步。在1968年,一次讲座从此出名。讲座上,斯坦福研究中心的科学家,道格·英格巴特(Doug Engelbart)展示了第一款现代图形用户界面的原型。他们把计算机和电视机连起来,并且还加入了一个定点设备——英格巴特把这个定点设备昵称为“老鼠”,也就是我们今天的鼠标。这套系统的交互性比麻省理工学院的分时系统更好。他们把电视机当作一个高速打印机,来显示各种输出。这套系统还允许用户使用鼠标来移动屏幕上的光标,并且实时地显示出光标的位置。用户可以使用鼠标把光标移动到屏幕上的任何字符上。
\fi
\ifdefined\eng
Such innovations would take another two decades to make their way into the commercial marketplace. Still, by the 1970s, video screens had started to replace teletypes as display terminals, creating the potential for full-screen -- as opposed to line-by-line -- editing capabilities.
\fi
\ifdefined\chs
不过,这些发明要等二十年才能进入市场。到了七十年代,显示器逐渐开始作为显示设备,取代了电子打字机。这一改变,使得计算机可以使用全屏幕来显示。这就不必像以前一样,每次只打印几行内容在纸上。
\fi
\ifdefined\eng
One of the first programs to take advantage of this full-screen capability was the MIT AI Lab's TECO. Short for Text Editor and COrrector, the program had been upgraded by hackers from an old teletype line editor for the lab's PDP-6 machine.\endnote{According to the \textit{Jargon File}, TECO's name originally stood for Tape Editor and Corrector. See \url{http://www.catb.org/jargon/html/T/TECO.html}.}
\fi
\ifdefined\chs
人工智能实验室的TECO程序,是早期的几个使用全屏幕显示的程序之一。TECO是“文本编辑及修正程序”(Text Editor and COrrector)的缩写。它的前身,诞生于PDP-6和电子打字机的年代,是黑客们把它一步一步升级至今\endnote{根据《黑话词典》(Jargon File)中的记载,TECO的名字原意为“磁带编辑及修改器”(Tape Eidtor and Corrector),参见http://www.catb.org/jargon/html/T/TECO.html}。
\fi
\ifdefined\eng
TECO was a substantial improvement over old editors, but it still had its drawbacks. To create and edit a document, a programmer had to enter a series of commands specifying each edit. It was an abstract process. Unlike modern word processors, which update text with each keystroke, TECO demanded that the user enter an extended series of editing instructions followed by an ``end of command string'' sequence just to change the text. Over time, a hacker grew proficient enough to make large changes elegantly in one command string, but as Stallman himself would later point out, the process required ``a mental skill like that of blindfold chess.''\endnote{See Richard Stallman, ``EMACS: The Extensible, Customizable, Display Editor,'' AI Lab Memo (1979). An updated HTML version of this memo, from which I am quoting, is available at \url{http://www.gnu.org/software/emacs/emacs-paper.html}.}
\fi
\ifdefined\chs
比起以前的那些编辑器,TECO是一大进步,但仍旧存在不足。如果要创建并编辑某个文件,程序员必须要输入各种命令,才能完成不同的操作。这个过程非常抽象。今天的编辑器,你每敲进一个字母,都会在屏幕上显示出来。而使用TECO来编辑文件,则需要输入一些命令,然后告诉它“命令结束”,然后才能把文件修改好。经过一段时间的练习,一名黑客可以使用一套漂亮的命令来完成很大的修改。不过这种技能,正如理查德所说,是需要“类似下盲棋一样的脑力消耗\endnote{参见理查德·斯托曼,人工智能实验室备忘录(1979年),《EMACS:可扩展,可定制的全屏编辑器》。本书的引文来自:http://www.gnu.org/software/emacs/emacs-paper.html}”。
\fi
\ifdefined\eng
To facilitate the process, AI Lab hackers had built a system that displayed both the text and the command string on a split screen. Despite this innovative hack, editing with TECO still required skill and planning.
\fi
\ifdefined\chs
为了辅助这种编辑流程,人工智能实验室的黑客们开发了一套系统,可以把屏幕分为两部分,分别显示正在编辑的文件内容,和输入的命令。这个小改变的确有用,可是想要使用TECO依旧需要很多技巧,和事先规划。
\fi
\ifdefined\eng
TECO wasn't the only full-screen editor floating around the computer world at this time. During a visit to the Stanford Artificial Intelligence Lab in 1976, Stallman encountered an edit program named E. The program contained an internal feature, which allowed a user to update display text after each command keystroke. In the language of 1970s programming, E was one of the first rudimentary WYSIWYG editors. Short for ``what you see is what you get,'' WYSIWYG meant that a user could manipulate the file by moving through the displayed text, as opposed to working through a back-end editor program.''\endnote{See Richard Stallman, ``Emacs the Full Screen Editor'' (1987), \url{http://www.lysator.liu.se/history/garb/txt/87-1-emacs.txt}.}
\fi
\ifdefined\chs
在当时,除了TECO,还有几个其他的全屏编辑器。1976年,理查德去了一趟斯坦福的人工智能实验室。在那里,他见到了一个叫做E的编辑器。这个程序有个功能,可以在根据用户的输入,实时更新显示器上的内容,让用户看到最新的修改结果。用七十年代的话讲,E是早期的几个“所见即所得”的编辑器之一。所谓“所见即所得”,常常写作WYSIWYG,是What you see is what you get的缩写。它意味着用户可以直接在显示出来的文本上进行编辑,而不用再另外使用一个后台的编辑器程序\endnote{参见理查德·斯托曼,《Emacs全屏编辑器》(1987年),http://www.lysator.liu.se/history/garb/txt/87-1-emacs.txt}。
\fi
\ifdefined\eng
Impressed by the hack, Stallman looked for ways to expand TECO's functionality in similar fashion upon his return to MIT. He found a TECO feature called Control-R, written by Carl Mikkelson and named after the two-key combination that triggered it. Mikkelson's hack switched TECO from its usual abstract command-execution mode to a more intuitive keystroke-by-keystroke mode. The only flaws were that it used just five lines of the screen and was too inefficient for real use. Stallman reimplemented the feature to use the whole screen efficiently, then
extended it in a subtle but significant way. He made it possible to attach TECO command strings, or ``macros,'' to keystrokes. Advanced TECO users already saved macros in files; Stallman's hack made it possible to call them up fast. The result was a user-programmable WYSIWYG editor. ``That was the real breakthrough,'' says Guy Steele, a fellow AI Lab hacker at the time.\endnote{\textit{Ibid.}}
\fi
\ifdefined\chs
理查德一下子对这技术感兴趣了,他决定回到麻省理工学院之后,把这个功能加到TECO上。他发现TECO上有个功能叫做“Control-R”。这个功能是卡尔·米克尔松(Carl Mikkelson)开发的。使用这个功能的快捷键和它的名字一样:Control-R。利用这个快捷键,用户可以让TECO实时地显示出编辑的内容。不过有个小瑕疵:用户只能使用五行来显示编辑的内容,这显然是不够的。理查德重新实现了这个功能,让程序可以使用整个屏幕来显示编辑内容。他还做了个不起眼,但影响深远的修改:他还允许用户把一连串TECO命令绑定在快捷键组合上。这一连串的命令称为“宏”。TECO的资深用户早就把各种常用的命令组合记下来了。理查德的这个改变让他们可以通过宏更快捷地使用这些组合。最后的结果,是一个允许用户自己扩展的“所见即所得”的编辑器。盖·斯蒂尔(Guy Steele)曾是当年人工智能实验室的一名黑客,他回忆起理查德的这个改动,说:“这在当时是个突破\endnote{\textit{Ibid.}}。”
\fi
\ifdefined\eng
By Stallman's own recollection, the macro hack touched off an explosion of further innovation. ``Everybody and his brother was writing his own collection of redefined screen-editor commands, a command for everything he typically liked to do,'' Stallman would later recall. ``People would pass them around and improve them, making them more powerful and more general. The collections of redefinitions gradually became system programs in their own right.''\endnote{\textit{Ibid.}}
\fi
\ifdefined\chs
理查德回忆,加入“宏”之后,各种创造接踵而来。他说:“大家都开始把各种常用命令的组合写成宏,然后把各自的宏互相分享,大家一起不断改进,再分享。这样,这些宏越来越强大,涵盖了很多常用操作。这些宏俨然成为了一套单独的系统软件\endnote{\textit{Ibid.}}。”
\fi
\ifdefined\eng
So many people found the macro innovations useful and had incorporated it into their own TECO programs that the TECO editor had become secondary to the macro mania it inspired. ``We started to categorize it mentally as a programming language rather than as an editor,'' Stallman says. Users were experiencing their own pleasure tweaking the software and trading new ideas.\endnote{\textit{Ibid.}}
\fi
\ifdefined\chs
越来越多的人开始使用宏,把各种宏加入到自己的TECO编辑器上。随着大家对宏的狂热,TECO作为编辑器的功能反而倒在其次了。理查德说:“我们开始意识到,TECO已经不仅仅是个编辑器,更是个编程语言。”用户不断改进自己的想法,不断交流分享,大家身在其中,自得其乐\endnote{\textit{Ibid.}}。
\fi
\ifdefined\eng
Two years after the explosion, the rate of innovation began to exhibit inconvenient side effects. The explosive growth had provided an exciting validation of the collaborative hacker approach, but it had also led to incompatibility. ``We had a Tower of Babel effect,'' says Guy Steele.
\fi
\ifdefined\chs
又过了两年,各种创新最后带来了一些麻烦。大家互相交流分享,使用的宏越来越多。每个人手头都有自己的一套宏,由此就引来了各种兼容性问题。盖·斯蒂尔说:“我们遇到了沟通障碍。”
\fi
\ifdefined\eng
The effect threatened to kill the spirit that had created it, Steele says. Hackers had designed ITS to facilitate programmers' ability to share knowledge and improve each other's work. That meant being able to sit down at another programmer's desk, open up a programmer's work and make comments and modifications directly within the software. ``Sometimes the easiest way to show somebody how to program or debug something was simply to sit down at the terminal and do it for them,'' explains Steele.
\fi
\ifdefined\chs
这种障碍阻碍了大家的交流,盖·斯蒂尔说。黑客们当年设计了ITS系统,其中一个很重要的设计原则,就是帮助程序员们分享知识,互相改进各自的工作。这就意味着,程序员可以坐到另外一个同事的电脑前,打开这个同事的程序代码,直接修改代码,或者加上几行注释。斯蒂尔解释说:“有些时候,要想教人怎么写程序,或者怎么调试某个程序,最好的办法就是坐在电脑前,实际演示给他们看。”
\fi
\ifdefined\eng
The macro feature, after its second year, began to foil this capability. In their eagerness to embrace the new full-screen capabilities, hackers had customized their versions of TECO to the point where a hacker sitting down at another hacker's terminal usually had to spend the first hour just figuring out what macro commands did what.
\fi
\ifdefined\chs
引入宏之后的第二年,这种做法变得越来越难。黑客们开始在自己的TECO编辑器里加入各种宏,不断扩展TECO的功能。这就导致你坐到一台电脑前,第一件事情是需要了解每个宏都是做什么的。
\fi
\ifdefined\eng
Frustrated, Steele took it upon himself to solve the problem. He gathered together the four different macro packages and began assembling a chart documenting the most useful macro commands. In the course of implementing the design specified by the chart, Steele says he attracted Stallman's attention.
\fi
\ifdefined\chs
一番受挫之后,盖·斯蒂尔决定着手解决这个问题。他收集到四套常用的宏,打算根据每套宏实现的功能,列出常用的功能,写成一份文档,并根据这四套宏,实现出一套符合这份文档的宏。在实现的过程中,盖·斯蒂尔的工作吸引了理查德的注意。
\fi
\ifdefined\eng
``He started looking over my shoulder, asking me what I was doing,'' recalls Steele.
\fi
\ifdefined\chs
盖·斯蒂尔回忆说:“他站在我身后,看着我的屏幕,问我在做什么。”
\fi
\ifdefined\eng
For Steele, a soft-spoken hacker who interacted with Stallman infrequently, the memory still sticks out. Looking over another hacker's shoulder while he worked was a common activity at the AI Lab. Stallman, the TECO maintainer at the lab, deemed Steele's work ``interesting'' and quickly set off to complete it.
\fi
\ifdefined\chs
盖·斯蒂尔是个说话温和的黑客,并没怎么和理查德打过交道。回忆起当时的情景,他依旧记忆犹新。在当时的人工智能实验室里,站在别人身后看看别人的工作,是个非常平常的举动。理查德,在当年是TECO的维护者。看到盖·斯蒂尔的工作,他觉得非常有趣,于是决定帮助他完善这个工作。
\fi
\ifdefined\eng
``As I like to say, I did the first 0.001 percent of the implementation, and Stallman did the rest,'' says Steele with a laugh.
\fi
\ifdefined\chs
说起这事,盖·斯蒂尔笑道:“我常跟人们这么说,我做了最初的百分之零点零零一的工作,理查德把剩下的都做了。”
\fi
\ifdefined\eng
The project's new name, Emacs, came courtesy of Stallman. Short for ``editing macros,'' it signified the evolutionary transcendence that had taken place during the macros explosion two years before. It also took advantage of a gap in the software programming lexicon. Noting a lack of programs on ITS starting with the letter ``E,'' Stallman chose Emacs, making it natural to reference the program with a single letter. Once again, the hacker lust for efficiency had left its mark.\endnote{\textit{Ibid.}}
\fi
\ifdefined\chs
这个项目的名字被称为Emacs,是理查德建议的名字。Emacs是Editing macros的缩写,意思是“宏编辑器”。它标志这宏出现之后的又一个进步。它也参考了当年各种软件的名字,理查德注意到,在ITS系统上,还没有哪个软件名是以E开头的。把它叫做Emacs,用户就可以自己在设置中把它叫做E,一个字母就能运行这个程序。这又得归咎到黑客简约的风格上了\endnote{\textit{Ibid.}}。
\fi
\ifdefined\eng
Of course, not everyone switched to Emacs, or not immediately. Users were free to continue maintaining and running their own TECO-based editors as before. But most found it preferable to switch to Emacs, especially since Emacs was designed to make it easy to replace or add some parts while using others unchanged.
\fi
\ifdefined\chs
当然,一开始,并不是所有人都转头使用Emacs。用户依旧可以继续使用他们以前的TECO编辑器。不过大多数人都觉得转用Emacs更加方便。Emacs有着更强的扩展性,用户可以按照自己的需求,轻松地替换或者增加某些功能。
\fi
\ifdefined\eng
``On the one hand, we were trying to make a uniform command set again; on the other hand, we wanted to keep it open ended, because the programmability was important,'' recalls Steele.
\fi
\ifdefined\chs
盖·斯蒂尔说:“一方面,我们试图创造一个统一的命令集。另一方面,我们还希望程序能有很强的扩展性,因为这一点至关重要。”
\fi
\ifdefined\eng
Stallman now faced another conundrum: if users made changes but didn't communicate those changes back to the rest of the community, the Tower of Babel effect would simply emerge in other places. Falling back on the hacker doctrine of sharing innovation, Stallman embedded a statement within the source code that set the terms of use. Users were free to modify and redistribute the code on the condition that they gave back all the extensions they made. Stallman called this ``joining the Emacs Commune.'' Just as TECO had become more than a simple editor, Emacs had become more than a simple software program. To Stallman, it was a social contract. In a 1981 memo documenting the project, Stallman spelled out the contract terms. ``EMACS,'' he wrote, ``was distributed on a basis of communal sharing, which means that all improvements must be given back to me to be incorporated and distributed.''\endnote{See Stallman (1979): \#SEC34.}
\fi
\ifdefined\chs
这个时候,理查德又遇到了一个难题:如果用户做出了修改,但是并不把这些修改分享出去,沟通障碍早晚会再次出现。本着黑客的分享精神,理查德在源代码里写上了使用条款。用户可以自由地修改和分发这个软件的代码,但必须把所有的改动都发回来。理查德把这称作“加入Emacs公社”。当年的TECO最后变得不仅仅是个编辑器,如今这个Emacs则变得不仅仅是个软件。对于理查德来说,这更是个社会契约。在1981年的一份备忘录上,理查德在Emacs这个项目下写道:“Emacs是以分享的形式发布的。对Emacs的各种修改,必须要发给我,以便加入到以后的版本中。”\endnote{参见理查德·斯托曼,人工智能实验室备忘录(1979年),《EMACS:可扩展,可定制的全屏编辑器》。本书的引文来自:http://www.gnu.org/software/emacs/emacs-paper.html}
\fi
\ifdefined\eng
The original Emacs ran only on the PDP-10 computer, but soon users of other computers wanted an Emacs to edit with. The explosive innovation continued throughout the decade, resulting in a host of Emacs-like programs with varying degrees of cross-compatibility. The Emacs Commune's rules did not apply to them, since their code was separate. A few cited their relation to Stallman's original Emacs with humorously recursive names: Sine (Sine is not Emacs), Eine (Eine is not Emacs), and Zwei (Zwei was Eine initially). A true Emacs had to provide user-programmability like the original; editors with similar keyword commands but without the user-programmability were called ``ersatz Emacs.'' One example was Mince (Mince is Not Complete Emacs).
\fi
\ifdefined\chs
Emacs原本只能运行在PDP-10上。不过很快,其他平台上的用户也希望能运行Emacs编辑器。之后十年,各种创造依旧继续。带来了各种类似Emacs的编辑器,运行在不同平台上。Emacs公社的规矩则不适用于这些编辑器上,因为它们完全是另外一套代码。这些编辑器中,有些在名字上就提及了理查德的Emacs编辑器。比如:Sine,全称Sine is not Emacs;Eine,全称Eine is not Emacs以及Zwei,全称Zwei was Eine initially。真正的类Emacs软件必须要提供用户可编程的扩展。一些Emacs的克隆软件只是使用了Emacs的快捷键,并没有提供扩展机制,这些一般被成为“伪Emacs”。其中一个例子就是Mine,全称Mine is Not Complete Emacs,意为“Mine不是一个完成的Emacs”。
\fi
\ifdefined\eng
While Stallman was developing Emacs in the AI Lab, there were other, unsettling developments elsewhere in the hacker community. Brian Reid's 1979 decision to embed ``time bombs'' in Scribe, making it possible for Unilogic to limit unpaid user access to the software, was a dark omen to Stallman. ``He considered it the most Nazi thing he ever saw in his life,'' recalls Reid. Despite going on to later Internet fame as the co-creator of the Usenet \textit{alt} hierarchy, Reid says he still has yet to live down that 1979 decision, at least in Stallman's eyes. ``He said that all software should be free and the prospect of charging money for software was a crime against humanity.''\endnote{In a 1996 interview with online magazine \textit{MEME}, Stallman cited Scribe's sale as irksome, but declined to mention Reid by name. ``The problem was nobody censured or punished this student for what he did,'' Stallman said. ``The result was other people got tempted to follow his example.'' See \textit{MEME} 2.04, \url{http://memex.org/meme2-04.html}.}
\fi
\ifdefined\chs
理查德在人工智能实验室开发Emacs的时候,黑客圈子里还有很多其他的开发,也干得热火朝天。正如第一章提及的那样,1979年,布莱恩·瑞德(Brian Reid)决定在Scribe里放入“定时炸弹”,这样就可以让没有付费的用户无法使用这个软件,以此让Unilogic公司获利。布莱恩的这个决定在理查德看来不是个好兆头。布莱恩回忆起理查德对此的看法,说:“他觉得,这简直就是法西斯行为。”布莱恩之后创立了Usenet新闻组上的alt分支,可每次提起理查德的指责,他依旧愤愤不平:“他说所有的软件都得免费,他觉得所有软件的收费行为都是违背人性的\endnote{理查德在1996年接受《MEME》杂志采访时,曾说Scribe的出售方式令人生厌。但他没有提及作者布莱恩·瑞德的名字。他说:“问题是没有人指责这个学生的行为,大家反而纷纷效仿。”参见《MEME杂志》2.04,http://memex.org/meme2-04.html}\endnote{译注:布莱恩此处对理查德的理念理解有误。理查德所说的是,所有软件必须是自由(free)的,而非免费的。然而英文中,自由和免费一次都是free。因此很多人都把理查德的思想误解为“软件不能收费”。实际上,理查德自己也曾出售过Emacs的拷贝。关于自由软件可以出售的观点,参见http://www.gnu.org/philosophy/selling.html}。”
\fi
\ifdefined\eng
Although Stallman had been powerless to head off Reid's sale, he did possess the ability to curtail other forms of behavior deemed contrary to the hacker ethos. As central source-code maintainer for the original Emacs, Stallman began to wield his power for political effect. During his final stages of conflict with the administrators at the Laboratory for Computer Science over password systems, Stallman initiated a software ``strike,'' refusing to send lab members the latest version of Emacs until they rejected the security system on the lab's computers.\endnote{See Steven Levy, \textit{Hackers} (Penguin USA [paperback], 1984): 419.} This was more gesture than sanction, since nothing could stop them from installing it themselves. But it got the point across: putting passwords on an ITS system would lead to condemnation and reaction.
\fi
\ifdefined\chs
虽然理查德无法阻止布莱恩给用户装上“定时炸弹”,可他还是有自己的一套法子,来遏制其他类似的行为。作为Emacs代码的主要维护者,理查德开始利用他的力量,来发起一轮政治影响。当时,为了去掉系统的登录密码,他正跟计算机系的机房管理员闹得不可开交。在冲突的关键时刻,他发起了一轮“软件抗议”:如果实验室的成员不反对系统登录密码,理查德就不给他们Emacs用\endnote{参见史蒂芬·李维(Steven Levy),《黑客》(1984年,美国企鹅出版社),第419页。}。理查德的这种做法,只是做出一个姿态。因为如果哪个人想用Emacs,他们还是可以自己动手安装的。理查德是想借此传达一个信息:如果你在ITS系统上使用密码,那么将会被人嫌弃,受人指责。
\fi
\ifdefined\eng
``A lot of people were angry with me, saying I was trying to hold them hostage or blackmail them, which in a sense I was,'' Stallman would later tell author Steven Levy. ``I was engaging in violence against them because I thought they were engaging in violence to everyone at large.''\endnote{\textit{Ibid.}}
\fi
\ifdefined\chs
在接受《黑客》一书作者史蒂芬·李维(Steven Levy)采访时,理查德回忆说:“很多人觉得我绑架了实验室的各位成员,我在勒索大家。从某种意义上说,我的确如此。因为我觉得那些管理员在用暴力威胁着每一个人,我只能以暴制暴\endnote{\textit{Ibid.}}。”
\fi
\ifdefined\eng
Over time, Emacs became a sales tool for the hacker ethic. The flexibility Stallman had built into the software not only encouraged collaboration, it demanded it. Users who didn't keep abreast of the latest developments in Emacs evolution or didn't contribute their contributions back to Stallman ran the risk of missing out on the latest breakthroughs. And the breakthroughs were many. Twenty years later, users of GNU Emacs (a second implementation started in 1984) have modified it for so many different uses -- using it as a spreadsheet, calculator, database, and web browser -- that later Emacs developers adopted an overflowing sink to represent its versatile functionality. ``That's the idea that we wanted to convey,'' says Stallman. ``The amount of stuff it has contained within it is both wonderful and awful at the same time.''
\fi
\ifdefined\chs
渐渐地,Emacs成了黑客文化的宣传品。Emacs有着极强的扩展性。这种扩展性增进了用户之间的交流合作。不仅如此,Emacs甚至要求这样的合作。如果用户不把自己的修改贡献出来,就很可能用不到最新的版本,用不上最新的功能。而每次更新,各种新功能可是不少。1984年,理查德又重写了Emacs,命名为GNU Emacs。如今,GNU Emacs的用户遍布全球,大家把它已经扩展得异常强大。用户可以把它用作电子表格,当作计算器,用作数据库,用作网络浏览器等等。以至于之后的Emacs开发者,都找不出什么词来概括Emacs的功能了。理查德说:“这就是我们想要传达的。Emacs里包含的东西既有用,又有趣。”
\fi
\ifdefined\eng
Stallman's AI Lab contemporaries are more charitable. Hal Abelson, an MIT grad student who worked with Sussman during the 1970s and would later assist Stallman as a charter board member of the Free Software Foundation, describes Emacs as ``an absolutely brilliant creation.'' In giving programmers a way to add new software libraries and features without messing up the system, Abelson says, Stallman paved the way for future large-scale collaborative software projects. ``Its structure was robust enough that you'd have people all over the world who were loosely collaborating [and] contributing to it,'' Abelson says. ``I don't know if that had been done before.''\endnote{In writing this chapter, I've elected to focus more on the social significance of Emacs than the software significance. To read more about the software side, I recommend Stallman's 1979 memo. I particularly recommend the section titled ``Research Through Development of Installed Tools'' (\#SEC27). Not only is it accessible to the nontechnical reader, it also sheds light on how closely intertwined Stallman's political philosophies are with his software-design philosophies. A sample excerpt follows:
\begin{quote}
EMACS could not have been reached by a process of careful design, because such processes arrive only at goals which are visible at the outset, and whose desirability is established on the bottom line at the outset. Neither I nor anyone else visualized an extensible editor until I had made one, nor appreciated its value until he had experienced it. EMACS exists because I felt free to make individually useful small improvements on a path whose end was not in sight.
\end{quote}}
\fi
\ifdefined\chs
和理查德同时代的人工智能实验室成员更是感谢理查德的贡献。哈尔·埃布尔森(Hal Abelson)曾是麻省理工学院的一名博士。七十年代,他曾在萨斯曼教授手下做过研究。之后,帮助理查德成立自由软件基金会,并成为董事会成员。形容起Emacs,他说:“那绝对是个精品佳作!”他描述,Emacs既可以让程序员不断添加新功能,还不会影响整个系统。理查德的经验,为未来大规模合作开发的软件工程铺平了道路。“它结构稳定,可以接受世界各地的人贡献代码。这种松散的大规模协作开发,恐怕要算前无古人了\endnote{写作本章时,我刻意把重点放到Emacs在社会上的影响里,而不是它的技术层面。如果想了解更多技术层面内容,参见理查德1979年在人工智能实验室的备忘录。尤其推荐《关于软件部署后的开发流程研究》一节(Research Through Development of Installed Tools)。非技术人员也可以读懂这一节的内容,而且它很好地同时反映出了理查德的技术观点和政治观点。以下为节选:“EMACS的开发并非借助于事前的精心设计。因为这样的流程最多只能达到一开始计划的结果,也只能满足一开始设定的需求。我在开发出这款可扩展的编辑器之前,并不能预见这种编辑器的存在,也并不能预估它的价值。EMACS之所以有今天,因为我在不断地改进它,并以此到达未曾想过的结果。”}。”
\fi
\ifdefined\eng
Guy Steele expresses similar admiration. Currently a research scientist for Sun Microsystems, he remembers Stallman primarily as a ``brilliant programmer with the ability to generate large quantities of relatively bug-free code.'' Although their personalities didn't exactly mesh, Steele and Stallman collaborated long enough for Steele to get a glimpse of Stallman's intense coding style. He recalls a notable episode in the late 1970s when the two programmers banded together to write the editor's ``pretty print'' feature. Originally conceived by Steele, pretty print was another keystroke-triggered feature that reformatted Emacs' source code so that it was both more readable and took up less space, further bolstering the program's WYSIWYG qualities. The feature was strategic enough to attract Stallman's active interest, and it wasn't long before Steele wrote that he and Stallman were planning an improved version.
\fi
\ifdefined\chs
盖·斯蒂尔(Guy Steele)对此也表示了钦佩。如今,盖·斯蒂尔已经是Sun公司的一名科研人员。回忆起理查德,他脑海中浮现的是“一位才华横溢的程序员,他可以瞬间写出大量几乎没有bug的代码。”尽管他和理查德性格不太合得来,可他们俩还是合作了一段时间。这段时间里,盖·斯蒂尔对理查德的那种暴风闪电般的编程风格印象深刻。他记得在七十年代末,他俩曾一起为Emacs添加“重排版”的功能。所谓“重排版”,最初是斯蒂尔的点子。它可以让用户使用快捷键,来为Emacs中编辑的代码重新排版,使得代码更加易读。这个功能更增强了软件“所见即所得”的质量。这个功能一下子吸引了理查德的注意,接着斯蒂尔和理查德决定一起开发这个功能的改进版。
\fi
\ifdefined\eng
``We sat down one morning,'' recalls Steele. ``I was at the keyboard, and he was at my elbow,'' says Steele. ``He was perfectly willing to let me type, but he was also telling me what to type.
\fi
\ifdefined\chs
斯蒂尔回忆:“我们早晨开始坐到电脑前。我敲键盘,他就坐我身边,告诉我怎么写。”
\fi
\ifdefined\eng
The programming session lasted 10 hours. Throughout that entire time, Steele says, neither he nor Stallman took a break or made any small talk. By the end of the session, they had managed to hack the pretty print source code to just under 100 lines. ``My fingers were on the keyboard the whole time,'' Steele recalls, ``but it felt like both of our ideas were flowing onto the screen. He told me what to type, and I typed it.''
\fi
\ifdefined\chs
俩人就这样,持续开发了10个小时。斯蒂尔说,这10个小时,他们俩人谁也没休息,甚至都没聊多余的话。到最后,他们把整个功能精简到一百多行代码。斯蒂尔回忆:“我当时手指就没离开键盘。我就觉得我俩的想法直接就流到了屏幕上。他告诉我写什么,我就按他说的写。”
\fi
\ifdefined\eng
The length of the session revealed itself when Steele finally left the AI Lab. Standing outside the building at 545 Tech Square, he was surprised to find himself surrounded by nighttime darkness. As a programmer, Steele was used to marathon coding sessions. Still, something about this session was different. Working with Stallman had forced Steele to block out all external stimuli and focus his entire mental energies on the task at hand. Looking back, Steele says he found the Stallman mind-meld both exhilarating and scary at the same time. ``My first thought afterward was [that] it was a great experience, very intense, and that I never wanted to do it again in my life.''
\fi
\ifdefined\chs
整整10个小时,光是这时间长度,就足够显示出理查德的编程风格了。斯蒂尔离开实验室,走出技术广场545号大楼。外面已是夜幕降临,他虽然早就习惯了这种马拉松式的编程,但这次却别有一番滋味。跟理查德一起工作,他必须要集中精力,心无旁鹜。如今回忆起来,斯蒂尔说,理查德的这份才智和精力,既让人振奋,又令人生畏。“我回想起来,第一感觉是觉得那是个很好的经历,流程紧凑,快速高效。再细想想,妈呀,我可不想再来一次。”
\fi
\theendnotes
\setcounter{endnote}{0}