把 Emacs Lisp 部署到生产环境是什么体验?

原地址:cdegroot comments on Do you use Emacs Lisp as a general purpose programming language?

不负责任翻译,由DeepL翻译,本人润色,使用本翻译造成任何理解误差,本人一概不负责

译文

90 年代初,在经历『Die Wende』[^1]和东西德统一后。我被派去做一些苦差,或者说是那些没 有人愿意做的工作。一个星期一的早上我被安排到 DASA 工厂报到(DASA 最初是德国航空 航天公司,后来是戴姆勒航空航天公司,现在是空中客车公司的一部分)。这个项目是 DASA 和惠普公司作为主承包商,用统一的系统替换两国的空管系统。所以我们有两个巨型 公司和一个政府合同,像我的雇主这样的 shop(译者注:保留未翻译) 得到一部分报酬丰 厚的工作。而这里面其实有两个 Emacs 的故事。

第一:那个周一的早上,我和我应该帮助的开发人员一起报到。他们在一个实验室里,周围 摆满了美妙的东西--HP/UX 上最新的 HP 工作站,还有一堆 HP 的顶级服务器,冰箱大小,售 价接近 7 位数。不过我被叫来的原因是:他们无法在系统上工作。因为他们是从另一个项目 中抽调出来的 VMS[^2] 的开发人员,他们的任务是在 VMS 上用 C 语言把整个系统的某些部分(我忘 了是哪一个)编码起来(这确实是个很恶心的想法,因为 C 语言对 VMS 的适应性不是很好,但 那是另外一回事)。总之,他们拿到了自己的工作站、手册,并被告知编辑器是 Vi,自求 多福。

我们现在的情况是是:十几个人在 Vi 中挣扎着编码。并不是他们笨,而是他们拥有的 VMS 编 辑器(是 TPU,如果我没记错的话,但这是很久以前的事了)的肌肉记忆确实不能很好地转 化为 Vi 的。

我回到家里(比办公室近),把所有的 GNU 源码装到 QIC 磁带上,回去后,开始了那些年 众所周知的基本操作:在某个厂商的 Unix 上编译 GNU 工具链,以便能够编译一些不错的 实用程序,包括 Emacs。GCC 花了最多的时间,你需要三四个编译阶段才能有一个可靠的编 译器。但一天后我就在 HP/UX 上编译了 Emacs,然后一切都好起来了。因为我在 VMS 上工 作 所以我编写了一个小的 init.el,尽可能地把快捷键映射到 VMS 的编辑器上 然后把它 推广到工作站上。经过简短的说明之后,这些开发人员几乎要冲上来拥抱我 :)。

几周后,我被叫到了我们的第二个办公室,他们的进度落后了,需要额外的人手。我们需要 在在 microVAXen 上的空管工作站在 VMS 上运行 4GL(出于我不知道的原因),但他们在 通过网络进行消息传递时遇到了困难--4GL 是面向终端的,不知道什么是网络,但空管消 息(比如从机场到机场或到 Eurocontrol[^3] 的飞机交接)需要进入本地消息路由器,再从那 里进入消息的目的地。我们这里所讨论的情景是『没有互联网』--没有 X.25 和租用线路, 因此没有互联网带来的便利。

好吧,我开始工作,我发现让 VMS 编码解码 TCP/IP 比让 HP/UX 编码解码 DECnet[^4] 更容易, 所以我做了这个设置,然后选择了当时最流行的技术『DCE』来做消息传递。因为我经常做 4GL 的 C 语言扩展,所以 VMS 那边几天就搞定了。然后他们让我去找负责实际消息路由器 的『Herr Doktor[^5]』某某谈。

在德国,一个『Herr Doktor』总是对的(这是他们的第十一条戒律,他们现在已经原谅了 摩西在记录戒律时因为石碑上的空间不够所以没把这条写下来)[^6]。这个人以前在 Symbolics 工作过,所以知道一种编程语言。Lisp. 因为 『复杂』(呵)的要求,他想用 Lisp 来编码消息路由器,但是 HP/UX 没有 Lisp(或者说预算中没有 Lisp),所以他被卡 住了。我告诉他 Emacs,把我的源码磁带和移植成功的工具给了他,也许这是个错误 ;-)。

一周后,我帮忙完成了 4GL UI,同时完成了消息协议--他给我打电话,相当高兴。他给 我看了代码--一页又一页的 Emacs Lisp,注释完全为零--『因为 Lisp 是自文档的』。 我很害怕,毕竟这是一个空中交通管制系统,但我不是『Herr Doktor』,所以我编写了 Emacs 的 DCE 原生代码部分,通过一些 hack 让 Emacs 在消息路由器服务器模式下无头启 动,最终得到了消息流。我搞定了代码交接,几天后开车回了家。据我所知,这段『自文档』 的代码被部署到生产环境了。所以至少在一段时间内,德国所有的空管消息路由都是通过 Emacs完成的。

小贴士:当政府『炮制』他们涉及安全性的关键系统的时候,不要试图深究其中。我有一段 时间坐飞机都不敢飞越德国上空……

脚注

  1. 在德语环境下指代1989年到1990年东德政治,经济和社会的转型,最终导致东西德的统一(东德转型与和平革命)。

  2. 全称『OpenVMS』,是 Digital Equipment Corporation 公司开发的一款类 Unix 操作系统。

  3. 全称『欧洲空中航行安全组织』,是一个总部位于比利时布鲁塞尔的负责处理欧洲航空交通管制的国际组织。

  4. 是 DEC 公司为旗下操作系统(如 OpenVMS)开发的多机互联工作的一套系统

  5. 『Herr』和『Doktor』均为德语中的敬语,意思分别为『先生』和『博士』

  6. 在圣经 《出埃及记》 19:1 - 20:17 中,先知摩西接收上帝的神谕,在石碑下写下十条戒律,称为『摩西十诫』,该戒律在基督教中有十分重要的地位。此处运用夸张的修辞手法讽刺对『Herr Doktor』的盲从。

4 个赞

讲真 TPU 用起来还真挺爽的/DEC 解体以后 OpenVMS 卖给 HP 了,现在归从 HP 分出来的 Hewlett Packard Enterprise

2 个赞

似乎和这个帖子重了:

1 个赞