【问题标题】:What's the best way to learn LISP? [closed]学习 LISP 的最佳方法是什么? [关闭]
【发布时间】:2010-09-28 18:06:01
【问题描述】:

我用 Python、PHP、Java 和 C 编程已经有几年或几年了,我刚刚读完 Hackers and Painters,所以我很想试试 LISP!

我理解它与我所知道的完全不同,而且这并不容易。我还认为(如果我错了,请纠正我)围绕 LISP 的社区和开发较少。所以我的问题是:学习 LISP 的最佳方法是什么?

我不介意买书或花点时间。我只是不想浪费它。

“最终”的想法是使用 LISP 进行 Web 开发,我知道这并不常见,所以...我知道在选择第一本书或教程并花大量时间做某事之前计划好我的学习这可能不是最好的方法!

谢谢大家的回答!

编辑: 我读了 Practical Common Lisp 并且是:...长,难,有趣,肯定让我在 Lisp 中滚动,之后我读了这个小计划,它很短,很有趣并且非常适合我的整体编程。所以我的建议是先阅读小计划者,然后(几个小时,值得一读)如果你认为 lisp(或计划或任何方言)不是你要找的东西,你仍然会玩得很开心递归的新思维方式!

【问题讨论】:

  • Common Lisp:一种交互式方法。 Stuart Shapiro 的旧书(1992 年)。曾经只是死树,但近年来可用in electronic form
  • Common LISPCraft 是 Robert Wilensky 的一本有趣的书,虽然很老。我有一份 1986 年的硬拷贝。

标签: lisp scheme common-lisp


【解决方案1】:

尝试阅读 Peter Seibel 的 Practical Common Lisp

【讨论】:

  • 我想我在我的校园里看到了那本书……所以我现在就去拿!
  • 不要忘记 REPL!我没有使用我学到的关于 LISP 的知识,但它让我成为了一个在所有其他语言方面都更好的程序员。
  • 强烈推荐,这是我们在 AI 课上用来教我们项目 LISP 的书。
  • DFectuoso - 它不仅仅是一个关于这本书的链接,它这本书。开始在线阅读本书
  • 是的,我知道,但我不喜欢在显示器上阅读......无论如何,我选择这个作为答案,因为我开始阅读这本书,它很好(我读了一半,然后读得不好小计划者,当我完成这两个 =0 时会编辑这个)
【解决方案2】:

这是一个很难回答的问题……我认为这完全取决于你的学习方式。

我在我的人工智能中学习了 LISP。和大学里的专家系统课程,但这就是我学习的方式......我不是一个很好的书学习者,我更喜欢有人在课堂上向我解释。

LISP 绝对是一门独特的语言,如果您习惯于传统的 C、Java、PHP 编程,它需要全新的思路。

祝你好运!

