我应该如何从Lisp开始?[关闭]


48

我已经编程多年了,以各种方式遍历Blub(BASIC,汇编语言,C,C ++,Visual Basic,Java,Ruby,而没有“ Blub-ness”的特殊顺序),并且我想学习Lisp。但是,在时间有限(家庭,全职工作等)的情况下,我有很多兴趣,而对于当前的Blub(Java),我感到很满意。

因此,我的问题是,假设我是一个真正想学习Lisp的人,那么要取得良好的结果来证明Lisp在Web开发中的优越性,将采取哪些初步步骤?也许我错过了重点,但这就是我最初看到Lisp知识应用的方式。

我在考虑“使用方言A,使用IDE B,按照第C页的说明,在使用顾问D的单子之后质疑您的理智”。我想知道这里的人们认为什么是A,B,C甚至D的最佳值。此外,还讨论了学习如此强大的语言而不是成为Rails的相对价值。专家。

仅添加更多细节,我将在MacOS(或Linux VM)上进行开发-无需基于Windows的方法。

那些浏览的注意事项

我将让这个问题保持一段时间,以便在我能够探索建议之后就可以提供有关建议的反馈。如果您碰巧正在浏览并且觉得自己有需要添加的内容,请这样做。我真的很欢迎您的反馈。

有趣的链接

假设您是从Java背景来的Lisp,那么这组链接将使您快速入门。

  1. 使用Intellij的La Clojure插件集成Lisp(视频广播)
  2. Web Lisp
  3. 实用Common Lisp的在线版本(C / o Frank Shearar)
  4. Lisp的土地(+ (+ very quirky) game based)中的方式,但让这一切如此简单
  5. 在MacOS上安装Clojure和Sublime 2是一个很好的入门指南
  6. 看看《Clojure在行动》一书。为我工作。

1
通过阅读Paul Graham撰写的“ ANSI Common Lisp”和“ On Lisp”。
duros

2
在Lisp岩石上(我尚未阅读ANSI Common Lisp),但作为介绍性书籍,《实用Common Lisp> On Lisp》。海事组织,至少。(我首先读过Lisp的书,但PCL是让我进入CL领域的原因。)
Frank Shearar 2010年

不得不说,我很享受阅读PCL的时刻-优秀的脚注关于语言的历史确实给了社区的感觉
加里·罗

1
我对Lisps的第一个介绍是观看著名的计算机程序的结构和解释。然后,我看了Rich Hickey的Java程序员Clojure。我会推荐这些视频作为一个很好的介绍。
WuHoUnited 2012年

Answers:


18

这可能与大多数人的建议背道而驰,但是请避免使用Emacs,除非您已经知道。尤其是如果您习惯于现代IDE /编辑器。

我说的是经验。我尝试从Emacs开始,但是必须同时学习语言和编辑器,这让我感到非常沮丧(尤其是因为Emacs与其他工具有很大不同)。我最终选择了PLT Scheme(现在称为Racket),它带有一个相对简单的跨平台IDE,一个集中的软件包存储库和许多文档(包括专门针对Web开发的中间教程)。掌握了Lisp之后,我回到了Emacs,通过《实践通用Lisp》和《Xah的Elisp指南》学习了EL / CL。。基本上,正如我所看到的,您需要先了解Lisp,然后才能有效地使用Emacs,并且需要了解Emacs才能在CL / Elisp上非常有效。这意味着您既可以选择Scheme,也可以首先通过其他一些编辑器学习Common Lisp(可能是LispWorks个人)。

如果您已经了解Emacs,那么Elisp是很自然的一步(尽管我不知道如何在不首先了解Elisp的情况下享受Emacs的使用)。

YMMV当然,这正是我发现所提供的帮助。

由于您当前的blub是Java,因此您可能会从ClojureArmed BearKawa那里获得很多收益。我自己没有尝试过任何一个,不是Java的人,但是我认识的其他Lispers特别推荐Clojure。似乎可以保留当前的VM和IDE可能有助于学习过程。


开始时,我已经对emacs有了一些基本的流利性。Emacs的学习曲线确实非常陡峭!
Frank Shearar 2010年

+1是因为我以前在Emacs上的经历还不够出色(这并不阻止我想要了解它并内置Lisp(正如Thorbjorn所指出的那样),这意味着我可以在日常工作中使用Lisp知识)
加里·罗

3
@ThorbjørnRavn Andersen-做到了。两次。仍然发现自己一直在使用CUA快捷方式(在Emacs中默认情况下处于禁用状态)。最糟糕的是关闭我的编辑器时意外剪切+预期的副本(C-x C-c)。我喜欢Emacs的死亡,和几乎生活在现在,但要意识到,在第一,你战斗多年的肌肉记忆的告诉你C-sSave不是SearchUndoC-z。对于打算学习Lisp的人,我不会建议您感到沮丧。首先学习语言,意识到自己喜欢它,然后带着明确的目标开始战斗。
Inaimathi 2010年

1
@Inaima,强大的功能是有代价的,Emacs绑定早于CUA,所以怪IBM :)另外Ctrl-C + Ctrl-v也不是CUA :)

1
@Geoffrey van Wyk-PLT很棒,但是一段时间后您遇到了一些限制,一旦有了我的指导,我便切换到CL / Emacs。YMMV。如果您对详细信息感兴趣,我前一段时间写了一篇文章langnostic.blogspot.com/2010/09/…就LispWorks问题而言;我必须相信,他们针对的是大型团队(公司购买工具的地方)或顾问(通常赚钱足以证明价格合理)。不知道如何为他们工作,但这不是我会选择的方法。
Inaimathi 2010年

10

好吧,您可以通过阅读SICP来击中两只鸟;一个是学习LISP(我的意思是方案是Lisp的方言),另一个是深入了解如何编程。


