gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:11:09 24 4
gpt4 key购买 nike

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

最佳答案

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

在我看来,Scheme 是一种很棒的嵌入式语言,因为它灵活且不太臃肿。 Gambit-C 在这方面尤其出色,因为它允许您运行解释脚本,并将代码编译为 C。在我的测试中,Gambit-C 生成的 C 代码仅比手写 C 代码慢一点(例如,在 C 中运行 0.030 秒的特定测试在 Gambit 中运行 0.040!)。 Gambit 还有一个非常好的 FFI(外部函数接口(interface)),它本质上只是具有特殊语法的 Scheme,用于编写与 C 库的绑定(bind)(也直接支持 ObjC 和 C++)。 Gambit 还有一个非常好的 repl,带有一些调试功能。

Guile 也相当不错,而且它实际上比 Lua 运行得更快(我目前所知道的最快的解释语言——Guile 近年来取得了很大的进步)。但由于 Gambit-C 可以编译为非常快的代码,因此我通常不会过多使用 Guile,除非我打算在最终版本中使用解释代码。

Lua有闭包,但你不会像Scheme中那样得到延续,也不会得到宏。尽管如此,仍然可以做合理数量的功能性工作。它不会有一个功能齐全的对象系统(如 CL 中的 CLOS),但它有表,并且它们可以用来很容易地实现基于类的继承和基于原型(prototype)的继承。此外,Lua 有一个优秀的 C API,使用起来真的很愉快。它是基于堆栈的,其设计方式使您根本不必担心 Lua 方面的内存管理。 API 非常清晰且组织良好,并且有很多很棒的文档和示例代码。 Lua 无法向下编译,但它确实使用字节码(始终 - 当您将代码发送到 Lua VM 时,它总是首先向下编译该代码,然后然后运行它) .

现在,对于 Common Lisp,我认为它可能不会成为一种非常好的嵌入语言。原因就是CL太大了。一般来说,嵌入一种轻量级语言是可取的,因为它将使用您提供给它的平台/库,而不是太多的外部东西。

所以,我认为使用 Gambit-C、Guile 或 Lua 都不会出错。他们都会非常好。 CL 很强大,但我只是觉得它对于嵌入来说太大了。

关于lua - 嵌入语言: Lua vs Common Lisp (ECL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3223592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com