首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在哪里学习如何实际使用Common Lisp

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

Stack Overflow用户
提问于 2011-08-29 07:52:30
回答 2查看 13K关注 0票数 80

我是一名C++程序员,正在努力学习Common Lisp。我看过一些书,如“Lisp的土地”,并阅读了大量关于Lisp各种优点的在线文章。然而,我需要一些建议。

我读到的关于Common Lisp的几乎所有内容都与它有多么令人惊叹,你用它完成工作的速度是多么惊人,以及30年前它是如何惊人地解决了现代编程语言的许多问题有关。此外,宏是多么令人惊叹,以及如何在Lisp中使用每种编程范例(OO、函数式、基于角色或其他),以及列表是如何成为最终的数据结构。基本上把Lisp当作一种研究语言,并说它是多么的不同和革命性。

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

所以我的问题是,什么是最好的资源(可以是网站,书籍,任何东西),它专注于教授如何使用Common Lisp来完成常见的编程任务,比如

  • 如何读取文件
  • 如何读取文件,替换文件中的字,并将结果写回文件
  • 迭代目录中的文件和其他文件系统内容
  • 与SQL db

交互

  • 为webserver
  • Create GUI
  • 在二进制文件上执行操作
  • 编写解析器(不是Lisp中的Lisp解释器,据我所知,这就像是在操作系统中使用5行Lisp)
  • Interact (也就是用C或C++编写的东西)来做Lisp本身不能做的事情,
  • 如何用C编写Lisp扩展(那是lua解释器吗(这可能吗?)

还有一个不那么直接的实用问题,如何在lisp中实现常见的数据结构,如堆、栈、二进制搜索树等。然而,这可能只是以正确的方式使用了Lisp的列表操作,如carcdr。我不知道。

我非常怀疑这一切(除了列表中最后两个不太可能的例外)在Lisp上是不可能的,否则人们不会那么喜欢它。我读到的上述内容提到了很多用Lisp编写的真实软件(Yahoo!我想到了网上商店)。

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

顺便说一下,我看过Peter Seibel的实用Common Lisp,但从TOC来看,它只涉及我想要学习使用Lisp来做的一些事情。

如果可以的话,还有一个问题(如果这是将两个问题合并为一个问题,很抱歉),我在哪里可以找到对Lisp函数和东西的引用?

我真的很想喜欢Lisp。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-29 08:13:05

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

可能有三到四本书你应该读

Common Lisp基本入门:Common Lisp: A Gentle Introduction to Symbolic Computation

通用Lisp参考

用于documentation的重定向服务参考:Common Lisp HyperSpec

手册

现在,您应该查看Lisp实现的手册。它描述了许多特定的扩展:网络,线程,...

Common Lisp实现文档:

SLIME (基于Emacs的Lisp-IDE)有一个SLIME User Manual

Common Lisp库的文档:

对于库使用

现在看一下你的一些观点:

  • How to read files

请参阅HyperSpec中的文件和流字典。WITH-OPEN-STREAM、READ、READ-LINE、READ-CHAR、READ-BYTE、READ-SEQUENCE、...

  • 如何读取文件、替换文件中的单词以及将结果写回文件

使用上面的。另请参阅:写入和相关。

  • 迭代目录中的文件和其他文件系统内容

请参见上面的。目录,路径名,...

  • 与SQL db

进行交互。

例如,使用CLSQL库。

  • 通过套接字进行通信

请参阅Lisp的手册或使用一个可移植的库。请参见Quicklisp。

针对for服务器之类内容的

  • 线程

请参阅Lisp的手册或使用一个可移植的库。请参见Quicklisp。

  • Create GUI

视情况而定。请参阅Quicklisp或特定于实现的库。

  • 对二进制文件执行操作

有关文件和流操作,请参见Hyperspec。写字节、读字节。将流作为二进制流打开。

  • 编写一个解析器(不是Lisp的Lisp解释器,据我所知,它就像5行Lisp)

为此,请使用现有的工具之一。研究现有的解析器。有许多用Lisp编写的解析器,但在书中并不多见(除了人工智能文献中描述的自然语言解析器)。

  • 与操作系统(即用C或C++编写的东西)进行交互,以完成Lisp在本地

中无法完成的任务

视情况而定。请参阅Quicklisp或特定于实现的库。

  • 如何用C编写Lisp扩展(那是possible?)

视情况而定。请参阅Quicklisp或特定于实现的库。-> FFI

最后的建议:阅读其他作者的代码。

学习其他Lisp代码。有足够的、非常多样化的Lisp代码。从web服务器到音乐创作软件。

票数 94
EN

Stack Overflow用户

发布于 2011-08-29 08:16:06

请查看Cliki the Common Lisp wiki,它提供了适用于Common Lisp的库的列表,可以帮助您完成所有项目。

此外,您还需要查看the Common Lisp Cookbook (还有一个更多的updated version)。它有一堆常见任务的代码,比如reading a file one line at a timeForeign Function Interfaces for interacting with libraries written in C

根据您使用的实现,您可以用C语言为Lisp编写扩展。例如,Emacs-Lisp允许您这样做,尽管它不是Common Lisp。通常,您要做的是用Common Lisp编写代码,然后使用不同的Lisp编译器声明或使用外部函数接口的其他方法尽可能地优化它。

线程化取决于您使用的实现,但我认为它们中的大多数现在都有线程。

Hunchentoot是最好的Lisp web服务器之一,非常容易上手。您不必自己编写任何线程代码,只需编写HTTP请求处理函数即可。

有人编译了a list of GUI options for Lisp

GTK gui library

  • McClim

  • Garnet

  • Common Qt

  • EQL

的接口

  • cl-gtk2
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7224823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档