我是CS专业的第二年,我只参加了C课程(第一门课程,然后是多态数据结构课程),C ++(OOP焦点),MIPS汇编和编译课程。我在夏天在WinForms和C#工作过。我通过Little Schemer工作,我真的很想学习某种LISP。
Emacs是我的首选编辑--Emacs LISP应该是一个很好的起点。
除了自定义emacs之外,我还可以在哪里使用emacs LISP?根据{{3}},几乎不可能用elisp代码创建可执行文件。有什么其他限制吗?
我应该学习Scheme还是Common Lisp?
答案 0 :(得分:11)
Emacs是一个文本编辑器。 Emacs Lisp是一种文本编辑语言。
今天elisp的尖峰 - IMO - 是ERC,emacs IRC客户端和org-mode,一个非常漂亮的组织系统。还有一个emacs的电子邮件客户端。
因此,对于构建文本编辑插件,我认为你不能击败elisp / emacs。
对于实际的独立应用程序开发,Common Lisp可能是您最好的选择。我赞成CLISP实现,但SBCL也非常受欢迎。有很多Lisp实现。最近曾有人开玩笑说有更多的Lisp编译器比使用Lisp的公司更多。 :-o
答案 1 :(得分:5)
正如其他人所说,Emacs lisp包含许多用于构建文本编辑器的原语。
那就是说,它仍然是lisp,并且使用lisp(Emacs,常见或方案)变得舒适是完全相同的。
如果您想使用它们,可以使用common lisp package访问许多常见的lisp宏。
如果您感兴趣,可以使用Emacs lisp编写shell脚本(请参阅this question)。如果要连接到其他正在运行的进程(参见comint),那么劣质进程处理非常有用。
找到您想要处理的项目,然后让您的决定从中流出。如果Emacs lisp适合,请使用它,如果常见的lisp运行良好,请使用它。
答案 2 :(得分:4)
这当然是主观的,但我认为学习Common Lisp或(标准)Scheme通常更有用,只是因为你不会局限于一个编译器。您很难预见到您可能想要对代码执行的所有操作,那么为什么要将自己锁定到一个实现?
答案 3 :(得分:4)
听起来你正在寻找学习一个口齿不清。因为这个计划经常被推荐,你说你正在读The Little Schemer。
原来是PLT Scheme的PLT Racket是一个非常好的计划开发和学习环境。 PLT Scheme最初的主要焦点是教学,从Scheme到Racket的重命名是一个不好的双关语,但是旨在表明该系统也是成熟的,足以实现高效的“现实世界”使用。
答案 4 :(得分:3)
Emacs Lisp更像是一种特定于Emacs环境的脚本语言,如果您想要在掌握Emacs或希望编写扩展时想要与Stallman竞争,那将非常有用。
Common Lisp是Lisp的事实标准。 Scheme更具教学意义,主要是因为它与着名的MIT类和书(SICP)相关联,尽管它本身很强大。
然而,它们是不同的。有些方面,Scheme是最小的计算机语言之一(就标准库而言)。语言定义大约有六页。 Common Lisp是最大的计算机语言之一。还有更有趣的例子。几年前,我正在玩一种支持内联C和Python代码的Lisp方言,以及导入和使用C和Python对象并直接调用它们的函数。然而,它似乎已经逐渐消失,因为我在Google上找不到它的引用。
答案 5 :(得分:3)
如果你有兴趣学习一些Lisp,我会推荐鸡计划(http://www.call-cc.org)。它有非常好的文档,是积极开发的,可以在各种平台上运行,并且有一个很棒的扩展系统叫做'eggs',它包含很多用于actaul编码的库,这个库没有直接指定。
另一方面,emacs是学习emacs lisp的一个很好的开发环境,这对脚本和(显然)自定义emacs非常有用。只有C-h f,C-h v和C-h A之类的函数和变量的文档使得开发变得更容易;一旦你学会了elisp多年来创建的一些比较模糊的命名约定。