当前位置:  开发笔记 > 编程语言 > 正文

我应该学习哪种Lisp方言?

如何解决《我应该学习哪种Lisp方言?》经验,为你挑选了6个好方法。

我知道有一些不同的Lisp方言.在决定学习Lisp将是一种新的智力体验之后,我想知道要学习哪种Lisp方言,以及为什么.

有没有比其他人更受欢迎的?他们中的任何一个是否更"完整",如更好地记录和支持?这种方言的优点和缺点是什么?



1> Curt J. Samp..:

您希望在简洁性和清洁度,有吸引力的功能以及允许您编写有趣且有用的软件(自己)以及作为学习工具的平台之间寻求平衡.(这最后会让你继续学习更长时间.)这里有一些可能性:

    方案.可能是所有方言中最干净的.毫无疑问,为什么The Little Schemer被从LISP翻译成Scheme.第五个方案标准规范R5RS本身就是一种很好的教育方式; 它可能是我读过的最好的语言和图书馆规范,也是最短的,相当全面的.该PLT的计划(现在的球拍)平台包括一个相当体面的解释器和编译器,是很好的脚本,也具有一定的可视化工具,使得它非常适合学习.

    Common Lisp.可能是最便携和最全面的变体,如果您想要编写商业软件等内容,这很可能是您想要的.该标准定义了大量的库,除此之外还有更多的库,它有CLOS,它可能会教你更多关于OO的知识,而不是任何OO语言,并且一些编译器非常好.缺点包括Scheme没有的一些瑕疵(例如为引用函数的变量设置一个单独的命名空间),而不是那么干净和简单(就像任何必须有扩展并且必须做出妥协的情况一样)对于现实世界中的大型应用程序而言,没有卫生的宏,并且强调递归比Scheme少得多.

    Clojure的.这在JVM上运行,这可能会为Java开发人员提供支持.它有一些瑕疵(例如,你必须明确要求尾部调用优化,但如果将TCO添加到JVM,这可能会改变一天).宏虽然不卫生,但确实有一些功能可以帮助您避免变量捕获,因此您可以捕获变量(如果您真的想要),同时运行意外的风险比CL少.您可以轻松访问所有Java库; 这对于"真实世界"的代码来说可能是一件好事,而在学习方面则毫无意义.它有一组用于持久数据结构的库和对STM的支持,从并发的角度来看它非常有趣; 如果您有兴趣了解有关并发和并行编程的新方法的更多信息,这可能是您最好的选择.看起来好像Clojure可以像Java一样用于大型生产应用程序,因为它有能力做你在生产应用程序中做的"丑陋的东西",你不应该这样做,也不要做当你在学习的时候.

    Emacs Lisp.就LISP而言,这不是更好的例子之一.其最大的缺点之一是动态范围,但还有很多其他缺陷.但是,如果您是Emacs用户,这可能是您可以学习的最强大的工具,可以改进您对编辑器的使用.除了如何扩展Emacs之外,你从学习Emacs Lisp中学到了多少,对我来说是一个开放的问题; 我不知道Emacs Lisp中是否经常使用诸如高阶函数之类的有趣技术.

2018年更新

自从我写这篇文章已经差不多十年了,Lisp系列语言现在似乎在一般程序员意识中获得了巨大的吸引力.其中大部分内容似乎与Clojure有关,Clojure本身不仅成为Lisp的恰当单独方言,引入了许多自己的好主意,而且现在还有一个针对JavaScript的几乎完全相同的版本,并启发了许多其他Lisps定位其他平台.例如,Hy以CPython AST和字节码为目标,首先瞄准与Python的互操作性,但在"有疑问时"使用Clojure的想法.(虽然从最新的提交中,后者可能会有所改变.)

这给您的决策过程带来的巨大变化是,您还应该查看可用的Lisps或Lisp类语言,并与您已经使用的语言或平台进行互操作,无论是Perl,Ruby,Erlang,Go甚至是微控制器上的C++.


拥有单独的命名空间不是一个瑕疵,它只是一个不同的设计决策.请记住,Scheme中还有其他几个命名空间,所以争论的对抗Lisp-6而不是Lisp-5.除了我可以在CL中调用列表"列表"和汽车"汽车"的便利性之外,它的宏系统更加实用和有用,因为编译器不会轻易混淆事物.
Curt:我认为Clojure是最便携的,因为它在Java VM上运行.

2> J. Polfer..:

我会说Scheme,完全是因为Little Schemer,这是我曾经尝试阅读过的最令人兴奋但最难写的书之一.


不要忘记SICP!http://mitpress.mit.edu/sicp/.这是经典阅读.
_The Little Scheper_之前有两三个版本的The Little Lisper_作为翻译出来.

3> Leslie P. Po..:

我可以在SBCL上推荐Common Lisp .这种组合快速,强大,成熟且记录良好.



4> dnolen..:

此外,Clojure在这些日子里获得了大量的关注,并且有充分的理由.出色的数据结构,非常好的并发支持(在这方面使Scheme和CL变得羞耻),以及一个伟大的社区.它也相对简单,CL至少和C++一样复杂.

这并不是说我不喜欢CL或Scheme.我和SICP​​学习了Scheme.CL让我去了Clojure.这一切都取决于我的目标.如果你想学习一个非常实用的Lisp,请去Clojure.否则CL或Scheme都很棒.


CL已经发展并且正在通过许多非常有用的库进化.1994年,基本语言已经比当今所有"现代"语言更强大.
自1994年以来,编程语言格局发生了变化,我不知道CL标准将如何改变/发展以适应自那时以来学到的东西.世界正在向前发展,据我所知,CL正站着不动.我喜欢CL,Clojure有一些方法可以接近它的力量,但我不知道CL将如何发展 - 如果你要使用标准化语言,那么进化路径必须明显.没有它,语言很可能不是一个实际的选择.

5> jrockway..:

我更喜欢CL,因为我喜欢面向对象的编程,而CLOS是最好的对象系统.


说到CL,我会推荐ClozureCL或SBCL.两者都是开源的,文档齐全的,成熟的,多平台的,并提供重要的非标准功能,如多线程.

6> jinsungy..:

我在学校学习了Scheme.这是一次很棒的学习经历,我永远不会忘记函数式编程的基础知识.只要您了解其有用性的核心 - 无状态lambda演算,您可能选择哪个版本的LISP并不重要.

这是一篇关于为什么MIT在其入门编程课程中从Scheme切换到Python的有趣文章.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有