我正在为刚接触 Common Lisp 的人开发一个工具包(类似于 Live-CD Lisp-in-a-Box),我想确保它得到广泛的满足。Lisp 有什么吸引你的地方?你需要做什么/做了/会什么让你开始并保持你的兴趣?
到目前为止我所拥有的:SBCL 10.22、Emacs 22.3、SLIME 和 LTK 捆绑在一起并配置在完全引导到 RAM 的 Linux live-CD 上。
我现在已经发布了这个结果;它可在Thnake 网站上找到。
我正在为刚接触 Common Lisp 的人开发一个工具包(类似于 Live-CD Lisp-in-a-Box),我想确保它得到广泛的满足。Lisp 有什么吸引你的地方?你需要做什么/做了/会什么让你开始并保持你的兴趣?
到目前为止我所拥有的:SBCL 10.22、Emacs 22.3、SLIME 和 LTK 捆绑在一起并配置在完全引导到 RAM 的 Linux live-CD 上。
我现在已经发布了这个结果;它可在Thnake 网站上找到。
我至少会包括 cl-ppcre、clx、Hunchentoot 和 Weblocks。
我想您将不得不与各自的作者协商,但包括“On Lisp”、“Practical Common Lisp”和“Successful Lisp”对于 CD 来说是一笔巨大的财富。
真正好的是将 stumpwm 用作 Live CD 上的窗口管理器。
Emacs 几乎阻止了我学习 Common Lisp。费了很大的力气才熬过去。Emacs 和 SLIME 对初学者来说太多了,永远不会让初学者广泛满意。如果我想学习一门新的编程语言,我希望在我学习它的同时,其他一切都不会妨碍我。学习 Lisp 的任务已经够难了,没有额外的技术细节和设置环境的复杂性。隔离变量。
使用rlwrap或等效工具设置 SBCL 。rlwrap 支持非常基本的括号匹配和历史搜索,甚至可以进行制表符补全。不像 SLIME 那样花哨,但初学者不需要 SLIME。初学者需要能够在hello-world
不花费一个小时与 Emacs 对抗的情况下运行。提供 Emacs/SLIME 作为选项,但不是必需的。
我的建议是包括一个像Hunchentoot这样的 HTTP 服务器和一个流行的 Web 框架。我怀疑现在大多数想学习 Lisp 的人都是因为阅读了 Paul Graham,并且想模仿他在构建 Viaweb 方面的成功,因此能够轻松创建和修改强大的 Web 应用程序将是您生活的一个强大卖点光盘。
当然,包括 Emacs,但您可能想要更温和的东西。
我发现最容易进入的 Lisp 环境是带有 FRED 编辑器的 Macintosh Common Lisp(Fred Resembles Emacs Deliberately)。Digitool 没有成功进入当前的 Mac 时代,但他们在折叠时开源了很多东西。试试 www.clozure.com 或在 Google 上搜索“openmcl”。
有一个项目让 Fred 环境在 Openmcl 上运行,但我不知道状态(我很长时间没有用 Lisp 做过任何事情,也没有关注邮件列表)。
所以,我的建议:
询问 Paul Graham 是否可以包含“On Lisp”。由于他免费提供下载,他很可能会给予许可。(他的另一本优秀的 Lisp 书,“ANSI Common Lisp”,显然仍在销售,所以他不太可能在那儿给你许可。)
至少检查一下 MCL 的东西,看看是否有什么可以让它变得更容易。Emacs 是一个很棒的 Lisp 环境,但是对于初学者来说有点吓人。
我最近没有看过 SBCL 文档。它是否相当易读且对初学者友好?也许有人可以写一些关于如何开始和如何调试的快速说明。首先强调鼠标的使用,即使使用 Emacs。
真正让我对 Common Lisp 感兴趣的是 .net 或 Java 级别的一组现代库,以及一些非常好的文档。在软件方面,一个不错的gui编辑器沿着 notepad++ 或 jEdit 行会很好。Emacs/vi 和基于文本的编辑器对于严肃的开发来说总是显得古怪而陈旧。
clbuild ( http://common-lisp.net/project/clbuild ) 中的所有内容都应该是一个很好的候选对象。顺便说一句,您列表中除 Emacs 之外的所有软件包也由 clbuild 管理。我认为,如果 clbuild 中的项目集合能够为标准通用 lisp-library-hood 收集一些动力,那就太好了。
阅读Paul Graham让我想学习 Common Lisp。但如果我真的坐下来尝试学习它,这种冲动就会消退。
Emacs 确实有一点学习曲线,但它非常适合认真的开发——在(基于文本的)代码的方式中没有讨厌的鼠标驱动的 gui bling。
这些天启用了开箱即用的 CUA 模式(因此 Cx、Cc、Cv 工作“标准”),并且有一个带有文件操作的菜单,如保存等,所以它不应该那么难slog,如果它都是预先包装好的。但是预先配置 .emacs 文件以确保启用 CUA 模式,SLIME 不必由用户配置等是必须的 - 加上为 .emacs 配置的用户提供更多文档 - 链接到 EmacsWiki等(hrm,如果这是在 CD 上,用户不太可能自己配置它,不是吗....)
这样做:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
当然,我还想了解更多 Python 3.0、erlang 和 F#。我相信函数式语言(并不是说 Python 是一种函数式语言)只是提供了不同的视角。您拥有的视角越多,您可以构建的解决方案就越好。这也是为工作使用正确的工具,但如果您至少不熟悉某些东西,您可能永远不会想到使用特定工具解决问题。我想这可以追溯到那句老话,对木匠来说,一切看起来都像钉子。当有更好的解决方案可用时,我不想在所有事情上都使用 C#。此外,时代变迁,时尚也随之而来。
我对学习 Lisp 有点兴趣,但我不“喜欢”大多数可用资源。为了使 Common Lisp 更流行和更容易学习,如何将这个项目扩展到创建某种负责提供教程或其他东西的“社区”?坏/奇怪/无用的想法?
你当然也应该添加 Vim,配置RainbowParenthsis插件。
SBCL 的 rlwrap 是一个好主意,(需要 :sb-aclrepl)也是如此。
Weblocks 应该带有 cl-prevalence,也可能带有 Elephant/BDB。
总有 Practical Common Lisp,一本关于 Common Lisp 的书,可以在网上完整阅读。还有一个带有 CL 实现的 Emacs 包装,旨在与本书一起使用。