【问题标题】:What are the main differences between CLISP, ECL, and SBCL?CLISP、ECL 和 SBCL 之间的主要区别是什么?
【发布时间】:2014-08-02 06:28:44
【问题描述】:

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

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

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


因为这可能被解释为一个主观问题 我检查了What topics can I ask about hereWhat types of questions should I avoid asking?,如果我没看错的话,它不应该是禁果。

【问题讨论】:

  • Stackoverflow 最适合解决实际的编程问题。对于一般工具比较来说不太好。如果你想知道哪些 Lisps 最适合 ACT-R,最好阅读 ACT-R 文档和/或向 ACT-R 寻求支持。稍加研究,您就可以找到它。维基百科不相关。
  • 好的。我基于line“[...] 提出这个问题的决定,但是如果您的问题通常涵盖... [...] 程序员常用的软件工具;并且是一个独特的实用、可回答的问题到软件开发......那么你来对地方问你的问题了!”我认为它实用且可回答,但您可能是对的。
  • @lord.garbage 虽然这个是一个有趣的问题,但我同意 Rainer 的观点,即它可能跑题了。它是关于编程工具的,因此可能会在聊天中进行很好的讨论,但它可能过于广泛,如果你问诸如“他们最擅长什么”之类的问题,你很容易进入“主要基于意见的“境界。这在软件推荐 beta 站点、comp.lang.lisp、#lisp 或 lispforum 上可能会更好。
  • @lord.garbage 但是,我会提到几年前我使用过 ACT-R,我记得,我们在 LispWorks 和 MCL 下运行没有太多麻烦(MCL 现在已经失效,但 ACT -R 可能适用于 Closure CL)。
  • @JoshuaTaylor:这些问题也可以在reddit.com/r/lisp 上提问。但 ACL-R 的具体问题最好在 ACT-R 邮件列表中提出:act-r.psy.cmu.edu/mailing-list

标签: common-lisp sbcl clisp ecl


【解决方案1】:

我编写了一个中等大小的应用程序,并在 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 派生的 CMUCL 或 SBCL。 (我只是简单地尝试了 CMUCL。它的解释器很慢,但我认为编译后的代码很快。但是我认为大多数人选择 SBCL 而不是 CMUCL。)

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

【讨论】:

  • 我最近经常收到这个答案的支持。我很高兴人们发现它很有用,并且点赞总是很好,但我对我已经好几年没有使用 Common Lisp 感到不舒服了,所以我不知道我的评论对于当前版本是否准确这些实现。
【解决方案2】:

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

CLISP 更适合你不是工程师,或者你想快速向非工程师展示 Lisp。这是一个非常基本的实现,但可以快速运行且用户友好。一个 Lisp 计算器 :)

ECL 的主要卖点是它是可嵌入的,也就是说,它很容易在一些 C 应用程序中工作,比如 web 服务器等。对于想要探索解决方案的极客来说,这是一个不错的选择Lisp 与外界的边界。如果您对此类用例不感兴趣,我不建议您尝试它,尤其是目前它还没有得到积极支持。

【讨论】:

  • 不幸的是,你们中的大多数人写的都是主观的,可以讨论。从某些我们不知道其要求的 ACT-R 用户的角度来看,这些都没有实际帮助。因此,除了提出此问题的人声称已阅读的 Wikipedia 文章之外,上面添加的信息并不多。
  • @RainerJoswig 在某种程度上你是对的,尽管这里列出了一些客观事实,例如可用性/缺乏支持或并发功能
  • -1 基本实现,lisp 计算器? CLISP是相当成熟的实现。它也比 SBCL 更便携。上次我在 Windows 上测试 SBCL 时,它无法设置 quicklisp(甚至可能在 SLIME 下工作......)。虽然我在 Linux 下编程还可以,但使用 Linux 的人并不多。 Viaweb 是用 CLISP 编写的。就个人而言,我喜欢 CLISP 将内容编译为字节码,有时可移植性比速度更有价值。
  • @mark 好吧,SBCL 应该可以在 Windows 上正常工作(线程支持已经完全合并了一段时间)。不过我不确定,因为我没有在那里使用它。说到 CLISP,你可以在 Windows 上以多线程模式运行 Hunchentoot 吗?那将是对其成熟度的真正考验。我想说的是,现在 SBCL 至少具有同样的便携性。另外,Viaweb 是十年前写的,从那时起很多事情都发生了变化……
【解决方案3】:

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

我在开发期间使用 CLISP 作为 REPL 和测试,通常在生产中使用 SBCL。 ECL 我没用过。

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

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2015-08-06
    • 2011-03-06
    • 2013-12-23
    • 2017-04-28
    • 2011-04-14
    • 2010-09-17
    • 2021-11-30
    相关资源
    最近更新 更多