Lua和C之间有什么关系?

What is the relation between Lua and C?

我要在几周内在一家软件公司实习,以弄清楚我是否应该以软件程序员的身份开始学徒期。我通过游戏在Lua上有一些(非常)基本的经验,我在实习简历中说过,他们告诉我他们有一个可以在我的经验基础上发展的项目。
因此,我决定获得更多知识,并弄弄Lua-将我引向这个问题。

我知道Lua是一种脚本语言,并且通常嵌入在C程序中。据我了解,Lua本身是用非常基本的C语言编写的,如果单独使用,它也有自己的解释器。如果是这种情况,是否正确:

无论我是独立使用Lua还是嵌入在C-Programming环境中,它的底层都将始终使用C-Code?

由于这是一种脚本语言,因此我在Lua中使用命令所做的基本上就是访问和命令底层的C命令,就像告诉C做什么一样?


No matter if I use Lua stand-alone or embedded in a C-Programming
environment, underlying it will always use C-Code?

C通常是一种编译语言,因此在运行时,Lua的C源代码不再相关。但是从该C源代码派生的机器代码将始终与执行您的Lua代码有关,因此从这种意义上讲。

但这不一定意味着您需要了解有关C的任何知识才能编写Lua代码。

And since it is a
scripting language, what I do with commands in Lua is basically
accessing and commanding underlying C commands, as in telling C what
to do?

将Lua称为"脚本语言"与Lua代码的形式及其创建灵感更多有关,而不是与Lua的工作方式有关。尽管有任何独立的解释器,但仍将其设计为嵌入程序中,以用于这些程序的脚本行为。当然,所有这些都是用C实现的,但是作为Lua程序员,您不应将其视为Luapackage相应的C函数。

实际上,作为Lua程序员,您可能根本不需要考虑它。但是,如果您确实考虑过这一点,那么更好的模型是基于Lua的脚本环境以特定于程序的方式package程序数据和行为。


Lua是一种解释性语言,也就是Wiki非正式地将其称为"软件处理的"语言。 Lua被编译为字节代码(不要与机器代码混淆。)并在运行时由软件解释器执行。 C是一种编译语言,可从源代码编译为机器代码并由硬件执行。如果您想获取技术知识,则在编译时,C源代码不再是C。

我迷恋地使用Lua,几乎只是为了使用它而竭尽全力。我尝试在我的所有项目中实现它,甚至已经使用解释语言的项目也是如此。您绝对可以单独在Lua上走得很远,但是我强烈建议您学习一些C语言,以便可以扩展功能。至少要学习如何制作可以作为Lua模块加载的DLL。另外,如果您使用LuaJIT,则学习C会很方便,因为您可以直接使用FFI调用C导出的库函数。我的最终建议是,您应该阅读有关解释型语言和Lua的缺点的信息。如果您的软件需要高度安全或足够稳定以自动驾驶飞机,那么您当然就不想使用它,这时需要现代C语言方面的知识。