走在 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...
相關文章
相關標籤/搜索