Lua和C有啥关系?
Posted
技术标签:
【中文标题】Lua和C有啥关系?【英文标题】:What is the relation between Lua and C?Lua和C有什么关系? 【发布时间】:2020-03-05 21:36:53 【问题描述】:几周后我将在一家软件公司实习,以确定是否应该开始作为软件程序员的学徒。我通过游戏获得了一些(非常)基本的 Lua 经验,我在实习简历中说明了这一点,他们告诉我他们有一个项目,我可以在此经验的基础上再接再厉。 所以我决定获取更多知识并摆弄 Lua - 引导我提出这个问题。
我知道 Lua 是一种脚本语言,而且它通常嵌入在 C 程序中。据我了解,Lua 本身是用非常基本的 C 语言编写的,如果单独使用,它也有自己的解释器。如果是这样,是否正确:
无论我是单独使用Lua还是嵌入到C编程环境中,它的底层总是使用C-Code?p>
由于它是一种脚本语言,我在 Lua 中对命令所做的工作基本上是访问和命令底层 C 命令,就像告诉 C 要做什么一样?
【问题讨论】:
基本正确。 Perl 和 Python 也是如此。 【参考方案1】:无论我是单独使用 Lua 还是嵌入到 C 编程中 环境,底层总是使用C-Code?p>
C 通常是一种编译语言,因此在运行时 Lua 的 C 源代码不再相关。但是从那个 C 源代码派生的机器代码将始终参与执行你的 Lua 代码,所以从这个意义上说是的。
然而,这并不一定意味着您需要对 C 有任何了解才能编写 Lua 代码。
因为它是一个 脚本语言,我在 Lua 中对命令所做的基本上是 访问和命令底层 C 命令,如告诉 C 什么 怎么办?
将 Lua 称为“脚本语言”更多地与 Lua 代码的形式及其创建灵感有关,而不是与 Lua 的工作原理有关。尽管有任何独立的解释器,但它被设计为嵌入程序中,用于编写这些程序的行为的脚本。当然,所有这些都是用 C 实现的,但作为 Lua 程序员,你不应该认为它是 Lua 包装了相应的 C 函数。
确实,作为 Lua 程序员,您可能根本不需要考虑它。但是,如果您确实考虑过,那么更好的模型是基于 Lua 的脚本环境以特定于程序的方式包装程序数据和行为。
【讨论】:
【参考方案2】:Lua 是一种解释性语言,或者 wiki 非正式地将其称为“软件处理”语言。 Lua 被编译成字节码(不要与机器码混淆),并在运行时由软件解释器执行。 C 是一种编译语言,它从源代码编译成机器代码并由硬件执行。如果你想获得技术,C 源代码在编译后不再是 C。
我痴迷地使用 Lua,几乎不顾一切地使用它。我尝试在我的所有项目中实现它,甚至是已经使用解释语言的项目。你绝对可以单独使用 Lua,但我强烈建议你学习一些 C 语言,以便扩展功能。至少要学习如何制作可以作为 Lua 模块加载的 DLL。或者,如果您使用 LuaJIT,学习 C 语言会很方便,因为您可以直接使用 FFI 调用 C 导出的库函数。我最后的建议是你应该阅读解释语言和 Lua 的缺点。如果您的软件需要高度安全或足够稳定以自动驾驶飞机,那么您肯定不想使用它,此时需要接受现代 C++ 教育。
【讨论】:
以上是关于Lua和C有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章
oracle数据库11g和18c有啥区别? oracle sql developer和oracle apex与这些有啥关系?