Lua作为embedded式语言的替代品?

我正在研究在DSP上运行Linux的embedded式系统。 现在我们想要使它的一些部分可以编写脚本,我们正在寻找一个很好的embedded式脚本语言。 这些脚本应该与我们现有的C ++代码库很好地集成,小而快。

我知道Lua是这样的问题的行业select。 我们可能会和Lua一起去,因为它被certificate是稳定的,而且是稳定的。 然而,作为一种编程语言,它有一些相当古怪的angular落。

那么,可embedded语言有哪些替代scheme呢?

编辑:

大约一年之后。

我们实际上在我们的embedded式系统上使用了Lua,它performance的非常好。 随着时间的推移,我们为越来越多的项目部分添加了越来越多的脚本支持,并且真正帮助实现了这一目标。

性能非常出色,真的。 即使相当复杂的操作,涉及search长arrays或花式string操作performance惊人的好。 我们基本上从来没有碰到过Lua相关的性能问题。

与C函数接口非常简单,效果很好。 这使我们能够无痛地发展脚本系统。

最后,我们对Lua被certificate是多么灵活感到震惊。 我们的Lua解释器必须在非标准内存分配器的系统上运行,并且不支持双数据types。 在一个头文件中有两个logging良好的地方,我们必须修改它们以使Lua在该系统上工作。 它非常适合embedded!

既然你说“embedded式系统”,“小而快”和“整合好”,我会说你是正确的,如果不是唯一的select,Lua是第一。 但我不再同意编程语言有“古怪的angular落”。 首先,“Lua编程”这本书简直太棒了,是我读过的最好的书之一。 其次,一些“怪异的angular落”来自语言非常正交和清洁的事实,从长远来看这是一种资产,而不是一个缺点。 我发现,例如JavaScript更糟糕。 如果你阅读“Javascript是好的部分”,作者会详细解释为什么一些语言的结构是devise错误,为什么要避免新的操作符。 在Lua中不是这样的,坏的部分已经被删除了,例如,在版本5.x中,标准的语法范围替代了古怪的高价值东西。

我的观点其实就是Lua是一种比大多数其他语言都less得多的古怪语言! 我们把它用在一个商业项目中,我们对它感到满意。

总是有Lisp。 :)但是这强调了一个事实,即Lua实际上比大多数语言更不“古怪”。 它是为非程序员devise的,并且像伪代码一样读取。 它具有干净,统一的语义(一级嵌套函数,包含词法作用域;多重赋值;多个返回值;一个灵活的数据构造机制,具有清晰的构造函数语法;等等),使得学习,读取,写入等变得非常容易。它也恰好是意想不到的强大和performance力(适当的尾巴呼叫,延续,元编程等)

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

另外一种可能是由Lua启发的松鼠,其目标相似,但C语法。 我还没有用过,所以我不太清楚它是否达到目标。

我全心全意地为你的使用案例推荐Lua。 但是, Forth是另一种select,特别是对于资源受限的embedded式设备,尚未提及。

随着您的需求(小脚本,小怪癖和与C ++的集成),我能想到的唯一select是Common Lisp 。

在这个其他SO问题中的一些人正在build议CFFI将其与C.

但是,如果我在哪里,我会坚持与Lua。

Tcl从根本上被devise成一种embedded式语言,并且已经存在了几十年。 另外,由于其高度可扩展性,它是开发特定于领域的语言的完美select。

我不太了解DSP世界,但是当你使用谷歌“dsp lua”和“dsp tcl”时,Tcl的命中次数会增加两倍。

你考虑过Python吗? 有一个很好的扩展和embedded指南可用。 如果你使用Boost , Boost Python是一个用于C ++和Python之间无缝集成的库。

我知道Lua是这样的问题的行业select。

大胆的要求! 我build议,如果你已经在运行Linux,select是开放的。 Linux本身绝不是embedded式系统的“行业select”; 这个“行业”比这个更分散。

Forth是一种几乎可以在任何系统上执行的语言,无论性能,大小和操作系统(甚至是操作系统)。 可能不是最stream行的语言,但易于实现和扩展。

另一个候选者可能是ch ,这是一个可embedded的C / C ++解释器,所以你可以使用相同的语言编译和脚本代码。