Programming languages Scheme还是CommonLisp?

Programming languages Scheme还是CommonLisp?,programming-languages,lisp,scheme,common-lisp,Programming Languages,Lisp,Scheme,Common Lisp,我是一名中级程序员,决定学习CommonLisp或scheme。我的问题很简单,你会选择哪一个?我不在乎语法的难度,只在乎语言本身的能力、灵活性和其他方面。另外,我应该选择公共lisp或scheme的哪种实现?谢谢 公共lisp更有用,但scheme更干净。主要归结到这一点。我喜欢更实用、更巴洛克、更尖锐的编程语言,所以我选择了Common Lisp 我使用GNU clisp,但我正在考虑改用SBCL,因为它注重效率。我选择Scheme是因为它是我们所教的语言。到目前为止,这本书读起来很有趣。我

我是一名中级程序员,决定学习CommonLisp或scheme。我的问题很简单,你会选择哪一个?我不在乎语法的难度,只在乎语言本身的能力、灵活性和其他方面。另外,我应该选择公共lisp或scheme的哪种实现?谢谢

公共lisp更有用,但scheme更干净。主要归结到这一点。

我喜欢更实用、更巴洛克、更尖锐的编程语言,所以我选择了Common Lisp


我使用GNU clisp,但我正在考虑改用SBCL,因为它注重效率。

我选择Scheme是因为它是我们所教的语言。到目前为止,这本书读起来很有趣。

我的印象是:Common Lisp更适合完成任务,Scheme更适合教育和娱乐。我更喜欢SBCL实现。Scheme,我不知道。

如果您想要强大和灵活性,请使用Common Lisp

如果你想要干净和简单,你可以选择Scheme


到目前为止,我对SBCL很满意。

就像很多事情一样,这取决于你想做什么

记住,如果您现在选择一个,并不妨碍您以后更改。事实上,我发现从了解一个小计划到学习大量Clojure非常容易

如果您只是想学习、使用Lisp,甚至是构建中等复杂的程序,我认为Scheme可能是更好的选择。它有一个更干净、更简洁(更小)的标准库,并且有很多面向学习者的资源(也不是说没有CL)

如果你想拥有成吨的库(很多都写得很好)的原始功能和一个标准库(作为CL实现的标准)的工具包,那么这是你最好的选择

或者,我建议。这是一门相对较新的语言(<5年),但它有很多优点。它是为并发性而构建的,有大量的原语,如果需要状态,可以轻松编写状态安全程序。还有很多其他的好处,标准图书馆

它也在JVM上,所以如果您使用Java,您可以访问所有库,如果您需要它们中的任何一个,而且JVM提供的原始速度就在您的指尖上

然而,它是一种新的语言,有一个新的(但非常友好的!)社区。如果你只是想在口齿不清的情况下,我认为Scheme是你最好的选择。如果你想把事情做完,我的偏好和我的爱是Clojure


编辑老实说,这三种方法你都不会出错。一个可能更好,这取决于你想做什么,我向几乎所有人推荐Clojure

>我通常这样看待:普通LISP是以C++为Python的方案。使用普通的Lisp和C++,你可以得到大量的工具和大量的能量,基本上可以自由漫游。另一方面,在Scheme中,更多的是关注简单性,而你被赋予的上吊绳索也少了一点

和C++和Python一样,有一种想法,一个是真实的,长大的项目,另一种是一种玩具语言来玩弄或创造一次性脚本,即使在大多数情况下,“玩具”是足够好的,无论你需要做什么。 若你们想看看这个方案,我推荐。这不是严格的标准方案,但本质上是相同的,是“含电池”的分销。

这是一个旧的;)Emacs还是vi?KDE还是侏儒?红色还是白色

两者最大的区别在于,Scheme倾向于关注函数式编程;一些作者强调使用CommonLisp进行函数式编程,比如PaulGraham,如果我编写CommonLisp,我会遵循他们的建议

我倾向于选择这个方案,因为它对我来说更有意义。我发现Scheme社区,特别是围绕自由软件实现的社区,更加关注自由软件。想想看,如果它对你很重要。与流行的观点相反,CommonLisp是一种非常流行的语言,但它大多是在封闭的公司大门后使用的。这是我远离CommonLisp的一个重要因素:当社区没有那么开放时,你就不会在帮助和库中找到那么多

至于实现,如果您是GNU/Linux用户,我建议您使用Guile。其他实现远远超出了GNU意识的主流;我喜欢GNU社区,所以Guile是我最好的选择。此外,Guile拥有我发现的默认安装中包含的最好的库集(考虑到与其他受访者不同,我对Clojure一无所知)


我看到其他一些受访者重复着古老的咒语“如果你想完成某件事,请使用Common Lisp;如果你想学习,请使用Scheme”。这在SICP时代可能是正确的,但我认为现在不是这样。Scheme的一个好的实现,比如Guile,有很多可用的库,有很多好的用例,表明你可以用它完成很多事情。

Scheme与Common Lisp具有同等或更大的功能,但它没有那么多的支持或绑定。我会用通俗的口齿不清。至于执行情况呢?我已经在slime/swank中使用sbcl有一段时间了,它非常好而且很快。Slime真的很不错。

如果您想要编写实用的代码,和/或想要从一个实现到另一个实现的良好可移植性,请使用Common Lisp。目前有11个实施方案正在积极维护中

不同的实现具有不同的优势。如果您想要一个免费的、开源的,Clozure Common Lisp(CCL)(不要与“Clojure”混淆!)和Steel Bank Common Lisp(SBCL)是很好的通用实现。也有商业实现,