在一個春天的夜晚,很久也沒怎麼出門的我,偶然發現 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...