在一个春天的夜晚,很久也没怎么出门的我,偶然发现 Emacs Lisp 程序可以像脚本程序那般运行,而不单单是用于编写 Emacs 的配置文件或其插件。这个发现,让我以为无心中发现了一宗瑰奇的宝藏,触手可及,以前却懵懵不知。编程
关于 Lisp 语言的源远流长及其与世上最好的文本编辑器 Emacs 的莫逆之交,有不少书籍和文章早已给出了严肃的介绍,在此我就没必要再行考证和阐述了。没人发稿费,就不必凑字数。下面,我想大体总结一下为何我会以为能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏。编程语言
- Emacs Lisp 是一门绝对合格的编程语言,具有着通用的编程语言应该具有的元素,能够编写在计算机上解释运行的程序。
- Emacs Lisp 本质上是一种 Lisp 方言,天然继承了 Lisp 语言的一些特性。与那些更好的 Lisp 方言相比,Emacs Lisp 存在一些差距 ,却也无伤大雅,由于在通晓 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 有一些先天不足 。不过,对于编写一个即便庞大的文本处理程序而言,Emacs 自身的存在足以证实这些先天不足是次要矛盾。我所说的能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏,主要针对编写文本处理程序而言。编辑器
这份文档所讲述的,是我我的企图消费这宗宝藏的一些很小的尝试,只是这些尝试近似于 Emacs Lisp 教程或笔记的形式。我如今还不是 Emacs Lisp 专家。从此可能也不会是,我只是一个但愿 Emacs Lisp 能在生活中发挥一些做用的人。性能
在以后的章节里,我将像许多人那样,将 Emacs Lisp 简称为 Elisp,以略微减轻手指关节的劳损。学习
- https://www.emacswiki.org/ema...
- https://www.emacswiki.org/ema...