Emacs 迎来 50 周年
编程过去的体验与我们今天所知的截然不同。事实上,第一批程序员根本没有编写代码;在 1946 年,六位在宾夕法尼亚大学工作的女性在世界上第一台计算机之一 ENIAC 上工作,是通过物理配置开关、电缆和插头板来完成的。几年后,麻省理工学院的工程师通过在纸带上打孔输入代码来编程 Whirlwind,然后将其加载到计算机的内存中——使其成为最早的“存储程序”机器之一。后来,他们和其他人转向了打孔卡,每行代码一个。到 1960 年代初,拥有交互式计算机的程序员可以使用“行编辑器”在打字机上输入代码——这些大型、嘈杂的键盘和打印机机器。他们每次输入一行代码,工作将保存在一个如现代洗衣机大小的旋转硬盘上。但那时还没有现在熟悉的全屏文本编辑器,这些编辑器允许程序员在显示屏上同时查看和修改多行代码。今年,第一款这样的工具 EMACS 迎来了 50 周年,至今仍被广泛使用。EMACS 于 1976 年在麻省理工大学人工智能实验室的早期视频终端上运行,但其核心概念强大到在接下来的几十年里被重写到许多操作系统上。苹果甚至在 Mac OS X 中分发了它。除此之外,围绕 EMACS 开展的软件共享社区帮助推动了现代自由软件运动和 GNU/Linux 操作系统的兴起。EMACS 的根源可以追溯到丹·墨菲(Dan Murphy)于 1962 年为麻省理工学院的开创性 PDP-1 计算机创建的 TECO 文本编辑器(原名“磁带编辑器和校正器”)。该程序的命令是大写字母:用户输入“I”以插入文本,输入“D”以删除字符,等等。当磁带作为存储介质被大型共享磁盘上的文件取代时,“TECO”中的“T”就代表了“文本”。随着时间的推移,TECO 成为程序员可以用来创建新命令(称为宏)的完整语言,用于编辑他们的代码。在 1971 年秋季,卡尔·米克尔森(Carl Mikkelsen)创建了 Control-R,这是 TECO 的一个附加程序,利用了带有视频显示的“玻璃电传打字机”终端。Control-R 立即在屏幕上显示正在编辑的文件的更改;程序员不再需要重新打印每一行以查看更改。缺点是:显示器一次只能显示几行代码。“有经验且复杂的用户发现 EMACS 比任何之前的编辑形式更易于使用。”伯纳德·S·格林伯格(Bernard S. Greenberg),SM ’74 然后,在 1976 年,麻省理工学院人工智能实验室的研究员理查德·M·斯托尔曼(Richard M. Stallman)在访问斯坦福大学人工智能实验室时看到了全屏编辑器 E。受到启发,他回到麻省理工学院,着手改进 Control-R。对程序底层结构的最重要更改是:每个按键被按下时运行其自己的宏,使得 Control-R 更易于定制。实验室的黑客们热衷于斯托尔曼的代码,开始更改和添加命令。这给小盖·斯蒂尔(Guy Steele Jr.)带来了麻烦。他在实验室中是一名研究生,经常需要帮助其他实验室成员调试他们的程序。“我注意到,帮助使用这些软件包而不是直接使用 TECO 的人要难得多,”他回忆道。“最终,我想到尝试在一个所有人都可以达成共识的 Control-R 命令标准集上进行协商。”大卫·穆恩(David Moon),实验室的另一名成员,提供了帮助。斯托尔曼也参与其中,最终他接管了。于是,团队分配了一套标准命令,利用了实验室早期键盘上的 Meta 键:Meta-F 将光标向前移动一个单词,Meta-B 将光标向后移动一个单词,等等。他们将结果命名为 EMACS,意为“编辑宏”。“我的目标不是构建一个伟大的新文本编辑器,”斯蒂尔说。“我只是想解决一个社会问题。”尽管如此,EMACS 仍然是一个伟大的新文本编辑器。根据伯纳德·S·格林伯格的历史,EMACS 用户“完全没有技术经验”也可以在“几分钟或一个小时内”学会编辑信件、电子邮件甚至程序。与此同时,“有经验且复杂的用户发现 EMACS 比任何之前的编辑形式更易于使用。”斯托尔曼开始将 EMACS 分发给任何寄给他磁带和邮资已付回邮信封的人。“EMACS 不需要任何费用;相反,您是在加入 EMACS 软件共享公社,”他在 1981 年的手册中写道。“会员的条件是您必须将任何对 EMACS 的改进发回。”在为 Multics 操作系统编写的编程手册中。伯纳德·S·格林伯格在霍尼威尔工作时为该系统编写了自己的 EMACS 版本。它非常优秀,以至于霍尼威尔将其商业化。
阅读全文 →本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