嵌入式语言有哪些代替Lua的选择?

我正在处理一个在 DSP 上运行 Linux 的嵌入式系统。现在我们想让它的一些部分能够编写脚本,并正在寻找一个好的可嵌入脚本语言。这些脚本应该能够很好地集成到我们现有的 C++ 代码库中,并且应该很小而快。

我知道 Lua 是处理这类问题的行业选择。我们很可能会选择 Lua ,因为它已经经过了试验和证明是稳定的等等。然而,作为一种编程语言,它有一些相当古怪的角落。

那么,有哪些选项可用于嵌入式语言?

编辑:

这是大约一年后的事情。

我们实际上在我们的嵌入式系统上使用了 Lua ,并且表现得非常好。随着时间的推移,我们向项目的越来越多的部分添加了更多的脚本支持,这真的有助于推动它的进展。

性能非常出色。即使是涉及搜索长数组或花哨的字符串操作的相当复杂的操作,其性能表现也非常出色。我们基本上从来没有遇到与 Lua 相关的性能问题。

与 C 函数的接口非常简单直接,非常有效。这使我们能够轻松地扩展脚本系统。

最后,我们惊讶地发现 Lua 的灵活性。我们的 Lua 解释器必须运行在具有非标准内存分配器且不支持双精度数据类型的系统上。我们必须修改一个头文件中的两个有文档记录的位置才能让 Lua 在该系统上运行。它真的非常适合嵌入!

原文链接 https://stackoverflow.com/questions/4448835

点赞
stackoverflow用户489261
stackoverflow用户489261

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

2010-12-15 10:24:08
stackoverflow用户7432
stackoverflow用户7432

Tcl 是一种从零开始设计成嵌入式语言的编程语言,已经存在几十年了。此外,由于其高度可扩展性,它是开发领域特定语言的完美选择。

我不太了解 DSP 领域,但当通过 Google 搜索 "dsp lua" 和 "dsp tcl" 时,你会发现 Tcl 的结果是 Lua 两倍多。

2010-12-15 11:40:09
stackoverflow用户354668
stackoverflow用户354668

由于您提到了“嵌入式系统”、“小而快”和“良好整合”,因此我认为如果不是唯一的选择,Lua一定是第一选择。但我不再认为这种编程语言具有“古怪的角落”。首先,《Lua编程(Programming in Lua)》这本书非常棒,是我读过的最好的书之一。其次,一些“古怪的角落”来自于该语言非常正交和简洁,长远来看这是一种优势而不是缺陷。例如,我认为JavaScript更差。如果您阅读《JavaScript权威指南》(Javascript the good parts),作者会详细解释一些语言构造的设计错误以及为什么应该避免使用new操作符。而在Lua中,这些错误被去除了,例如在5.x版本中,古怪的upvalue被标准的语法作用域所取代。

我的观点实际上是,与大多数其他语言相比,Lua的“古怪角落”要少很多!我们在商业项目中使用它,我们对它非常满意。

2010-12-15 12:17:20
stackoverflow用户312586
stackoverflow用户312586

根据你的要求(小的存储占用、较少的怪癖和与 C++ 集成),我能想到的唯一选项就是Common Lisp

一些人在这个 Stack Overflow 问题中推荐使用CFFI来将其与 C 集成。

但如果是我,我会选择 Lua。

2010-12-15 17:29:45
stackoverflow用户1491
stackoverflow用户1491

我全心全意地推荐您使用 Lua。然而,Forth 也是一种供选择的语言,特别适用于资源受限的嵌入式设备,但此前尚未提及。

2010-12-15 20:52:27
stackoverflow用户501459
stackoverflow用户501459

将下面翻译成中文并且保留原本的 markdown 格式

总是会有 Lisp。:) 但这强调了Lua比大多数语言实际上更少“怪异”。它被设计用于非程序员,读起来像伪代码。它具有干净、统一的语法(具有词汇作用域的一流嵌套函数、多重赋值、多重返回值、具有干净构造函数语法的单一、灵活的数据构造机制等),这使得它非常容易学习、阅读、写作等。它也恰好是意外的强大和表达(适当的尾调用、续延、元编程等)。

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

另一个选择可能是Squirrel,它受Lua启发,有着类似的目标,但具有C样式的语法。我没有用过它,所以我不知道它是否实现了它的目标。

2010-12-15 22:34:26
stackoverflow用户168986
stackoverflow用户168986

我理解 Lua 是这样问题的行业选择。

这是个大胆的说法!如果您已经运行 Linux,选择也就很广泛了。Linux 本身并不是嵌入式系统的“行业选择”;该’行业‘远比那更分散。

一种可在任何系统上实现而无论性能、大小和操作系统(甚至没有操作系统)的语言是 Forth。可能不是最时髦的语言,但易于实现和扩展。

另一个候选者可能是 ch,它是一个可嵌入的 C/C++ 解释器,因此您可以为编译和脚本代码使用相同的语言。

2010-12-17 10:00:34
stackoverflow用户4237598
stackoverflow用户4237598

更近期的选择是wren

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

Wren 是一种脚本语言,旨在嵌入应用程序中。它没有依赖项,一个小型标准库,并且具有易于使用的 C API。它可以以 C99、C++98 或任何更高版本进行干净的编译。

2021-03-22 02:16:29