通用Lisp中的web开发

通用Lisp中的web开发,lisp,common-lisp,Lisp,Common Lisp,我对这个计划有点熟悉。我正在阅读OnLisp,很想在其中做一个真实的项目。很可能是网络开发。我想知道人们用什么样的设置来开发lisp中的网站。我在家里有几台Mac电脑,我想我会用clozure cl。不过我对一些事情很谨慎。我在互联网上读到,cl既没有可靠的线程设备,也没有良好的网络。这是真的吗?你的经历是什么 PS:别跟我说clojure:)。口齿不清是我需要抓挠的地方 不知道为什么它没有“良好的网络”;如果您想编写一个可移植的公共Lisp应用程序,您不能依赖线程,因为某些实现不支持线程(AF

我对这个计划有点熟悉。我正在阅读OnLisp,很想在其中做一个真实的项目。很可能是网络开发。我想知道人们用什么样的设置来开发lisp中的网站。我在家里有几台Mac电脑,我想我会用clozure cl。不过我对一些事情很谨慎。我在互联网上读到,cl既没有可靠的线程设备,也没有良好的网络。这是真的吗?你的经历是什么


PS:别跟我说clojure:)。口齿不清是我需要抓挠的地方

不知道为什么它没有“良好的网络”;如果您想编写一个可移植的公共Lisp应用程序,您不能依赖线程,因为某些实现不支持线程(AFAIK,只是,尽管您可以使用实验性的线程支持来编译它)。如果你计划选择一个实现并坚持下去,你就不会有这个问题

“标准”CL web堆栈是//,不过您可以找到在或上运行的教程


我使用的设置是/正在运行,上面的系统以及MySQL(尽管我正在认真考虑跳到)用于数据库,并在Hunchentoot前面运行,以提供任何静态内容。

mck-一直在维护heroku common lisp webapp


Common Lisp的“联网”问题是,CL标准中没有套接字,因此每个实现都有自己的套接字API。不过,我们也尝试提供一个通用接口,比如
usocket
。您可以找到与网络相关的软件包列表

如果您需要一个web框架,请查看。我还没有使用过它,但它看起来像是我见过的最完整的CL web框架。

目前我正在使用一个基于Hunchentoot的框架,其灵感来自Rails的路由系统。我还使用与
PostgreSQL
数据库交互,生成HTML,不过我正在考虑切换到更具自定义性的数据库

当我开始的时候,我也考虑过使用来生成
JavaScript
,但是现在我只喜欢简单的
JavaScript


所有内容都在SBCL上运行,并且可以通过Quicklisp使用。

此外,大多数web应用程序似乎都有点过时了。我不是说“哈哈……看,妈……没有衣服”,但是有人能告诉我为什么会这样,或者给我举个反例吗?还有,有没有lisp到javascript的翻译程序。lisp在前端有什么帮助吗?我怀疑这是一个社会问题。由于Lisper相对较少,基于Lisp的web应用程序通常没有太多贡献者。因此,开发人员往往不得不专注于完成基础工作,而忽略了一些浮华的AJAX特性!我尝试在mac上使用SBCL,但在尝试加载weblocks时出现“线程禁用”错误。我启用了线程,但它仍然说了同样的话:)。不管怎样,我现在会坚持使用clozure。谢谢你提供的所有信息。我认为这是一个好的开始。@Ravi根据我的经验,SBCL和Clozure CL在行为方式上非常相似,因此使用后者不太可能造成任何问题。例如,我倾向于在MacOSX上使用ClozureCL,在GNU/Linux上使用SBCL,我还没有遇到这两者之间的任何可移植性问题。(当然,CLISP和ECL完全是另一回事,但在编写web应用程序时,我只是忽略了它们的存在。:)顺便说一句,除了本答案中提到的库之外,我建议您考虑一下您的数据库需求。我发现它非常灵活和可预测。听到SBCL和clozure的消息很好。我在想我是否应该买一个linux设备盒。在遇到性能问题之前,我会将其推迟。配置clsql是一件痛苦的事情,而且需要花费很多时间(特别是如果您像我一样在多个平台和实现上使用它)。相比之下,后现代(使用PostgreSQL)在所有平台/实现组合上都“只起作用”,并通过TCP/IP直接与服务器对话,而clsql使用CFFI/UFFI,有时需要额外的库,有时Unicode不起作用(我试过了,你无法在网上找到帮助),因此后现代更可靠。我是根据实际经验说的,因为我在商业上使用了这两种方法。Parenscript看起来很有趣。您的设置看起来很全面。谢谢你。我已经和Restas玩了一段时间了。我喜欢它的原因:1)顾名思义,它鼓励restful设计2)它很简单,如果你从MVC的角度考虑,它几乎只是C部分,而且做得很好。3) 它非常灵活4)我发现它的路由概念优于Django使用正则表达式进行调度的方式(尽管我认为它是从rails得到这个好主意的)5)你可以在模块中构建你的站点,然后在特定的URL上挂载它们,优于Djangos在使用url.py文件的意大利面弓的项目中组织应用程序的方法。6) 它的口齿不清:)