走在 Elisp 的歧路上 · 前言

在一个春天的夜晚,很久也没怎么出门的我,偶然发现 Emacs Lisp 程序可以像脚本程序那般运行,而不单单是用于编写 Emacs 的配置文件或其插件。这个发现,让我以为无心中发现了一宗瑰奇的宝藏,触手可及,以前却懵懵不知。编程

关于 Lisp 语言的源远流长及其与世上最好的文本编辑器 Emacs 的莫逆之交,有不少书籍和文章早已给出了严肃的介绍,在此我就没必要再行考证和阐述了。没人发稿费,就不必凑字数。下面,我想大体总结一下为何我会以为能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏。编程语言

  • Emacs Lisp 是一门绝对合格的编程语言,具有着通用的编程语言应该具有的元素,能够编写在计算机上解释运行的程序。
  • Emacs Lisp 本质上是一种 Lisp 方言,天然继承了 Lisp 语言的一些特性。与那些更好的 Lisp 方言相比,Emacs Lisp 存在一些差距 1,却也无伤大雅,由于在通晓 Emacs Lisp 的基础上,再学习其余更好的 Lisp 方言,仅须要再理解寥寥几个新的概念,诸如续延(Continuation)、卫生宏(Hygienic macro)等。
  • Emacs Lisp 语言具有良好的跨平台运行特性,这由 Emacs 的跨平台性所决定。Emacs 可在 GNU/Linux,Windows,Mac OS 以及 FreeBSD 等系统上运行,这就意味着使用 Emacs Lisp 语言编写的程序可毫无障碍地这些系统中运行。
  • 因为 Emacs 自 版本 25 开始支持加载 C 语言编写的动态库,于是 Emacs Lisp 程序的性能瓶颈部分可基于 C 程序弥补。
  • Emacs Lisp 具有其余编程语言可能没有的一些特性,这个特性并不来自语言,而是来自 Emacs 自身。迄今为止,Emacs 依然称得上世上最好的文本编辑器,它在文本处理方面长期以来凝聚了众多智慧,而这些智慧早已积淀造成了一个庞大的 Emacs Lisp 代码库。这是否意味着,在我使用 Emacs Lisp 编写一个程序用于处理某种特定格式的文本时,有近乎取之不尽的代码可用呢?

诚然,Emacs Lisp 有一些先天不足 2。不过,对于编写一个即便庞大的文本处理程序而言,Emacs 自身的存在足以证实这些先天不足是次要矛盾。我所说的能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏,主要针对编写文本处理程序而言。编辑器

这份文档所讲述的,是我我的企图消费这宗宝藏的一些很小的尝试,只是这些尝试近似于 Emacs Lisp 教程或笔记的形式。我如今还不是 Emacs Lisp 专家。从此可能也不会是,我只是一个但愿 Emacs Lisp 能在生活中发挥一些做用的人。性能

在以后的章节里,我将像许多人那样,将 Emacs Lisp 简称为 Elisp,以略微减轻手指关节的劳损。学习


  1. https://www.emacswiki.org/ema...
  2. https://www.emacswiki.org/ema...
相关文章
相关标签/搜索