在进行Lisp编程课程期间,我使用了Lispworks IDE试用版, 这是一个非常好的IDE,但仍然是试用版。 我搜索了一个新的IDE。 我看了这段视频https://www.youtube.com/watch?v=VnWVu8VVDbI。
他使用Slime sbcl和quicklisp在emacs上以通用Lisp进行编程。
我的问题是这怎么可能?emacs是否不带有自己的Lisp方言,即Emacs lisp,或者它们彼此分离?
答案 0 :(得分:7)
设置Emacs和SBCL可能会花费一些时间。 我强烈推荐您portacle-可以说lispbox的弟弟/弟弟。 Lispbox是为使用emacs的“开箱即用”环境而创建的,该环境使用了已安装的粘液模式的emacs,该模式易于与sbcl连接并安装了quicklisp(适用于Peter Seibel的“ Practical Common Lisp”的读者)-一种emacs-set-为Lisp升级(或从Lisp初学者编程器的角度来看,包括电池的emacs)。 我一直在寻找Lispbox的“更新”-尽管同时手动安装了sbcl和quicklisp和slime-实际上,我认为Lispbox网站应该链接并提示到portacle,因为这是Lispbox的最新版本-节省了我的时间。 Lisp社区应该传播有关运动的言论。 (两者都为您提供了现成的emacs,然后将其连接到sbcl并安装了quicklisp-Lisp的quicklisp就像Python的pip一样,是一个软件包管理器,您可以通过它从中央存储库中提取和安装Lisp软件包-或就像melpa for emacs lisp)。 (quicklisp位于其核心asdf中,这是一个旧的软件包管理器,但如今没有人使用asdf直接安装软件包,而是通过quicklisp来安装它。)
对于Windows用户,我强烈建议您使用lispstick(与Windows的当前portacle版本相反……希望他们对其进行修复)。作者还写了一个不错的book(2016年,但德语)。
为了更轻松地进入emacs
(这非常复杂,并且我也尝试了几次),我强烈建议您Derek Banas' video tutorial on emacs,这是我最好的入门级教程之一找到此主题。他为common lisp设计的教程也可能为您提供一个良好的开端。
我总结了一些在emacs中编程通用lisp时经常使用的键绑定(一组最小的键绑定)。这确实是最小的。谁发现更多,也可以给我更多小费。 Here is the link to a very minimal emacs/SLIME cheat sheet for lisp beginner programmers
如果您真的开始使用Lisp编程,Common Lisp HyperSpec
会有所帮助-我会说这是一个必要的工具-还有Edi Weitz发起的Lisp食谱页面以及他的有关Common Lisp食谱的书。
但是,由于Lisp与所有C
派生的语言都非常不同,因此我强烈建议您从sth开始,它可以向您进一步说明lisp是什么以及它如何工作。彼得·塞贝尔(Peter Seibel)的Practical Common Lisp
和康拉德·巴尔斯基(Conrad Barski)的Land of Lisp
的组合是我的起点。但是,尽管作者做得非常出色,但我认为仍然需要编写C语言派生的Lisp易于阅读和流畅的介绍。
顺便说一句,如果您发现vim
更易于使用,则有一种在emacs中使用vim快捷方式的好方法-邪恶模式-Spacemacs更好而更神奇除了vim
快捷键(它们非常特定的功能访问方式)之外,大多数快捷键都从按下空格键(因此名称为spacemacs
)开始。这是一个开源项目。
不幸的是,对于轻快的新手来说,没有像Portacle这样的电池随附的spacemacs。但这也许是我们中的一些人在不久的将来建立的:)。 Spacemacs太棒了!
对于emacs:我为初学者in my GitHubGist写下了emacs简约命令。
答案 1 :(得分:4)
Emacs是可扩展编辑器(可在Elisp中编写)。阅读其documentation。
它的slime-mode(在emacs方面用Elisp编写,在Lisp系统方面用Common Lisp编写)能够与Common Lisp实现交互。但是您需要安装它。阅读documentation of slime。某些Linux发行版正在打包史莱姆(例如Debian拥有一些slime
软件包)。
Emacs具有许多其他模式(即Elisp中提供的扩展),能够与其他各种编程语言实现和其他应用程序(shell,电子邮件,版本控制等)进行交互。
顺便说一句,Common Lisp HyperSpec是免费提供的。阅读。并且SBCL也是documented。
您不需要任何IDE即可使用SBCL (或Clisp或大多数Common Lisp实现...。)。您可以使用REPL(在emacs
内部或外部),也可以使用一些编辑器(例如emacs-甚至没有slime
-,vim,{ {3}},....)。当我使用SBCL尝试一些简单的代码时,我不会使用SLIME(只是REPL,也许是从某些编辑器复制/粘贴,然后编辑Lisp文件,然后gedit-在Lisp中输入)。 SLIME很方便,但是却可以避免。但是,使用一些能够匹配括号(并跳过lisp注释)的编辑器对您来说更容易。但是您可以编写一些Common Lisp程序-即使具有成千上万的行和数十个文件-甚至在Windows上使用load
都比在Windows上使用editor简化(在Linux上使用Leafpad或nano
)。您的编辑器不需要“知道” Lisp(例如,具有某种模式或某种语法变体),因为Lisp语法非常规范和简单。
请注意,编程语言是规范(在某些技术报告中,通常用英文-Notepad给出),不应与它的实现相混淆(例如,某些软件如SBCL或Clisp)。
我实际上用emacs编写了我的所有Lisp程序,但没有粘液。我开发了Lisp方言(HyperSpec)并实现了它-它是我放弃的免费软件,但是您仍然可以GCC MELT-使用emacs而不使用Slime。因此,即使要编写成千上万行的Lisp程序,Slime也不是必需的。史莱姆是您可以避免的奢侈品。 emacs的download绰绰有余(甚至可以编写包含数千个Common Lisp行的程序)。
PS。我在Common Lisp中编写的最大程序是GCC MELT的prebootstrap原始编译器,因为我Lisp-mode GCC MELT之后,我已经丢失了所有大程序(因为我不再需要它了)。 IIRC那东西-prebootstrap MELT-有成千上万行Common Lisp。 GCC MELT有超过120KLOC。
PPS。 如果您是新手,我实际上建议不要在Common Lisp中使用任何IDE 。仅使用REPL和一些编辑器(当然,还应使用良好的Common Lisp实现,例如SBCL)。将粘液留给Lisp专家处理。仅当您熟练使用Common Lisp(及其REPL)时才开始使用粘液。
答案 2 :(得分:3)
即使该问题已经有了一些好的答案,我还是想在这里自己添加一个答案,主要是提到Emacs中用于Common Lips开发的SLIME的绝佳替代方案。
SLY是SLIME的分支,并在其上进行了以下改进:
comint.el
company
(流行的(代码)完成程序包)一起使用NAMED-READTABLES
,macrostep.el
和quicklisp SLY跟踪SLIME的错误修正,其所有熟悉的功能(调试器,检查器,外部参照等)仍然可用,但具有更好的集成性。
在我看来,如今,SLY是Emacs下使用Common Lisp入门的最佳方法,因此,我鼓励人们进行检查。
答案 3 :(得分:2)
是的,Emacs是“通用Lisp编辑器”:)
我们仍然可以使用更多的编辑器:https://lispcookbook.github.io/cl-cookbook/editor-support.html尽管Atom和Sublime并没有强大的支持(即使没有交互式调试器,即使它正在为Atom开发)。 Lem是用Common Lisp编写的Common Lisp编辑器,还有其他模式(Go模式,目录模式等)。它存在于控制台中,并具有电子接口。
这是有关如何安装Lisp实现和Quicklisp的最新指南:https://lispcookbook.github.io/cl-cookbook/getting-started.html(对于Windows可能不完整)。
其他不错的Lisp资源: