2010-01-22 49 views
20

我最终要学习Clojure的,但我发现学习资源的Clojure是稀缺的小经验的人...Lisp变体学习的任何建议?

我知道这将是有益的,开始与计划(读The Little SchemerSICP)或其他一些Lisp变体。我只有其他编程经验是与Java和Python(这是非常简单的)。我最终希望在我休学的时候学习Clojure,因为我觉得它很吸引人,而我的大学课程使用Java。

回答

7

我从“Practical Common Lisp”一书开始,在Steel Bank Common Lisp中使用Emacs & SLIME。

+1

如果您决定从PCL开始,您可能对S. Halloway的移植感兴趣,并将其移植到所有编程练习中到Clojure:http://blog.thinkrelevance.com/2008/9/16/pcl-clojure – 2010-01-22 13:04:31

+0

我对Java的所有东西都有一个非理性的过敏。我会坚持使用SBCL,尽管我一直在考虑ECL,所以我可以制作独立的可执行文件。 – Demosthenex 2010-01-22 13:39:08

+0

去图,我已经把批发移到了Racket,因为我可以制作可执行文件。 – Demosthenex 2011-05-17 21:03:49

1

学习新东西几乎总是好的。如果你只知道Java和Python,那么学习一种函数式编程语言将会扩展你的想法。

Scheme是最简单的LISP变体之一,它有很好的文档记录。去吧!

9

我会和Scheme一起去的。它简单,简约,非常一致,可以说它比LISP更有用(如果你想学习一个新的范例,这很好)。我还发现Scheme IDE比LISP更方便用户使用(PLT Scheme是个不错的选择)。

另外,在Common Lisp或Scheme上有很多优秀的资源,所以不应该是决定点。

+2

我学会了Scheme之后发现CL看起来很丑陋:) – leppie 2010-01-22 04:54:47

+0

是的,我也学会了Scheme。与CL相比,它很漂亮。 CL也有奇怪的名字。 – 2012-05-31 17:38:45

15

如果你刚刚开始,Stuart Halloway的书是一个很好的资源。作品中有几本新书可供下载(Clojure的喜悦,Clojure in Action等)。

另外我强烈推荐邮件列表以及irc频道。特别是irc频道,那里有很多有帮助的人,问题通常很快得到解答。

虽然学习Scheme很有帮助(现在我已经和Clojure玩了一年),但我也会说这对于学习和使用Clojure很有必要。

+0

谢谢我会牢记这一点,可能会首先考虑计划,试着抓住FP – defn 2010-01-22 05:27:47

+4

@defn,如果你有计划,我建议SICP。请记住,Scheme对FP的要求不是很严格,所以除非你考虑到了这一点,否则这对你的Clojure没有任何帮助。不幸的是,SICP很长(很好玩),所以它非常迂回。 如果你想获得FP更快的掌握检查以下内容: http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html 我也一直在寻找到哈斯克尔。 Rich Hickey从那里采取了很多伟大的想法,所以我衷心推荐这个:http://learnyouahaskell.com/ – dnolen 2010-01-22 06:36:20

+0

我同意这个建议。如果你最终想学习Clojure,那么就直接和Halloway一起去吧 - 这非常方便。话虽如此,如果您是来自主流编码背景的SICP和The Little Schemer&c会打动您的思想,但这肯定不是先决条件 - 您可以在进入Clojure后无障碍地获得它。Little Schemer无论如何都是关于递归的,所以它不会对Clojure有所帮助,除非可能帮助你理解“不这样做”的策略者建议。 – 2010-01-23 21:39:53

9
+0

如果您决定从PCL开始,您可能对S. Halloway的练习感兴趣,将所有编程练习移植到Clojure:http://blog.thinkrelevance.com/2008/9/16/pcl-clojure – 2010-01-22 13:03:23

3

我建议你先从Scheme开始,然后转向Common Lisp,因为Scheme更简单。由于您是Lisp的新手,Dorai Sitaram将会为您提供一个不错的出发点Teach yourself Scheme in Fixnum Days。一旦您熟悉了该语言的基础知识,就可以开始使用SICP。

对于Common Lisp,您可以遵循相似的路径:从简单的基于教程的方法开始,轻松编写小程序,然后阅读将教会您高级概念的书。我建议以下书籍来学习Common Lisp。请按照给定顺序阅读:COMMON LISP: An Interactive Approach(Stuart C. Shapiro),Successful Lisp(David B. Lamkins),Practical Common Lisp(Peter Seibel)和On Lisp(Paul Graham)。

Paul Graham也写了ANSI Common Lisp,这是一个很好的参考。

1

