Emacs 迎来 50 周年

Hacker News Top 新闻

摘要

EMACS 迎来诞生 50 周年,其历史可追溯至 1976 年麻省理工学院人工智能实验室的 TECO 和 Control-R,并对自由软件运动及 GNU/Linux 产生了持久影响。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/28 16:27

# EMACS 迎来 50 周年 来源:https://www.technologyreview.com/2026/10/20/1145399/emacs-turns-50 过去的编程体验与我们今天所熟悉的大不相同。事实上,最早的程序员根本不编写代码;1946 年,在宾夕法尼亚大学参与 ENIAC(世界上最早的计算机之一)工作的六位女性,是通过手动配置开关、电缆和插线板来编程的。 几年后,麻省理工学院的工程师通过将代码打孔记录在纸带上,再将其载入计算机内存,为 Whirlwind 计算机编程——这使它成为最早的“存储程序”计算机之一。后来,他们和其他人开始使用穿孔卡片,每张卡片对应一行代码。 到了 20 世纪 60 年代初,使用交互式计算机的程序员可以借助“行编辑器”,在电传打字机上输入代码——这是一种体积庞大、噪声很大、集键盘和打印机于一体的机器。他们每次输入一行代码,工作成果会保存在一个不断旋转、体积堪比现代洗衣机的硬盘上。但当时还没有如今人们熟悉的全屏文本编辑器,程序员无法在显示屏上同时查看和修改多行代码。 EMACS 是最早的这类工具之一,今年迎来 50 周年,至今仍被广泛使用。 1976 年,EMACS 首次在麻省理工学院人工智能实验室的早期视频终端上运行,但其核心理念如此强大,以至于在随后的几十年中,人们为许多操作系统重写了它。苹果甚至曾将它随 Mac OS X 一同发布。此外,围绕 EMACS 形成的软件共享社区,也推动了现代自由软件运动和 GNU/Linux 操作系统的诞生。 EMACS 的起源可以追溯到 TECO 文本编辑器(最初是“Tape Editor and Corrector”,即“纸带编辑与校正器”)。1962 年,1965 届校友丹·墨菲为麻省理工学院具有开创性的 PDP-1 计算机创建了这个编辑器。该程序的命令都是大写字母:用户输入“I”来插入文本,输入“D”来删除一个字符,等等。当存储介质从纸带转变为大型共享磁盘上的文件后,“TECO”中的“T”就变成了“Text”(文本)的缩写。随着时间推移,TECO 发展成了一门完整的语言,程序员可以用它创建称为“宏”的新命令,用于编辑代码。 1971 年秋,1976 届校友卡尔·米克尔森创建了 Control-R,这是一个 TECO 附加程序,利用了带视频显示屏的“玻璃电传打字机”终端。Control-R 会立即在屏幕上显示正在编辑的文件所发生的变化;程序员不再需要重新打印每一行才能看到修改结果。它的不足在于:显示屏一次只能显示几行代码。 > **“经验丰富、技术娴熟的用户发现,EMACS 比此前任何一种编辑方式都好用得多。”** 伯纳德·S·格林伯格,1974 届理学硕士 随后,在 1976 年,麻省理工学院人工智能实验室的研究员理查德·M·斯托曼访问斯坦福大学人工智能实验室时,看到了一个名为 E 的全屏编辑器。受到启发后,他回到麻省理工学院,着手改进 Control-R。他对程序底层结构所做的最重要修改是:每个按键在按下时都会运行其对应的宏,使 Control-R 更容易定制。实验室里的黑客们热情地投入到斯托曼的代码中,开始修改和添加命令。 这给小盖伊·斯蒂尔(1977 届理学硕士、1980 届博士)带来了一个问题。当时还是实验室研究生的斯蒂尔,经常需要帮助其他实验室成员调试程序。“我注意到,帮助使用这些程序包的人,比帮助直接使用 TECO 的人困难得多,”他回忆道。“后来,我想到可以尝试协调大家达成共识,制定一套所有人都同意使用的标准 Control-R 命令。” 实验室的另一位成员、1975 届校友戴维·穆恩也来帮忙。斯托曼同样参与其中,最终接手了这项工作。他们共同制定了一套标准命令,利用了实验室许多早期键盘上的 Meta 键:Meta-F 将光标向前移动一个单词,Meta-B 将光标向后移动一个单词,等等。他们将成果命名为 EMACS,是“Editor Macros”或“Editing Macros”(编辑器宏或编辑宏)的缩写。“我的目标并不是打造一个出色的新文本编辑器,”斯蒂尔说。“我当时是想解决一个社群问题。” 然而,EMACS *确实是*一个出色的新文本编辑器。根据伯纳德·S·格林伯格(1974 届理学硕士)撰写的一篇历史回顾,Control-R 用起来可能有些棘手,而“完全没有技术经验”的 EMACS 用户,也能“在几分钟到一个小时内”学会编辑信件、电子邮件,甚至程序。与此同时,“经验丰富、技术娴熟的用户发现,EMACS 比此前任何一种编辑方式都好用得多。” 斯托曼开始向任何寄给他一盘磁带和一个已付邮资的回邮信封的人分发 EMACS。“EMACS 不收取任何费用;作为交换,你将加入 EMACS 软件共享公社,”他在 1981 年的手册中写道。“加入的条件是,你必须将自己对 EMACS 所做的任何改进反馈回来。” 桌上的黑色活页夹Multics 操作系统的编程手册。在霍尼韦尔工作期间,伯纳德·S·格林伯格为该系统编写了自己的 EMACS 版本。这个版本非常出色,霍尼韦尔将其商业化了。麻省理工学院博物馆 与此同时,格林伯格决定为 Multics 编写自己的版本。Multics 是一种早期操作系统,当时已归他的雇主霍尼韦尔所有。格林伯格的 EMACS 在 1980 年国际霍尼韦尔软件大会上获得一等奖,随后霍尼韦尔开始销售它。销售 EMACS 版本的并不只有霍尼韦尔:卡内基梅隆大学毕业生詹姆斯·阿瑟·高斯林也开发了一个版本,并最终将其作为商业产品出售;他后来还领导了 Java 编程语言的开发。 这种从免费软件转向付费软件的变化,最终促使斯托曼发起一个项目,旨在创建一个可由用户自由共享和改进的操作系统。他以贝尔实验室日益流行的 Unix 操作系统为范本,开展了这项名为 GNU 计划的工作。“GNU”是“GNU’s Not Unix”(GNU 不是 Unix)的缩写,意指它与 Unix 不同,将是自由软件。 该项目的第一个主要应用程序是 GNU Emacs(此时名称已改用小写形式)。当时距离 GNU/Linux 操作系统问世还有数年,因此,尽管该项目的目标是创建一个完全自由的操作系统,GNU Emacs 最初却运行在 Unix 上。后来,它能够在多种操作系统上运行,包括 Linux 和其他基于 Unix 的系统。2001 年,苹果推出其基于 Unix 的操作系统的首个版本 Mac OS X 时,也将 GNU Emacs 包含在内。 苹果在 2019 年停止随系统提供 GNU Emacs,但仍保留了一个名为 mg(“Micro GNU Emacs”,即“微型 GNU Emacs”)的程序。虽然它支持大多数 EMACS 命令,但缺少集成的编程语言,因此有人称它为“仿制 EMACS”。 与此同时,苹果操作系统的许多部分仍暗中支持 EMACS 命令。键盘上没有 Meta 键,但 Control-Option-B 可以向后移动一个单词,Control-Option-F 则可以向前移动一个单词。

相似文章

还有人用 Emacs 吗?

Lobsters Hottest

作者对与 Emacs 数十年关系的个人反思,包括转向 VSCode 和 IntelliJ,最终因其独特功能回归 Emacs。

玩转Emacs

Lobsters Hottest

作者分享了个人使用Emacs的经历,强调其有趣且高度可定制的特性,包括ASCII艺术功能以及它如何融入日常计算工作中。

Human Emacs

Lobsters Hottest

Human Emacs 是 GNU Emacs 的一个分支,它承诺绝不接受 LLM 生成的贡献,以抗议可能允许此类贡献的 GNU 政策。该项目旨在保留人工编写的软件开发传统。

Emacs 在流行文化中的出现

Hacker News Top

一篇博客文章,记录了 Emacs 文本编辑器在电影和电视中的出现,包括《社交网络》、《创:战纪》、《北极冲击》和《硅谷》。

Zilog Z80 迎来50周年

Lobsters Hottest

Zilog Z80 微处理器庆祝其50周年,回顾其对早期个人电脑、家用电脑和工业应用的深远影响,以及个人轶事和历史背景。