【问题标题】:How to go about learning Common Lisp and Emacs Lisp?如何开始学习 Common Lisp 和 Emacs Lisp?
【发布时间】:2011-04-19 22:04:27
【问题描述】:

过去几个月我一直广泛使用 Emacs 作为我的主要开发环境,现在我想学习它自己的 Emacs Lisp 来为 Emacs 编写我自己的小东西并扩展它是我个人的需要。

话虽如此,我也想学习 Common Lisp 有一段时间了,玩弄和探索一门新语言。我的问题是,我应该从哪里开始? Emacs Lisp 会为我提供必要的知识,以便以后更容易地学习 Common Lisp,还是相反?我基本上对每条路径的效率感兴趣,以便在我最终决定从一种方言转移到另一种方言时最大限度地减少学习曲线。

【问题讨论】:

    标签: emacs lisp elisp common-lisp


    【解决方案1】:

    从 Emacs Lisp 开始(假设您似乎已经开始自定义您的 emacs) - 它似乎对您更直接有用。

    请记住,Emacs Lisp(有很多缓冲区管理的东西,尤其是在您可能在野外看到的代码中)和 Common Lisp(更类似于通用编程语言),所以无论你走哪条路,都会有一些“浪费”

    【讨论】:

    • 这是有道理的。我还想,如果我从 Emacs Lisp 开始,我会立即从中获得更多的满足感,因为我会积极改进我的开发环境,并从我所学到的东西中看到真正的结果
    • 另一个支持 elisp 的观点:cl-macs.el 包可以为您提供 emacs 中 Common Lisp 的一个子集,并让这两种 Lisp 方言之间的平滑渐变变得更加容易。
    【解决方案2】:

    我假设您在发布之前搜索了 SO,并看到了问题 "What's the best way to learn LISP?" 和可能的 "Tips for Learning Elisp"。这是学习任何一种方法的两个很好的起点。

    至于先学习哪个,这完全取决于你想做什么。如果您对自己感兴趣的项目有想法,请使用适当的 lisp 来解决它。例如,如果您想在开发环境中添加/更改某些功能,请使用 emacs lisp。否则(如果它与编辑器无关),请使用 common lisp。

    对我来说,最重要的是找到一个你感兴趣的项目,并用它来指导使用哪种语言。

    他们每个人都足够接近,熟悉其中一个会直接使用另一个。 Emacs lisp 有很多特定领域的特性(缓冲区、区域、文本属性、文件、子进程等),而 common lisp 有各种各样的库可供使用。

    【讨论】:

    • 是的,我确实搜索并找到了您提到的帖子,但它们与我的查询并不完全相关。根据您和 Rohith 的回复,我认为我倾向于首先使用 Emacs Lisp,因为它对我更直接有用。
    【解决方案3】:

    【讨论】:

    • 我见过的最好的备忘单之一。
    【解决方案4】:

    我建议您先从 Common Lisp 开始,因为它比 Emacs Lisp 更通用。一旦您熟悉了 Common Lisp,您在学习 Emacs Lisp(它是一种更简单的 Lisp 方言)时就不会遇到什么麻烦了。

    您可能是我为什么建议从两者中“更难”的语言开始的原因,而您提出这样的问题是正确的。答案很简单——Emacs Lisp 中的大部分内容都与 Emacs 密切相关,如果从那里开始,您可能会错过部分全局。

    我个人是从其他人已经推荐的优秀书籍“Practical Common Lisp”开始了我的 Lisp 之旅。它让我对 lisp 的愿景和想法产生了兴趣,一旦我理解了 Common Lisp,我就很容易立即开始编写 Emacs Lisp 代码。我不确定在相反方向上的旅程是否会顺利,但一切都是主观的,取决于个人喜好。

    【讨论】:

      【解决方案5】:

      使用和练习 Emacs Lisp。您将立即能够做您可以看到并与之相关的事情。或许同时,读一本关于 Common Lisp 的书。还有 Elisp 手册。

      阅读不会受到伤害,并且可以为您提供更多背景和概述。但这取决于你喜欢如何学习等等。阅读比你开始练习的内容更能帮助你了解更多信息——让你知道你可以去哪里,你可以做什么,即使你从来不需要或不想这样做。

      【讨论】:

        【解决方案6】:

        【讨论】:

        • 非常感谢,但这并不能真正回答我的问题。我应该采用哪种方式 EmacsLisp -> CommonLisp 或反之亦然?
        【解决方案7】:

        我建议您从 EmacsLisp 开始,因为如前所述,它会更直接有用。
        一旦你掌握了语言的特点,你就可以开始使用eieio。

        引用emacswiki,就是An implementation of the CommonLisp object orientation standard (CLOS) in EmacsLisp。

        两全其美!

        【讨论】:

          【解决方案8】:

          可能同时学习两者。

          在学习 Common Lisp 时,我使用了 Scheme 中的计算机程序结构和解释中的练习。这意味着我很早就接触到了 Scheme 和 Common Lisp 之间的差异。同样,将 emacs-lisp 与 CL 一起学习是完全可行的,甚至可以帮助您理解作用域,因为它们之间存在差异。

          【讨论】:

          • 就个人而言,我讨厌尝试并行学习类似的东西。我把它们弄混了。
          猜你喜欢
          • 2013-06-27
          • 1970-01-01
          • 2011-05-19
          • 2011-11-05
          • 2012-01-16
          • 2022-10-07
          • 2012-08-06
          • 2017-08-18
          • 2012-01-14
          相关资源
          最近更新 更多