在哪里学习如何实际使用Common Lisp

我是一名试图学习Common Lisp的C ++程序员。 我看过Lisp Land这样的一些书,并阅读了许多关于Lisp各种优点的在线文章。 不过,我需要一些建议。

几乎我读过的关于Common Lisp的所有内容都与它的惊人之处有关,它可以让你快速完成任务,以及它如何在30年前用现代编程语言惊人地解决了许多问题。 还有宏是多么惊人,以及在Lisp中如何使用每一种编程范例(OO,功能,基于演员或其他等),以及列表如何成为最终的数据结构。 基本上把Lisp当成一种研究语言来对待,并说它是多么的不同和革命。

所有这些东西可能都是真的,但问题是我没有看到很多东西如何做实际的事情,如读取文件并将其拆分为单词并对其进行一些处理。 为了学习Common Lisp,我对学习Common Lisp不感兴趣,但为了让我以前用C ++做的事情更快,错误更少,我对此感兴趣。

所以我的问题是什么是最好的资源(不管是网站,书籍还是任何东西),这些资源的重点是如何使用Common Lisp来执行常见的编程任务

  • 如何阅读文件
  • 如何读取文件,替换文件中的单词,然后将结果写回文件
  • 迭代目录和其他文件系统内的文件
  • 与SQL数据库进行交互
  • 通过套接字进行通信
  • 线程处理像网络服务器这样的东西
  • 创建GUI
  • 对二进制文件执行操作
  • 编写一个解析器(不是Lisp的解释器,据我所知,就像Lisp的5行)
  • 与操作系统进行交互(即用C或C ++编写的东西)以执行Lisp本身无法完成的任务
  • 如何在C中编写Lisp扩展(可能吗?)
  • 嵌入一​​个lua解释器(这可能吗?)
  • 另外,在一个不太实际的实际情况中,如何在lisp中实现常见的数据结构,如堆,堆栈,二叉搜索树等。但是,这可能只是以正确的方式使用Lisp的列表操作,如carcdr 。 我不知道。

    我非常怀疑,任何这种情况(除了列表中最后两个不太可能的例外)对于Lisp来说是不可能的,或者人们不会那么喜欢它。 前面提到的我读过的东西中提到了许多用Lisp编写的真实世界软件(雅虎网上商店)。

    但是,在编写一个(?)命令式语言之前,我急于使用我得到的新知识来编写真实世界的应用程序。 那么学习用Lisp编写实用软件最快捷的方法是什么?

    顺便说一下,我已经看到了Peter Seibel的Practical Common Lisp,但从TOC来看,它只涉及我想学习使用Lisp做的一些事情。

    还有一个问题,如果我可以(对不起,如果这是将两个问题合并为一个问题),我可以在哪里找到对Lisp函数和内容的参考?

    我真的很想喜欢Lisp。


    我会建议阅读“Practical Common Lisp”,因为它已经回答了你的一些问题。

    您应该阅读大概三到四本书

  • Common Lisp的基本介绍:Common Lisp:符号计算的简单介绍
  • Common Lisp实用介绍:Practical Common Lisp
  • 更高级的Common Lisp:人工智能编程范式:Common Lisp案例研究。 这本书对非AI程序员也很有趣。
  • 许多实用的建议:Common Lisp食谱。
  • Common Lisp参考

  • 参考:Common Lisp HyperSpec
  • 可打印的快速参考:Common Lisp快速参考
  • 文档搜索引擎
  • L1sp.org - 重定向服务以获取文档
  • 手册

    现在接下来你应该看看你的Lisp实现手册。 它描述了很多特定的扩展:网络,线程......

    Common Lisp实现的文档:

  • Allegro Common Lisp
  • CLISP
  • Clozure Common Lisp
  • CMUCL
  • ECL
  • LispWorks
  • SBCL
  • Scieneer Common Lisp
  • SLIME(基于Emacs的Lisp-IDE)有一个SLIME用户手册。

    Common Lisp库的文档:

  • Quickdocs
  • 图书馆

    供图书馆使用

  • Quicklisp:支持的库。
  • CLIKI(给出一些概述)
  • 现在看看你的一些观点:

  • 如何阅读文件
  • 请参阅HyperSpec中的文件和流字典。 具有开放式流,读取式,读取式,读取式,读取式,读取式......

  • 如何读取文件,替换文件中的单词,然后将结果写回文件
  • 以上使用。 另见:WRITE和相关。

  • 迭代目录和其他文件系统内的文件
  • 往上看。 目录,路径名,...

  • 与SQL数据库进行交互
  • 使用例如CLSQL库。

  • 通过套接字进行通信
  • 请参阅Lisp手册或使用其中一个便携式库。 见Quicklisp。

  • 线程处理像网络服务器这样的东西
  • 请参阅Lisp手册或使用其中一个便携式库。 见Quicklisp。

  • 创建GUI
  • 依靠。 请参阅Quicklisp或实现特定的库。

  • 对二进制文件执行操作
  • 有关文件和流操作,请参阅Hyperspec。 WRITE-BYTE,READ-BYTE。 以二进制流的形式打开一个流。

  • 编写一个解析器(不是Lisp的解释器,据我所知,就像Lisp的5行)
  • 为此使用现有工具之一。 研究现有的解析器。 Lisp中有许多解析器,但关于这方面的书籍并不多(除了AI文献中描述的自然语言解析器)。

  • 与操作系统进行交互(即用C或C ++编写的东西)以执行Lisp本身无法完成的任务
  • 依靠。 请参阅Quicklisp或实现特定的库。

  • 如何在C中编写Lisp扩展(可能吗?)
  • 依靠。 请参阅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选项列表:

  • cl-gtk2,一个GTK gui库的接口
  • McClim
  • 石榴石
  • 常见的Qt
  • EQL
  • 链接地址: http://www.djcxy.com/p/52351.html

    上一篇: Where to learn how to practically use Common Lisp

    下一篇: OpenXml DataValidation set predefined List for columns