学习LISP的最佳方法是什么?

178

我已经用Python、PHP、Java和C编程了几年,刚刚读完《黑客与画家》,所以我想尝试一下LISP!

我知道它完全不同于我所知道的语言,而且学习起来也不容易。此外,我认为(如有错请指正)LISP社区和开发人员要少得多。因此,我的问题是:学习LISP的最佳途径是什么?

我不介意买书或花时间学习,但我不希望浪费时间。

“最终”想法是将LISP用于Web开发,我知道这不太常见,所以...在选择第一本书或教程并花费大量时间学习之前,我知道规划我的学习很重要,以免走弯路!

谢谢大家的回答!

编辑:我读了《Practical Common Lisp》,感觉很长、很难、很有趣,绝对让我开始了解Lisp;接着我读了《小Schemer》,它很短,很有趣,对我的整体编程水平有很大帮助。因此,我的建议是先读《小Schemer》(几个小时,值得一读),然后再决定是否继续学习Lisp(或Scheme或任何方言)。即使您最终不选择这门语言,也将获得一种有趣的递归思考方式!


《Common Lisp: An Interactive Approach》是Stuart Shapiro于1992年出版的一本书,主要介绍了Common Lisp编程语言。该书曾经只有纸质版本,但近年来已经提供电子版 - Kaz
《Common LISPCraft》是罗伯特·威伦斯基的一本有趣但有些陈旧的书。我有一本1986年的纸质版。 - Kaz
22个回答

7

对于认真学习者,我推荐Norvig的PAIP。它是学习Lisp和人工智能的优秀资源。


我也赞同,这是一本很棒的书,写得很好,而且在我看来比《实用Common Lisp》更具启发性。 - Johan Kotlinski

6
伯克利提供CS61a的播客格式。这是一门基于SICP的计算机科学入门课程。与MIT提供的1982年视频相比,这是一个更现代化的版本。

6
我现在正在学习Lisp,并找到了一本学习Lisp的“圣经”。Rainer Joswig建议我阅读这本书。这本书名叫Common Lisp: A Gentle Introduction to Symbolic Computation,可以下载PDF版本。作者在第一章开始以UML的方式介绍Lisp,并逐渐引入更多的Lisp语法。
我还看过实用Lisp,但我认为该作者忽略了很多必要的信息,即使对有经验的程序员也是如此。这本书似乎没有这样的问题(虽然我还没有完全读完,但我已经发现它足够有用了)。
还有一件事,您需要一个工作环境。我发现Lisp in a Box很好用。它可以在Windows和Linux上运行,并使用eMacs。

5

我被其JVM方言Clojure吸引到LISP。Clojure是一种很棒的LISP,因为:

  • 它有“简化的语法”,需要较少的括号,可用的集合设计得很巧妙
  • 它基于JVM,因此有稳定且高效的运行时,在加上整个Java生态系统(例如库、数据库驱动程序、构建工具、IDE)都在我们的掌握之中
  • Noir是一个不错的Web框架,应用可以部署在Java Web和应用服务器上

换句话说,Clojure现在就可以用于生产。

关于资源,至少有4本书和大量在线资源:


4
我发现在《小型计算机》中完成练习真正有助于磨练递归、模式匹配思考方式,并且使得在XSLT中的工作更加容易。

4

4
"On Lisp" 可以从作者的网站免费获取。 - user49117
3
这是免费下载《On Lisp》的链接。链接 - Andrew-Dufresne

4

如果您想进行Web开发,可以看看hunchentoot,这是一个用Common Lisp编写的Web服务器。


你知道吗,看到所有以Lisp为基础的网络服务器和框架都是面向Web的,却没有任何设计(CSS或者内联样式),真的很令人难过。 - DFectuoso

2
我建议根据您的编程经验先学习符号计算的简介或实用的Common Lisp。在练习方面,我使用Windows中的Allegro CL 8.2免费版,这会让练习变得非常有趣。请注意保留HTML标签。

1

这是一个比较难回答的问题...我认为这取决于你的学习风格。

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

LISP绝对是一种独特的语言,如果你习惯于传统的C、Java、PHP编程,那么它需要一种新的思维方式。

祝你好运!


1

我发现阅读SICP这本书对我学习很有帮助。我使用的是Steel Bank Common Lisp (SBCL),并且在使用过程中有很好的效果。

祝好运!


谢谢,我今天要去挑选一些书,明天早上会很早开始! - DFectuoso
请注意,SBCL是用于Common LISP的,而这本书是关于Scheme的。虽然我还没有完全阅读它,但我认为它仍然可以帮助学习Common LISP。你只需要在Common LISP中找到相应的等价物即可。 - Zelphir Kaltstahl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接