Lua 和 C 之间的关系是什么?

我即将开始一家软件公司的实习,以确定我是否要开始为软件程序员学徒的实习生涯。我在简历上提到了我在游戏中使用 Lua 的(非常)基本经验,他们告诉我有一个项目可以借此增加经验。 所以我决定多了解一些并且琢磨 Lua - 这就是我提出这个问题的原因。

我知道 Lua 是一种脚本语言,通常被嵌入到 C 程序中。从我的理解来看,Lua 本身是用非常基础的 C 语言编写的,并且如果单独使用,也有自己的解释器。如果是这样,那么是否正确地认为:

无论我是单独使用 Lua 还是将其嵌入到 C 编程环境中,底层始终会使用 C 代码?

而且,由于它是一种脚本语言,我在 Lua 中使用命令的本质就是访问和控制底层的 C 命令,就像告诉 C 做什么一样吗?

点赞
用户2402272
用户2402272

无论是使用Lua独立运行还是嵌入C编程环境中,它的底层始终使用C代码?

C通常是一种编译语言,因此在运行时,Lua的C源代码不再相关。但是从这些C源代码得到的机器代码始终会参与执行Lua代码,因此从这个意义上说,是的。

但是这并不一定意味着您需要了解C来编写Lua代码。

而将Lua称为“脚本语言”,更多的是与Lua代码的形式以及其创建灵感有关,而不是与Lua的运行方式相关。不管单独的解释器如何,它都是设计用于嵌入程序中,用于脚本化这些程序的行为。当然,所有这些都是通过C实现的,但作为Lua程序员,您不应该认为它是Lua包装相关的C函数。

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

2019-11-09 14:59:28
用户5113346
用户5113346

Lua是一种解释语言,或者维基百科非正式地称之为“软件处理语言”。 Lua被编译成字节码(不要与机器码混淆)并在运行时由软件解释器执行。 C是一种编译语言,它从源代码编译成机器码并由硬件执行。如果您想要技术上的话,当C源代码被编译时,它就不再是C了。

我痴迷于使用Lua,甚至会特地使用它。 我尝试在所有项目中实现它,甚至是正在使用解释语言的项目。 你肯定可以单纯地使用Lua,但我强烈建议您学习一些C,以便扩展功能。至少学习如何创建可以作为Lua模块加载的动态链接库(DLL)。或者,如果您使用LuaJIT,学习C也将非常有用,因为您可以直接使用FFI调用C导出的库函数。 我最后的建议是,您应该阅读有关解释语言和Lua的缺点。 如果您的软件需要高度安全或稳定足以自动驾驶飞机,那么现代C++教育是必要的。

2019-11-10 11:13:01