嵌入式语言:Lua vs Common Lisp(ECL)

这里有人有使用Common Lisp作为嵌入式语言(使用ECL)的经验吗?如果是这样,ECL与Lua相比有多好?

解决方法

我以前没有嵌入CL,但是我已经用Lua和两个特定的Scheme实现(gambit-C和GNU Guile)完成了。

计划在我看来是一个很好的嵌入式语言,因为它是灵活的而不是太blo肿。 gambit-C对于这一点特别好,因为它允许您同时运行解释的脚本,也可以将代码编译为C.在我的测试中,gambit-C生成的C代码只比手写C慢一些(例如,在C中运行0.030s的特定测试在gambit中为0.040)。 gambit还有一个非常好的FFI(外部函数接口),它本质上只是用于将绑定写入C库的特殊语法的Scheme(也直接支持ObjC和C)。 gambit也有一个非常好的回复与一些调试功能

Guile也相当不错,实际上比Lua(速度最快的解释语言,我现在知道的 – Guile近年来取得了很大的进步)。但是由于gambit-C可以编译成真正快速代码,所以我通常不会使用Guile,除非我打算在最终版本中使用解释代码

Lua已经关闭了,但是你不会像Scheme那样得到延续,你也不会得到宏。尽管如此,仍然可以做一些合理的功能。它不会有一个完全功能的对象系统(如CL中的CLOS),但它确实有表,它们可以很容易地用于实现基于类的继承和基于原型的继承。此外,Lua还有一个优秀的C API,真的很高兴与您合作。它是基于堆栈的,并且设计的方式,你不必担心内存管理的Lua方面。 API非常清晰,组织良好,并且有很多很好的文档和示例代码。 Lua不能编译,但它确实使用字节码(总是 – 当您向Lua VM发送代码时,它始终先将该代码编译成字节码,然后运行)。

现在,对于Common Lisp来说,我觉得这可能不是一个很好的嵌入语言。这样做的原因只是CL很大。一般来说,嵌入一个轻量级的语言是理想的,因为它将使用您提供给它的平台/ libs,而不是外部的东西。

所以,我认为你不能错过gambit-C,Guile或Lua。他们都会很好CL是强大的,但我只是认为它对于嵌入来说太大了。

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...