【问题标题】:Clojure for a lisp illiterate [closed]一个lisp文盲的Clojure [关闭]
【发布时间】:2011-02-25 08:36:08
【问题描述】:

我是一名终生的面向对象程序员。我的工作主要是 Java 开发,但我有多种语言的经验。 Ruby 让我第一次真正体验到了函数式编程。我喜欢 Ruby 从函数范式中借鉴的特性,例如闭包和延续。最终,我毕业于 Scala。这是逐渐学习以实用的方式处理重要问题的好方法。

现在我对 Clojure 很感兴趣。我知道使它诱人的所有性感功能(软件事务内存、宏等),但我就是不习惯“用 lisp 思考”。我看过 Rich Hickey 针对 Java 程序员的截屏视频,但它们的目的是解释语言特性,而不是解决现实世界的问题。

我正在寻找任何可以让其他人更容易过渡的建议或资源。

【问题讨论】:

    标签: functional-programming lisp clojure


    【解决方案1】:

    如果您正在寻找“Lispy 思维”的介绍,我推荐Practical Common Lisp。这是一本很好的读物,恕我直言,非常适合来自非 lisp 背景的经验丰富的程序员。

    缺点是它针对的是 Common Lisp,而不是 Clojure;主要原因是 Clojure 的方法更加实用。您可能还想要一本 Clojure 特定的书。

    【讨论】:

      【解决方案2】:

      距我最初提出这个问题已有 11 个月了。我刚刚开始了一个新项目,以帮助初学者过渡到 clojure。它被称为 4clojure,它挑战您解决填空式交互问题。

      【讨论】:

      • 哇!考虑到 4clojure 在 clojure 初学者和大师中的成功,这是一篇史诗般的帖子,也是学习意愿的一个很好的例子。太棒了!
      • 我刚刚开始学习 Clojure,看到这篇文章对我来说是一个很大的启发!我使用另外,我喜欢 4clojure!我也在使用 clojure koans,发现它们很棒,以防有人感兴趣。
      • 这篇文章/答案是写出来的,剩下的就是历史了:)
      【解决方案3】:

      我建议您下载《The Joy of Clojure》的 MEAP 版本。我有,现在 MEAP 总共提供了 12 章。到目前为止,这是我读过的关于编程语言的最好的书。这 12 章足以让您开始使用 Clojure,一直到一些高级主题。当前的 MEAP(经常更新新章节)与ociweb Clojure tutorial、stackoverflow.com 和 freenode 上的#clojure IRC 频道相结合,我想你会没事的。

      虽然我同意 Programming Clojure 是对 Clojure 的一个很好的介绍,并且做得非常好,但我们不能否认它每周都变得越来越过时的事实。您必须记住 Programming Clojure 是为 Clojure 1.0 编写的。现在,我们正在快速接近 Clojure 1.2 的发布。例如,包含 defrecord 后,结构将被淘汰。

      【讨论】:

      • 我也有“Clojure 的喜悦”的 MEAP。我大约有 200 页,并且非常喜欢它。
      【解决方案4】:

      到目前为止,所有答案都很棒。我要补充:

      • Purely Functional Retrogames 是一个优秀系列,介绍如何以功能性、无副作用的方式设计老式电子游戏。如果您经历了这些并掌握了如何在没有副作用的情况下编写吃豆人,那么您将在很大程度上培养出解决许多/大多数其他问题所必需的思维方式。
      • Halloway 的 Programming Clojure 是对 Clojure 的最佳综合介绍,它提供了一些关于如何以函数式而非面向对象的方式思考问题的想法,尤其是蛇游戏示例。
      • Seibel 的Practical Common Lisp 是一本出色的实用指南,可帮助您从功能上解决实际问题,例如构建数据库。虽然是为 CL 而不是 Clojure 编写的,后者允许可变数据,但这些概念无需太多修改即可继承,并且可以从作者的网站免费在线获取全文。至少值得一看。

      【讨论】:

      【解决方案5】:

      我对 Lisp 的第一次介绍是:Peter Norvig 的人工智能编程范式。它是对 Common Lisp 的许多特性和函数式编程概念的非常易读和温和的介绍。

      直接从Clojure books 开始可能更适合您,因为Common Lisp 和Clojure 之间有多个differences,如果您想同时学习两者,可能会变得混乱。

      同时,尝试获得使用 Clojure REPL 的经验,做一些练习 like Project Euler,然后您可以与其他 Clojure 和命令式进行对比Java 解决方案。

      此外,如果您对 Clojure 编程和惯用风格有任何疑问,请随时与其他 Clojurian 讨论您的代码。有几个选项可以做到这一点,例如:Clojure on Google Groups、#clojure IRC channel on Freenode、Twitter 通过标签#clojure,当然还有Stackoverflow

      【讨论】:

      • Euler 推荐项目 +1 - 简单的小问题,但非常适合学习基本的语言结构
      【解决方案6】:

      我真的很喜欢 youtube 上的 Brian Twill's series of Clojure videos 作为对 clojure 一些想法的轻松介绍。他们不假设对 Lisp 或函数式编程语言有任何丰富的知识。

      就书籍而言,我同意 Isaac 的观点,即 Programming Clojure 是一个极好的资源。您还可以考虑一些即将出版的有关 clojure 的书籍:

      The Joy of Clojure

      Clojure in Action

      如果您现在购买,两者都可以在线抢先体验。另外我认为两者都有折扣 - 尝试在 clojure.org 上查找。

      Peter 和 Norman 提到的 Lisp 书籍可能是不错的选择(我喜欢 SICP,但没有阅读其他书籍)。但是,如果您刚刚开始,与 Clojure 的语法差异可能会有点令人沮丧。出于这个原因,我建议一开始就从 Clojure 特定的书籍开始。

      (已编辑以修复链接。)

      【讨论】:

        【解决方案7】:

        直接从 OOP 转到 Clojure,我只推荐 Stuart Halloway 的出色 Programming Clojure

        我喜欢它,它很好地涵盖了很多 Clo​​jure 以及在此过程中的一些函数式编程。

        Little Schemer 和 SICP 很棒,但它们与 Clojure 的相关性不高,如果您想学习的话。

        【讨论】:

        • +1。 Halloway 的书完美地融合了介绍和实用性,符合我的口味。我在很大程度上讨厌 Lisps,但喜欢 Clojure 主要是因为 Programming Clojure。
        【解决方案8】:

        对于初学者,How to Design Programs 会让您像 Lisper 一样思考。如果你不耐烦,那就快点 :-) Paul Graham 的《On Lisp》是另一本好书,作为奖励,它现在可以在线免费获得。

        我不关心计算机程序的结构和解释;如果您已经了解 Lisp 或 Scheme,那将是一本非常有智慧的绝技,而且非常令人满意——但我和我的学生还没有发现它是一本值得学习的好书。 The Little Schemer 有很多很好的信息,如果你能接受它的辩证组织和可爱派风格的话。我不能。

        【讨论】:

          猜你喜欢
          • 2011-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-20
          • 1970-01-01
          • 1970-01-01
          • 2012-03-25
          • 2015-06-04
          相关资源
          最近更新 更多