实际上只有两种常见变体,Scheme和Common Lisp。它们非常相似,都有各种各样的实现,并且两者之间的切换很容易。如果你想写一个应用程序,我会建议CL因为优秀的库。如果你想学习FP风格,请和Scheme一起学习。

除了这里提到的书籍,我还建议Peter Norvig编写的“人工智能程序设计范例:Common Lisp案例研究”。

+1

nowadays I 'd大概上课Clojure作为一个常见的变种太... – mikera 2011-02-22 13:00:11

0

我会和LFE一起去学习,你学到的速度与你所遇到的错误数量成正比。选择LFE将同时为您提供Erlang和Lisp。

+0

不知道其他人,但它不是直接明显的LFE是Lisp调味爱尔兰:http://metajack.im/2009/01/09/lisp-flavored-erlang/ – 2010-01-22 13:06:03

+0

谢谢,你是对的。 – Flinkman 2010-01-23 00:20:42

8

我第二次dnolen推荐抓住S.Wallayay的书(我买了它,它很棒),并立即学习Clojure。

我工作的方式(部分)通过SICP一段时间后,真的很挣扎。之后我发现Clojure令人愉快地简单,可能是因为我已经有了一些Scheme的经验。尽管如此,特别是对于已经熟悉Java的人来说,我可以说跳进Clojure很酷。理由:

  • 您可以方便地访问整个Java API以及为Java编写的整个库的主体;例如,我最近为Clojure程序构建了一个Swing GUI,并使用Apache HTTP组件来进行一些Web争夺。
  • 的Clojure试图大于其他的Lisp少“lispy”:在点情况是:
    • 减少“不必要的”括号:例如
      (cond (condition) (value) (condition) (value))而不是
      (cond ((condition) (value)) ((condition) (value)))
    • 使用的一些有意义的地方比其他括号的东西;例如参数列表和letloop等的绑定在[方括号]中,而不是(括号)。使函数定义更易于阅读恕我直言。
    • 该列表不是唯一的数据结构。有很好的整合
      • [载体](随机访问像阵列)和
      • {包含HashMap};
        这些让生活变得更加轻松,尤其是如果你习惯于使用Java。
  • 函数用于定义功能是(defn)。你所有的人都应该明白这一点;)

推荐值得的第一个教程是Moxley Stratton's Clojure Tutorial。还有一个巨大的SO discussion on Clojure tutorials,产生了很多链接。

我在Clojure的第一步中找到了非常有用的东西,那就是Clojure Cheat Sheet。这解决了您大致了解您想要执行的操作的常见情况,但不涉及使用哪种功能。人们希望其他语言会采用这个概念。在为您的需求找到可能的功能后,您可以在Clojure REPL中使用(doc <name>)获取更多文档。

当然,您的里程可能会有所不同;但到亚马逊时代,我已经从Web上学到了足够多的Clojure,这本书更像是一本“全景图”,而不是一本教程。但肯定会比从书中学习Clojure编程更糟糕。


可能从上面可以明显看出,我对Clojure充满热情。我发现它经过多年的Java后显得与众不同,而且足够强大,可以完成任何让我痒痒的事情。我甚至捐赠给了这个项目:)

后来我有后悔的风险,我还提供(免费)开始通过电子邮件,谷歌聊天或Wave开始Clojure协助和辅导。我的邮箱地址应该很容易猜到。

+2

同样值得注意的是,Chris Houser和Fogus正在撰写一本专门解决人们在Clojure中思考问题的书。它现在可通过Manning Early Access Preview获得,并将于今年秋季发布。 – Rayne 2010-01-22 17:40:28

0

对于视觉/ AUDO学习者,我强烈建议更换右击Hicky影集上blip.tv
Clojure for java programmers,然后只需点击REPL。该系列的其余部分自然而然地可以真正实现创意。 PCL(Practical Common Lisp)是一本令人兴奋的书,虽然其中有些并不适用于clojure。我强烈推荐关于宏的章节。

1

我在你的位置,并将我的注意力分散在Scheme和Common Lisp之间。现在回想起来,我认为(为了学习Clojure,而不是个人发展),我宁愿将注意力放在Common Lisp上,Practical Common Lisp和PG的On Lisp

现在有实际的书籍专注于Clojure,你应该一直与其中之一。 Clojure的快乐是一本很棒的书,而4clojure.com是一个用Clojure解决难题的好方法。

1

newLISP - 嗯...,因为它是现代(和唯一?)为基础的LISP通用脚本语言? (我不计算AutoLISP等,因为它们是特定于域的脚本语言)。因此,如果您非常喜欢它,也许将来您会通过窗口放弃Python :-)