【讨论】:

    【解决方案3】:

    我喜欢阅读Practical Common LISPANSI Common LISP

    On LISP 看起来很有趣,但 190 美元的一本书似乎有点贵。

    【讨论】:

    • “On Lisp”可从作者的网站免费获得。
    • 这里是免费下载 On Lisp 的链接。 Link
    【解决方案4】:

    我不知道 Lisp 有什么特别之处使它不同于学习任何其他语言。您只需要开始使用它并试用它的功能即可。

    一种选择可能是尝试简单的project

    另一个特定于 Lisp 的选项是编写一个 Emacs 扩展来帮助您完成日常工作。

    【讨论】:

      【解决方案5】:

      您可能希望从 The Little Schemer 开始作为热身。这不是一本关于编写生产 Lisp 程序的实用书,但它是一本学习如何在 Lisp 中思考的好书。

      【讨论】:

      • 这似乎是一个很好的快速阅读开始! TY
      • 我倾向于不同意。是的,深入研究它可能是学习 Lisp 的最快方法,但它也最有可能让人们望而却步。 PCL 的优势在于,经验丰富的程序可以从第一天开始使用 Lisp,而不仅仅是被熟记
      【解决方案6】:

      我个人最喜欢的是 Abelson & Sussman Structure and Interpretation of Computer Programs。 它使用 Scheme,这是一种很好的 Lisp 方言。

      如果你喜欢更实用的方法,也许你应该选择一些 Lisp 框架进行网页设计 (我不知道这样的野兽是否存在)然后直接跳进去。

      【讨论】:

      • Paul Graham 有一个名为 arc 的 lisp Web 框架。
      • 我相信 Arc 是它自己的 Lisp 方言,而不仅仅是一个框架。 paulgraham.com/arc.html
      【解决方案7】:

      我发现阅读SICP 这本书真的帮助了我学习。我使用 Steel Bank Common Lisp (SBCL) 并取得了不错的成功。

      祝你好运

      【讨论】:

      • 谢谢,我今天要挑几本书,明天很早就开始了!
      • 请注意,SBCL 是针对 Common LISP 的,而这本书是关于 Scheme 的。我还没有完整地阅读它,但我认为它仍然可以对学习 Common LISP 有很大帮助。您只需要在 Common LISP 中找到等价物。
      【解决方案8】:

      我推荐 Project Euler 作为小问题的绝佳来源,您可以使用它来自学任何新的编程语言。

      【讨论】:

      • 我已经是 Project Euler 的优秀参与者,所以是的,我在那里度过的时间将练习 LISP(一旦我学会了如何做一些事情)
      【解决方案9】:

      麻省理工学院以 DIVX 和 MPEG 格式提供了完整的 LISP 课程。我强烈推荐它。

      http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/

      【讨论】:

      • 这些讲座是基于他们的教科书《计算机程序的结构和解释》。
      • 我发现 DivX 视频的质量与 MPEG 视频相似,尽管它们要小得多。节省带宽和磁盘空间。
      • 要节省更多磁盘空间,请转至link 并搜索“结构和解释”(使用引号)。
      • 我正在浏览视频 SICP。他们使用哪种方言?他们没有提到方言,他们只是称之为“LISP”......
      • @priestc 我知道这个问题是 4 年前提出的,但只是为了说清楚。他们正在使用“方案”。
      【解决方案10】:

      对于网络开发,您可能想看看hunchentoot,一个用通用 lisp 编写的网络服务器。

      【讨论】:

      • 你知道,看到所有围绕 lisp 的 web 服务器和框架都是面向 web 的......有零设计(css 甚至内联样式),这非常令人难过
      【解决方案11】:

      Paul Graham 的 Ansi Common Lisp 是一本好书。

      我认为它可能已经绝版,所以最好通过亚马逊获得它。 我读了大学二年级的“自然语言处理”课程的书。 我们必须用 LISP 编写程序项目,所以我需要快速学习 Lisp。

      这本书对我帮助很大。

      【讨论】:

        【解决方案12】:

        这里有几个选项。首先,Scheme 和 Common Lisp 在相当深的方面(比如范围界定)是相当不同的。你应该选择一个开始并坚持一段时间。我是 Common Lisp 的粉丝,但这可能是 vi-vs-EMACS 宗教问题之一。

        对于 Scheme,请选择 Kent Dybvig 的 Scheme Programming Language,然后选择 SICP。

        对于 Common Lisp 和实用 Common Lisp,我推荐 David Lamkins 的 Successful Lisp. 成功的 Lisp 是 also available online for free

        之后,看看 Queinnec 的 Lisp in Small Pieces 和 Norvig 的 Lisp in AI book

        Marty Hall 在约翰霍普金斯大学有a nice list

        更新:我的意思不是永远坚持下去,只是试图同时学习两者会令人困惑。

        【讨论】:

          【解决方案13】:

          一旦我遇到问题。我不知道口齿不清。所以我决定在一个盒子里下载 LISP。

          然后我发现自己在没有任何帮助或文档的情况下安装了 Emacs。

          然后我有两个问题。

          【讨论】:

          • 这里的问题是有人没有告诉你教程的事情;按 Control-H,松开它们,然后按 T。这将带您进入一个教程,该教程将为您提供入门所需的一切。得知您的糟糕经历,我们深感抱歉。
          • +1 用于引用旧的正则表达式笑话,但 -1 表示在它之上没有用处。 :-P
          【解决方案14】:

          我发现完成“The Little Schemer”中的练习确实有助于磨练我思维的递归、模式匹配方面,并使在 XSLT 中的工作变得相当容易。

          【讨论】:

            【解决方案15】:

            对于认真的学习者,我推荐 Norvig 的 PAIP。这是学习 Lisp 和 AI 的绝佳资源。

            【讨论】:

            • 我赞同这一点,这是一本很棒的书,写得很好,而且 IMO 比 Practical Common Lisp 更鼓舞人心。
            【解决方案16】:

            伯克利提供播客格式的CS61a。这是基于 SICP 的 CS 课程介绍。它比 MIT 提供的 1982 年的视频更现代。

            【讨论】:

              【解决方案17】:

              我现在正在学习 Lisp,并且遇到了学习 Lisp 的“书”。由Rainer Joswig建议的

              这本书名为Common Lisp: A Gentle Introduction to Symbolic Computation,可以下载为PDF。作者在第一章从类似 UML 的 Lisp 方法开始,逐步介绍了越来越多的 Lisp 语法。

              我还研究了实用的 lisp,我认为作者忽略了许多必需的信息,即使对于经验丰富的程序员也是如此。这本书似乎没有这样做(我还没有完全完成,但发现它足够有用,可以提出建议)。

              还有一件事,你需要一个工作环境。我发现Lisp in a Box 工作得很好。它在 Windows 和 Linux 上运行并使用 eMac。

              【讨论】:

                【解决方案18】:

                按顺序阅读这些书籍:符号计算的简单介绍,Paul Graham 的 ANSI Common Lisp,然后转到 Practical Common Lisp。或者跳过 ACL 并在使用 PCL 时将其用作参考。

                【讨论】:

                  【解决方案19】:

                  现在有一本书叫'Land of LISP',它通过编写 80 年代风格的文字游戏来教授 LISP 编程。我现在正在读它,它写得很好,而且没有把自己太当回事,我喜欢。

                  【讨论】:

                    【解决方案20】:

                    根据您的编程经验,我首先推荐 Gentle Introduction to Symbolic Computation 或 Practical Common Lisp。为了练习,我在 Windows 中使用 Allegro CL 8.2 Free Express Edition。这让练习变得很有趣。

                    【讨论】:

                      【解决方案21】:

                      拿起康拉德·巴尔斯基(Conrad Barski)的Land of Lisp。这是一个有趣的关于使用卡通和游戏的 Lisp 编程的介绍。

                      【讨论】:

                        【解决方案22】:

                        我被 LISP 的 JVM 方言 - Clojure 所吸引。 Clojure 是一种很棒的 LISP,因为

                        • 它具有“简化的语法”,即需要较少的 parathensis,有巧妙设计的集合集可供使用
                        • 它是基于 JVM 的,因此在我们的范围内有稳定、高性能的运行时,此外整个 Java 生态系统(库,例如数据库驱动程序、构建工具、IDE)都在我们的范围内
                        • Noir 是一个很好的 Web 框架,应用可以部署在 Java Web 和应用服务器上

                        换句话说,Clojure 可以立即用于生产环境。

                        在资源方面,至少有 4 本书和植物在线资源:

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2013-06-25
                          • 2015-01-13
                          • 2013-04-13
                          • 2019-06-07
                          • 2010-11-04
                          • 2011-10-18
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多