【发布时间】:2011-01-08 01:43:35
【问题描述】:
我最终想学习 Clojure,但我发现 Clojure 的学习资源对于没有经验的人来说是稀缺的......
我想知道从 Scheme(阅读 The Little Schemer 和 SICP)或其他 Lisp 变体开始是否有益。
我唯一的其他编程经验是使用 Java 和 Python(这非常少)。我最终想在业余时间学习 Clojure,因为我觉得它很有趣,而且我的大学课程使用 Java。
【问题讨论】:
我最终想学习 Clojure,但我发现 Clojure 的学习资源对于没有经验的人来说是稀缺的......
我想知道从 Scheme(阅读 The Little Schemer 和 SICP)或其他 Lisp 变体开始是否有益。
我唯一的其他编程经验是使用 Java 和 Python(这非常少)。我最终想在业余时间学习 Clojure,因为我觉得它很有趣,而且我的大学课程使用 Java。
【问题讨论】:
我从 Practical Common Lisp 这本书开始,并使用 Emacs & SLIME 和 Steel Bank Common Lisp。
【讨论】:
学习新事物几乎总是好的。而且,如果您只了解 Java 和 Python,那么学习一门函数式编程语言会让您大开眼界。
Scheme 是最简单的 LISP 变体之一,并且有据可查。加油!
【讨论】:
我会选择 Scheme。它简单、简约、极其一致,可以说它比 LISP 更实用(如果你想学习一个新的范式,这很好)。我还发现 Scheme IDE 比 LISP 的用户友好得多(PLT Scheme 是一个很好的)。
此外,Common Lisp 或 Scheme 上都有很多优秀的资源,所以这不应该是决定点。
【讨论】:
如果您刚刚起步,Stuart Halloway 的书是一个极好的资源。有几本正在制作中的新书可以早期形式下载(Clojure 的喜悦、Clojure in Action 等)。
我也强烈推荐邮件列表和 irc 频道。尤其是 irc 频道,那里有很多乐于助人的人,而且通常很快就能回答问题。
虽然学习 Scheme 肯定很有帮助(现在我已经使用 Clojure 一年了),但我也想说这对于学习和享受 Clojure 的乐趣是没有必要的。
【讨论】:
【讨论】:
我建议你从 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,这是一个很好的参考。
【讨论】:
实际上只有两种常见的变体,Scheme 和 Common Lisp。它们非常相似,都有多种实现方式,并且两者之间的切换很容易。如果你想写一个应用程序,我会推荐 CL,因为它有更高级的库。如果你想学习 FP 风格,就用 Scheme。
除了这里提到的书籍,我还推荐 Peter Norvig 的“人工智能编程范式:Common Lisp 中的案例研究”。
【讨论】:
我会选择 LFE,您学习的速度与您遇到的错误数量成正比。选择 LFE 将同时获得 Erlang 和 Lisp。
【讨论】:
我赞同 dnolen 的建议,即拿起 S. Halloway 的书(我买了,它很棒)并立即学习 Clojure。
不久前,我(部分)通过SICP 工作并且真的很挣扎。在那之后我发现 Clojure 非常简单,可能是因为我已经对 Scheme 有一点经验。不过,特别是对于已经熟悉 Java 的人,我想说直接跳入 Clojure 很酷。理由:
(cond (condition) (value) (condition) (value)) 而不是(cond ((condition) (value)) ((condition) (value)))
let 和 loop 等的参数列表和绑定在 [方括号] 而不是(括号)中。恕我直言,使函数定义更易于阅读。(defn)。所有人中的你们都应该欣赏这一点;)值得推荐的第一个教程是Moxley Stratton's Clojure Tutorial。还有一个巨大的SO discussion on Clojure tutorials 会产生很多链接。
Clojure Cheat Sheet 是我在 Clojure 中迈出第一步时发现的非常有用的东西。这解决了您大致知道要做什么但不知道要使用哪个功能的常见情况。人们会希望其他语言采用这一概念。找到可能满足您需求的函数后,您可以在 Clojure REPL 中使用 (doc <name>) 获取更多关于它的文档。
当然,您的里程可能会有所不同;但是到 Amazon 发布 Programming Clojure 时,我已经从 Web 上学到了足够多的 Clojure,这本书对我来说更像是“大局”的来源,而不是教程。但肯定比从那本书中学习 Clojure 编程做得更糟。
可能从以上内容可以看出我对 Clojure 充满热情。经过多年的 Java,我发现它令人耳目一新,并且强大到足以完成任何让我发痒的事情。我什至向该项目捐款 :)
冒着以后后悔的风险,我还通过电子邮件、Google Chat 或 Wave 提供(免费)Clojure 入门帮助和辅导。我的邮件地址应该很容易猜到。
【讨论】:
对于视觉/听觉学习者,我强烈推荐 Righ Hicky 在 blip.tv 上的视频系列
Clojure for java programmers 然后点击 REPL。该系列的其余部分自然而然地进行,并且可以真正使创意源源不断。 PCL(Practical Common Lisp)是一本令人兴奋的书,尽管其中一些并不真正适用于 clojure。我强烈推荐关于宏的章节。
【讨论】:
我在你的位置上,将我的注意力分散在 Scheme 和 Common Lisp 之间。现在回想起来,我认为(为了学习 Clojure,而不是个人发展)我会更好地专注于 Common Lisp,Practical Common Lisp 和 PG 的 On Lisp 。
现在有一些关于 Clojure 的实际书籍,您绝对应该选择其中一本。 Joy of Clojure 是一本很棒的书,4clojure.com 是练习使用 Clojure 解决难题的好方法。
【讨论】:
ANSI Common Lisp - OnLisp ANSI Common Lisp
【讨论】:
newLISP - 嗯...,因为它是现代的(也是唯一的 ??) 基于 LISP 的通用脚本语言? (我不计算 AutoLISP 等,因为它们是特定于域的脚本语言)。因此,如果您非常喜欢它,也许将来您会从窗口中删除 Python :-))
【讨论】: