在哪里学习如何实际使用Common Lisp
我是一名试图学习Common Lisp的C ++程序员。 我看过Lisp Land这样的一些书,并阅读了许多关于Lisp各种优点的在线文章。 不过,我需要一些建议。
几乎我读过的关于Common Lisp的所有内容都与它的惊人之处有关,它可以让你快速完成任务,以及它如何在30年前用现代编程语言惊人地解决了许多问题。 还有宏是多么惊人,以及在Lisp中如何使用每一种编程范例(OO,功能,基于演员或其他等),以及列表如何成为最终的数据结构。 基本上把Lisp当成一种研究语言来对待,并说它是多么的不同和革命。
所有这些东西可能都是真的,但问题是我没有看到很多东西如何做实际的事情,如读取文件并将其拆分为单词并对其进行一些处理。 为了学习Common Lisp,我对学习Common Lisp不感兴趣,但为了让我以前用C ++做的事情更快,错误更少,我对此感兴趣。
所以我的问题是什么是最好的资源(不管是网站,书籍还是任何东西),这些资源的重点是如何使用Common Lisp来执行常见的编程任务
另外,在一个不太实际的实际情况中,如何在lisp中实现常见的数据结构,如堆,堆栈,二叉搜索树等。但是,这可能只是以正确的方式使用Lisp的列表操作,如car
和cdr
。 我不知道。
我非常怀疑,任何这种情况(除了列表中最后两个不太可能的例外)对于Lisp来说是不可能的,或者人们不会那么喜欢它。 前面提到的我读过的东西中提到了许多用Lisp编写的真实世界软件(雅虎网上商店)。
但是,在编写一个(?)命令式语言之前,我急于使用我得到的新知识来编写真实世界的应用程序。 那么学习用Lisp编写实用软件最快捷的方法是什么?
顺便说一下,我已经看到了Peter Seibel的Practical Common Lisp,但从TOC来看,它只涉及我想学习使用Lisp做的一些事情。
还有一个问题,如果我可以(对不起,如果这是将两个问题合并为一个问题),我可以在哪里找到对Lisp函数和内容的参考?
我真的很想喜欢Lisp。
我会建议阅读“Practical Common Lisp”,因为它已经回答了你的一些问题。
您应该阅读大概三到四本书 :
Common Lisp参考
手册
现在接下来你应该看看你的Lisp实现手册。 它描述了很多特定的扩展:网络,线程......
Common Lisp实现的文档:
SLIME(基于Emacs的Lisp-IDE)有一个SLIME用户手册。
Common Lisp库的文档:
图书馆
供图书馆使用
现在看看你的一些观点:
请参阅HyperSpec中的文件和流字典。 具有开放式流,读取式,读取式,读取式,读取式,读取式......
以上使用。 另见:WRITE和相关。
往上看。 目录,路径名,...
使用例如CLSQL库。
请参阅Lisp手册或使用其中一个便携式库。 见Quicklisp。
请参阅Lisp手册或使用其中一个便携式库。 见Quicklisp。
依靠。 请参阅Quicklisp或实现特定的库。
有关文件和流操作,请参阅Hyperspec。 WRITE-BYTE,READ-BYTE。 以二进制流的形式打开一个流。
为此使用现有工具之一。 研究现有的解析器。 Lisp中有许多解析器,但关于这方面的书籍并不多(除了AI文献中描述的自然语言解析器)。
依靠。 请参阅Quicklisp或实现特定的库。
依靠。 请参阅Quicklisp或实现特定的库。 - > FFI
最终建议:阅读其他作者的代码。
研究其他Lisp代码。 那里有足够多样化的Lisp代码。 从网络服务器到音乐创作软件。
查看Cliki Common Lisp wiki,它提供了可用于Common Lisp的库列表,可帮助您完成所有项目。
此外,你会想看看Common Lisp Cookbook(还有一个更新的版本)。 它有一堆用于常见任务的代码,例如一次读取一行文件,以及用于与用C编写的库进行交互的外部函数接口。
你可以用C编写Lisp的扩展,具体取决于你使用的是哪个实现。 例如Emacs-Lisp允许你这样做,尽管它不是Common Lisp。 通常你想要做的就是在Common Lisp中编写代码,然后使用不同的Lisp编译器声明或使用外部函数接口的其他方法尽可能地优化它。
线程依赖于你使用哪个实现,但我认为它们中的大多数现在都有线程。
Hunchentoot是最好的Lisp网络服务器之一,并且很容易上手。 您不必亲自编写任何线程代码,只需编写HTTP请求处理函数即可。
有人为Lisp编译了一个GUI选项列表: