为什么人们说"emacs is good for writing lisp program because it's written in emacs lisp"?



我可以想象用java编写的eclipse之类的ide非常适合编写java程序,因为工具和语言是紧密集成的。因此,如果有人说"emacs很适合编写emacs lisp程序",那么对我来说也是有道理的。

但是人们说emacs对所有的lisp方言都很好,好像所有的lisp方言和emacs都是紧密结合在一起的。不仅仅是emacs lisp,不是任何语言,不是任何语言使用repl,而是所有lisp方言。为什么?在emacs lisp中,是否有一些东西是所有lisp方言共享的,但在其他语言中却没有——包括所有使用repl的语言,这些东西是如此独特,以至于只有lisp方言才能从中受益?你能举几个例子吗?

您说得对,Emacs作为通用Lisp环境没有什么技术优势。但它也不是完全为零——因为Emacs提供了支持,使得解析大多数lisp很容易,因为它们的表面语法(s表达式)通常非常相似。但这仍然只是一个技术细节。

真正的原因是Emacs来自于Lisp之间差异很小的时代(在语法意义上,语义是另一个问题),所以它基本上是复杂的Lisp编辑环境的唯一选择。因此,它享受了几十年来Lisp用户使用它进行Lisp编辑的好处,因此它一直是它的优势之一——另一方面,很少Lisp用户选择其他编辑器,所以他们自然缺乏需求。(IIRC,直到不久之前,即使是vi克隆也只有基本的父级匹配。)

更重要的是,即使在这些日子里,因为阅读elisp对你的J Random Lisper来说更容易,所以他们仍然是发现扩展Emacs很容易的人群。对于Java,你也可以得出同样的结论;当然,Eclipse——两者都是非常可扩展的工具示例,因此在各自的社区中非常根深蒂固。

在执行代码时,对于大多数lisps(=除elisp外的所有lisps),工作是在子进程中完成的,因此从技术上讲,它与使用任何其他编辑器没有什么不同。

最新更新