CLISP,ECL和SBCL之间的主要区别是什么?

lor*_*age 19 clisp sbcl common-lisp ecl

我想做一些模拟,ACT-R我需要一个Common Lisp实现.我有三种Common Lisp可用的实现:(1) CLISP [1],(2) ECL [1](3) SBCL [1].正如您可能从链接中收集的那样,我已经在维基百科上阅读了所有这三个链接.但我想要一些有经验的用户的意见.更具体地说,我想知道:

(i) 这三种实现之间的主要区别是什么(例如:它们最擅长的是什么?它们中的任何一种仅用于特定目的,因此可能不适用于特定任务吗?)?

(ii)基于我将使用的事实ACT-R还是基于一般原因,是否有明显的选择?


由于这可以解释为一个主观问题我检查了我在这里可以问什么主题以及我应该避免询问哪些类型的问题?如果我读得正确,它不应该被视为禁果.

Mar*_*ars 16

我写了一个中等大小的应用程序并在SBCL,CCL,ECL,CLISP,ABCL和LispWorks中运行它. 对于我的应用程序,SBCL是最快的,并且它有一个非常好的调试器.对某些警告有点严格 - 你最终可能会以更加严格的方式进行编码,或者关闭一个或多个警告.

我同意Sylwester:如果可能,请写入标准,然后您可以在任何实现中运行您的代码.您将通过测试找出最适合您项目的方法.

由于SBCL如此积极地编译,偶尔调试器中的堆栈跟踪比我想要的信息量少.这可以通过参数控制,但我只是在其他一个实现中重新运行相同的代码.例如,我记得ABCL有一个信息丰富的堆栈跟踪.(它也很慢,但如果你想要真正的Common Lisp和Java互操作性,它是唯一的选择.)

Common Lisp的一个好处是有多少高质量的实现,其中大部分都是免费的.

对于非正式用途 - 例如学习Common Lisp,CCL或CLISP可能是比SBCL更好的选择.

我从未尝试使用ECL编译为C. 某些应用程序可能会在速度上超过SBCL.我不知道.

CLISP和LispWorks不会处理任意长的参数列表(除非在过去几年中已经修复了,但我对此表示怀疑).这对我的应用程序来说是一个问题,但对大多数代码来说都不是问题.

ACT-R不是来自卡内基梅隆吗?作者使用了什么?我的猜测是CMUCL或SBCL,它来自CMUCL.(我只是简单地尝试了CMUCL.它的解释器很慢,但我认为编译的代码非常快.我认为大多数人选择SBCL而不是CMUCL.)

(这个问题可能属于Programmers.SE.)

  • 我最近一直在为这个答案定期投票。我很高兴人们发现它很有用,而且投票总是很好,但我对自己好几年没有使用 Common Lisp 感到不舒服,所以我不知道我的评论对当前版本是否准确这些实现。 (2认同)

Vse*_*kin 7

通常,它SBCL是开源Lisps中的默认选择.它是可靠的,良好支持,生成快速代码,并提供超出标准要求(并发原语,分析等)的许多好东西.具有类似属性的另一个实现是CCL.

CLISP如果你不是工程师,或者你想快速向非工程师展示Lisp,那就更合适了.这是一个非常基本的实现,但很快就能运行并且用户友好.一个Lisp计算器:)

ECL的主要卖点是,它是嵌入的,也就是说,它是比较容易让一些C应用程序内的工作,就像一个web服务器等,这是怪才,谁想要Lisp和边界上探索解决一个不错的选择外面的世界.如果您不喜欢这种用例,我建议您不要尝试,特别是因为目前没有积极支持.

  • -1基本实现,lisp计算器?CLISP是相当成熟的实现.它比SBCL更便携.上次当我在Windows上测试SBCL时,它无法设置quicklisp(或者甚至可能在SLIME下工作......).虽然我在Linux下编程,但没有那么多人使用Linux.Viaweb是用CLISP编写的.就个人而言,我喜欢CLISP将事物编译为字节码,有时便携性比速度更有价值. (4认同)
  • 不幸的是,你们大多数人写的都是主观的,并且愿意讨论。从某些未知的ACT-R用户的角度来看,这些实际上都没有帮助。因此,除了Wikipedia文章外,提出这个问题的人声称已经阅读了很多信息。 (2认同)

Syl*_*ter 5

他们的名字,他们的错误和他们的非标准添加(使用它们会锁定您)

我将CLISP用作REPL,并在开发阶段(通常是SBCL)进行生产测试。我从未使用过的ECL。

我建议您使用多个实现来测试您的代码。