1
+1链接-快速浏览似乎表明它的方法非常详细,但也比较枯燥(已阅读学术文章)。在阅读文本时,我非常喜欢“专家的声音”,但这似乎是一个很好的整体参考。
加里·罗

10

Conrad Barski有一个很棒的教程,叫做Lisp中的Casting SPEL(SPEL是他的宏的缩写)。它涉及制作一个简单的Adventure-type游戏,并直接跳入Lisp宏。他还一直在编写入门书籍,现在可以在以下位置找到:

学习编程Lisp,一次只玩一局

并且,从目录中:

  • 创建您自己的Web服务器,并使用它来玩基于浏览器的游戏

但是,我不知道这对使用Lisp 进行Web 开发(如HTML页面)意味着什么。:)

更新-我看到有人提到“计算机程序的结构和解释”这本书,它使我想起麻省理工学院已将Hal Abelson和Gerald Jay Sussman整个 SICP 视频讲座上线了。您可能发现这本书干dry了,但是讲座非常好。尽管它们是基于计划的,但是它们仍然很好地介绍了Lisp中的基本概念。非常值得下载和观看。


8

要获得对该语言的良好基础介绍,请阅读Peter Seibel的《实践通用Lisp》。这本书很棒。

对于新手来说,设置emacs和SLIME可能很棘手,其中“棘手”的幅度取决于您的操作系统。像往常一样,Windows固然可以一short而就,但人们已经做了艰苦的工作并写下来(SBCL,Emacs,SLIME)。

一旦解决了这个问题,Planet Lisp引用了最近一篇描述如何设置Hunchentoot和nginx的文章。

特定于操作系统的编辑:MCLIDE可能是一个不错的起点。我安装了它,但是没有机会实际使用它,所以我不能说任何有用的信息。当然看起来很有趣!

编辑:Eclipse也有Cusp插件。


6

已经有了很多不错的答案,但是假设您想使用Lisp抢先进行Web开发,我还有其他想法。

Clojure是我所见过的第一个Lisp,它具有非常好的全栈Web框架,可以在黄金时段使用。

  • Noir是一个具有路由,模板等功能的可靠Web框架,类似于Sinatra,但功能更加丰富。它使用Ring,基本上与Clojure等效于Ruby中的Rack。
  • Korma是一个SQL抽象库,可与Noir完美搭配。
  • Pinot是完全用ClojureScript编写的客户端框架,它使我们能够:
  • Clojurescript是针对Clojure的Java编译器。

如果您没有注意到,我只是介绍了整个Web堆栈,并且全部用Clojure编写。

我发现Clojure和Common Lisp一起上手要容易一些,它的功能集/库支持比Scheme更好。

如果您完全来自Java背景,它具有在JVM上运行的额外好处,这使您可以在需要时访问整个Java stdlib。

可用的文档以及框架本身都在开发中。但是这里有一个很好的教程

就编辑人员而言...如果您对vim感到满意,则可以将vim与SLIMV一起使用。如果您喜欢emacs,可以使用emacs / SLIME。Eclipse和NetBeans对Clojure有很好的支持(或者有人告诉我),但是我通常使用TextMate(尽管Sublime Text 2很快成为我选择的编辑器)。我知道我没有在不使用更集成的环境的情况下错过了一点Lisp魔术,但是我很高兴点击⌘-Tab在我的编辑器和REPL之间切换;你的旅费可能会改变。

如果您想让一本书起步,我建议使用Stuart Halloway和Aaron Bedra 编写的Programming Clojure。第二版刚从PragProg发行,所以是最新的。

祝大家开心!


您可能需要添加Leiningen
Gary Rowe,

5

几天前,另一位评论员Inaimathi推荐了这本书:The Little Schemer

今天收到了它,我可以说是一个拥有很多年来积累的大量编程书籍的人,我可能只读了一章,但是我绝对需要精装本。它读起来像《道德经》,关于语言的许多神圣智慧小片段。它可以说是Scheme,但最初被称为“ Little LISPer”,它所讨论的语言足够相似,因此只能作为一种语言来教授。

它不是高级文本,但其使命是灌输该语言的原理及其真正用途,思维方式。我相信这将是LISP的绝佳入门者。

注意 程序员能力矩阵实际上在要寻找的事物的最高能力中提到了这本书。(请参见书籍部分)


4

在Emacs编辑器内部,一个非常好的开始使用Lisp的地方可以用来重新定义几乎所有内容。您想使用“ e”键插入日期时间,只需编写一个小的Lisp代码片段以生成字符串并将其绑定到e键即可。做完了

如果您碰巧在一天中使用普通编辑器,那么这也将使您可以实际使用日常设置中所学的内容。


为“使用您所学的内容”建议+1。我是Intellij的日常工作,但在我们非常受限制的软件环境中,也许我可以在emacs上获得成功。
加里·罗

3

如果要在Mac上进行开发,则可能需要尝试Clozure CL。它带有一个IDE,该IDE具有与Emacs兼容的键击,并且有一个到Objective C的桥梁,因此您可以编写Cocoa应用程序。

另外,我已经阅读了《实践通用Lisp》,但发现《成功Lisp》也有帮助。

最后,您的耐心会得到回报。生产力和次要胜利很快就会到来,但大胜可能需要一段时间。


2

我在办公桌旁有一份ANSI Common Lisp副本。我每两年都会拿起它,并通读几章,然后再进行几次练习,然后从优先级列表中滑下来。不过,这可能比您告诉我的更多信息。这本书似乎完全可以胜任...


也许通读该问题的答案和评论会带给您推动更高目标的动力。深入了解PCL链接,并告诉我们您的想法...
Gary Rowe 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.