【发布时间】:2011-11-05 16:36:45
【问题描述】:
我是一名尝试学习 Common Lisp 的 C++ 程序员。我看过一些类似 Lisp 的书,并阅读了许多关于 Lisp 各种优点的在线文章。不过,我需要一些建议。
我所读到的几乎所有关于 Common Lisp 的内容都与它的神奇之处、用它完成工作的速度有多快以及它如何惊人地解决了 30 年前现代编程语言的许多问题有关。还有宏是多么神奇,每种编程范式(OO、函数式、基于actor的等等)如何在 Lisp 中使用,以及列表如何成为最终的数据结构。基本上将 Lisp 视为一种研究语言,并说明它的不同和革命性。
所有这些东西可能都是真的,但问题是我还没有看到太多关于如何做实际事情的东西,比如读取文件并将其拆分为单词并对其进行一些处理。我对学习 Common Lisp 的兴趣不是为了学习 Common Lisp,而是为了让我过去在 C++ 中做的事情做得更快,错误更少。
所以我的问题是专注于教授如何使用 Common Lisp 完成常见编程任务的最佳资源(无论是网站、书籍还是任何东西)是什么喜欢
- 如何读取文件
- 如何读取文件、替换文件中的单词并将结果写回文件
- 迭代目录中的文件和其他文件系统内容
- 与 SQL 数据库交互
- 通过套接字进行通信
- 像网络服务器这样的东西的线程
- 创建图形用户界面
- 对二进制文件执行操作
- 编写解析器(不是 Lisp 中的 Lisp 解释器,据我了解,它就像 5 行 Lisp)
- 与操作系统(即用 C 或 C++ 编写的东西)交互以完成 Lisp 本身无法完成的任务
- 如何用 C 编写 Lisp 扩展(这可能吗?)
- 嵌入 lua 解释器(这可能吗?)
还有一个不太直接的实用说明,如何在 lisp 中实现常见的数据结构,如堆、堆栈、二叉搜索树等。然而,这可能只是使用 Lisp 的列表操作,如 car 和 cdr以正确的方式。我不知道。
我非常怀疑 Lisp 不可能实现这些(除了列表中的最后两个例外),否则人们不会那么喜欢它。我读过的上述内容提到了许多用 Lisp 编写的现实世界软件(想到了雅虎网络商店)。
但是,我以前使用过(the?)命令式语言进行编程,我急于使用我获得的新知识来编写实际应用程序。那么学习使用 Lisp 编写实用软件的最快方法是什么?
顺便说一句,我看过 Peter Seibel 的 Practical Common Lisp,但从 TOC 来看,它只涉及到一些我想学习的东西用 Lisp 来做。
如果我可以再问一个问题(对不起,如果这是将两个问题合二为一),我在哪里可以找到对 Lisp 函数和内容的引用?
我真的很想喜欢 Lisp。
【问题讨论】:
-
好问题。我本人是一名 C++ 程序员,今年夏天一直在学习 Lisp,主要是通过答案中提出的书籍。到目前为止非常高兴,但仍然可以通过宏。 Paul Graham 的 On Lisp 是一颗真正的宝石。此外,Emacs Lisp 上的资料可以帮助您总体上跟踪 Lisp,并允许您从编辑器本身编写真正有用的脚本。
-
Docs.SO 上 Common Lisp 的入门页面上现在有一个广泛的 Common Lisp Resources 页面。
-
现在还有一个最新的Common Lisp Cookbook。虽然它的 TOC 还没有那么广泛,所以我们在 Awesome CL 列表中搜索 awesome 和 modern 库。并为 E. Weitz 的“CL 食谱”+1。
标签: lisp common-lisp