【问题标题】:What could be the fastest and least painful way to learn LISP for a C developer?对于 C 开发人员来说,学习 LISP 的最快和最不痛苦的方法是什么?
【发布时间】:2010-08-20 06:40:42
【问题描述】:

我在 Linux 平台上担任 C 开发人员已经有一段时间了。最近完成了K&R,并做了一点关于在C中实现OOP的研究。除此之外,我还研究了C++和Java。所有这些都在 Linux 平台上。

现在我打算学习 LISP。我已经完成了针对 SO 初学者的 LISP 讨论,尤其是 What’s the best way to learn LISP。

我明白,从过程式编程范式转变为函数式编程范式是一个重大举措。从新范式的角度思考将是真正的挑战。就像我第一次学习 OOP 时一样。

这是我真正担心的范式。当我开始 OOP 时,大部分时间都花在了学习如何用 OOP 来看待问题。语法并不难掌握。

由于我一直在使用 C 语言工作,因此我目前在工作场所的项目也使用 C 语言。我担心如何才能学会从函数式编程的角度看待问题。

  1. 对于 C 开发人员来说,转向 LISP 的最佳方式是什么?
  2. 在转向 LISP 之前,我是否应该学习一些其他中间语言?
  3. 如果是,那可能是哪种语言?
  4. 有什么特别的文字可以帮助我以函数式编程的方式思考?
  5. 有什么建议可以让这种转变更快更容易吗?

感谢您的宝贵时间。任何帮助和建议将不胜感激。

【问题讨论】:

  • 别再折腾了,用 LISP 写一个半现实的程序吧。这始终是最好的学习方式。你会犯错误并从中吸取教训!
  • 忘记(或至少忽略)您对编程(尤其是 C)的了解,然后遵循“我如何学习 LISP”编程中的建议。 LISP 与 C 有很大的不同,因此在学习过程中寻找相似之处会减慢您的学习速度。
  • +1,Richard Stallman 本人是用 LISP 编写的。
  • 你一直在说“功能性”(并且还把名字全部大写!)。您打算学习 Common Lisp,还是正在研究其他一些主要功能性的 Lisp 方言?
  • @Ken:感谢您指出大写的事情。我的错! :) are you looking at some... 我是从 Practical Common Lisp 开始的。在这个阶段,我只专注于 PCL。 Amos 在回复中提到 Lips 并不是严格意义上的 FP 语言,所以后面我会寻找严格意义上的 FP 方言或语言。你有什么建议吗?谢谢

标签: c functional-programming lisp


【解决方案1】:

试试看书:

Peter Siebel 编写的 Practical Common Lisp(可通过http://www.gigamonkeys.com/book/ 在线获取)。

Paul Graham 的 ANSI Common Lisp 然后尝试同一作者的 On Lisp。

人工智能编程范式:Peter Norvig 的 Common Lisp 案例研究

其他寻求帮助的地方包括 FreeNode 和 LispForum 上的 #lisp 频道 (http://www.lispforum.com/)。

在这些 PCL 中可能是最容易进入的,如果你想学习 Lisp 作为学习函数式编程的一种方式,你会失望的,你可以使用 Lisp 来做 FP,但它不是严格意义上的 FP 语言。

【讨论】:

    【解决方案2】:

    Possible duplicate

    你可以比MIT Course 6.001 "Structure and Interpretation of Computer Programs" 做得更糟。该类使用Abelson & Sussman's text;另请参阅the book's main site 了解更多信息。

    该课程使用 Scheme,这是 LISP 的一种方言,它比 Common LISP 更干净、更易于使用(是的,这是一种观点,处理它)。以后切换到 Common LISP 不会那么困难。 Paul Graham 的 On LISP 是关于 Common LISP 编程的“不拘小节”文本。他的ANSI Common LISP 是对该主题的较为温和的介绍。

    现在是坏消息。转向在 LISP 中工作可能非常困难,因为那里有更多的 C/C++ 和 Java 工作。

    我建议直接开始学习 LISP。没那么难。

    您需要一个 LISP 系统才能玩。如果您使用的是 Scheme,则很难击败 MIT/GNU Scheme system。对于 Common LISP,有几种选择:我可能会从 GCL - GNU Common LISP 开始。有适用于 Linux 和 Windows 的版本。

    【讨论】:

    • 首先感谢您回答我的问题。英语不是我的母语,所以请您解释一下You could do a lot worse than... 是什么意思?您的意思是,如果我不读这本书,我会做的最差?至于重复链接,我已经在我的帖子中提到过。谢谢。
    • 英文成语。这意味着您可以通过其他方式做到这一点,但如果这样做可能会更加痛苦。课程 6.001 向大量 MIT 工程专业的新生教授 LISP,伤亡人数相对较少。该链接指向麻省理工学院开放课件网站,其中包含完整的课程,而不仅仅是教科书。
    • 协鑫已经完全过时了。使用 SBCL 或 CCL。
    • 说“你可以做得比 x 差很多”意味着“x”非常好。
    • @RainerJoswig:多年以后,我应该提一下我玩过一些 SBCL。我玩的还不够多,但我非常喜欢我所看到的。
    【解决方案3】:

    我最初学习 lisp 的书是 DP Friedman 的 The Little Schemer。真正让您进入函数式编程思维模式。

    【讨论】:

      【解决方案4】:

      阅读“实用通用 Lisp”。在我的公司,我们每天至少有 70 名程序员使用 Common Lisp 进行复杂、实用的程序(机票搜索、机票预订系统),当出现一个不熟悉 Lisp 的新程序员时,我们只需递给他或她一个“实用通用 Lisp”的副本。这本书有多棒,我怎么说都不过分。

      【讨论】:

        【解决方案5】:

        我发现 python 基础(lambda 函数等)对掌握 lisp 非常有帮助。

        有一次我决定学习使用 lisp 方言的 emacs 脚本,这对我很有帮助,从那时起你就知道自己想要做什么,而不是通过练习。

        我认为你需要一个支持 lisp 和 shell 的优秀文本编辑器。然后尝试制作一个目标项目并实施它。

        【讨论】:

          【解决方案6】:

          我个人觉得GNU Emacs Lisp Tutorial 阅读起来很愉快。它会给你大致的想法。

          【讨论】:

            【解决方案7】:

            我建议先阅读成功的 Lisp 直到第 3 章,不要继续阅读第 4 章。不过,3 掌握 Lisp 的思想。然后阅读 Gentle,然后阅读 Practical Common Lisp。从那里开始,普通的 Common Lisp 实验将从那里帮助您。

            【讨论】:

            【解决方案8】:

            我最近购买了Land of Lisp,发现它非常有趣且具有教育意义。我可以推荐它。

            【讨论】:

              猜你喜欢
              • 2010-09-27
              • 2010-12-29
              • 2010-09-28
              • 2011-01-01
              • 2022-10-05
              • 2010-09-26
              • 2010-10-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多