Scripting Lua作为嵌入式语言的替代方案?

Scripting Lua作为嵌入式语言的替代方案?,scripting,programming-languages,embedded,lua,Scripting,Programming Languages,Embedded,Lua,我正在一个DSP上运行Linux的嵌入式系统上工作。现在我们想让它的某些部分可以编写脚本,我们正在寻找一种好的嵌入式脚本语言。这些脚本应该与我们现有的C++代码库很好的集成,小而快。 我知道Lua是解决此类问题的行业选择。我们可能会选择Lua,因为它是经过验证的、真实的、被证明是稳定的等等。然而,作为一种编程语言,它有一些相当奇怪的地方 那么,可嵌入语言有哪些替代方案呢 编辑: 这大约是一年后的事了 我们实际上在嵌入式系统上使用了Lua,它的性能非常好。随着时间的推移,我们向项目的越来越多部分添

我正在一个DSP上运行Linux的嵌入式系统上工作。现在我们想让它的某些部分可以编写脚本,我们正在寻找一种好的嵌入式脚本语言。这些脚本应该与我们现有的C++代码库很好的集成,小而快。 我知道Lua是解决此类问题的行业选择。我们可能会选择Lua,因为它是经过验证的、真实的、被证明是稳定的等等。然而,作为一种编程语言,它有一些相当奇怪的地方

那么,可嵌入语言有哪些替代方案呢

编辑:

这大约是一年后的事了

我们实际上在嵌入式系统上使用了Lua,它的性能非常好。随着时间的推移,我们向项目的越来越多部分添加了越来越多的脚本支持,这确实有助于实现它

表演真的很出色。即使是涉及搜索长数组或奇特字符串操作的相当复杂的操作,其性能也出奇地好。我们基本上从未遇到过与Lua相关的性能问题

与C函数的接口非常简单,效果非常好。这使我们能够毫不费力地开发脚本系统


最后,我们惊讶于Lua的灵活性。我们的Lua解释器必须在具有非标准内存分配器且不支持双数据类型的系统上运行。在一个头文件中有两个有很好文档记录的地方,我们必须修改,以使Lua在该系统上工作。它非常适合嵌入

你考虑过吗?有一家不错的餐厅。如果你在使用,它是一个库,用于C++和Python之间的无意义的集成。

TCL是从底层设计为嵌入式语言的,并且已经存在了几十年。此外,由于其高度可扩展性,它是开发领域特定语言的完美选择

我对DSP世界了解不多,但当你在谷歌上搜索“DSP lua”和“DSP tcl”时,你会得到两倍于tcl的点击率。

既然你说的是“嵌入式系统”、“小巧快速”和“完美集成”,我想你是对的,lua即使不是唯一的选择,也是第一位的。但我不再同意编程语言有“古怪的角落”。首先,Lua编程这本书非常精彩,是我读过的最好的书之一。其次,一些“奇怪的角落”来自这样一个事实,即语言非常正交和干净,从长远来看,这是一种优势,而不是缺点。例如,我发现JavaScript更糟糕。如果您阅读“Javascript的好部分”,作者将详细解释为什么语言中的某些结构是设计错误,以及为什么应该避免使用新操作符。在Lua中并非如此,不好的部分已经被删除,例如在5.x版本中,古怪的upvalue内容被标准语法范围所取代

事实上,我的观点是,Lua是一种比大多数其他语言都没有那么古怪的语言!我们在一个商业项目中使用它,我们对此非常满意

考虑到您的需求(占用空间小、有点怪以及与C++的集成),我能想到的唯一选择是

中的一些人建议将它与C集成


但是,如果我想了解你的情况,我会坚持使用Lua。

我全心全意地为你的用例推荐Lua。然而,对于资源受限的嵌入式设备来说,这是一个尚未提及的替代方案。

总是有Lisp.)但这突出了一个事实,即Lua实际上没有大多数语言那么“古怪”。它是为非程序员设计的,读起来像伪代码。它具有清晰、统一的语义(具有词法作用域的一流嵌套函数;多重赋值;多重返回值;具有清晰构造函数语法的单一、灵活的数据结构机制等),这使得它非常易于学习、读取、写入等。它还具有出乎意料的强大和表达能力(正确的尾部调用、延续、元编程等)

Lua唯一真正“古怪”的方面是数组从1开始索引,而且它不像其他人一样借用C的约定(
~=
而不是
!=
--
而不是
/
,等等),但在习惯于C语言的程序员眼中,这些大多是古怪的

另一种可能是Squirrel,它的灵感来自Lua,具有类似的目标,但类似于C的语法。虽然我没有使用过它,所以我不知道它是否达到了目标

我知道Lua是解决此类问题的行业选择

这是一个大胆的说法!我建议,如果你已经在运行Linux,那么选择是完全开放的。Linux本身决不是嵌入式系统的“行业选择”;这个“行业”远不止于此

一种几乎可以在任何系统上实现的语言,无论其性能、大小和操作系统(甚至没有操作系统)是第四种语言。它可能不是最流行的语言,但易于实现和扩展


另一个备选方案可能是,它是一个嵌入式C/C++解释器,因此您可以使用相同的语言来编译和编写脚本的代码。

最近的备选方案是:

Wren是一种小型、快速、基于类的并发脚本语言

Wren是一种脚本语言。Wren旨在嵌入 它没有依赖项,一个小的标准库和一个 易于使用的C API。它干净地编译为C99、C++98或任何东西 稍后


“行业选择”有点夸张了。“行业选择,也许。什么是“古怪的角落”你想通过选择另一种语言来避免这种情况吗?@Paul:基本上是元表和环境。基于表的类系统也有点奇怪。它还不错,只是有点……不寻常。我实际上已经读过那本书了。像这样的书可能会让你在语言方面有更好的选择