找回密码
 立即注册
查看: 377|回复: 8

Lua 有哪些优点,适用于哪些场景?

[复制链接]
发表于 2022-1-10 11:36 | 显示全部楼层 |阅读模式
C\C++的绝好伴侣,C\C++是静态编译型语言,Lua是动态解释型语言.当然,要做到动态也不是不行,C++可以用模板,C可以用宏,但是大量使用这些特性的项目代码是不能看的...
所以,C\C++ + Lua = 性能 + 动态性. 一边是性能,一边是灵活.
当前可以看到这部分用的最好的例子,ngx_lua,迅雷的blot界面引擎,WOW的脚本引擎,应该还有其他,涉猎不光不知道的更多了.
发表于 2022-1-10 11:41 | 显示全部楼层
C\C++的绝好伴侣,C\C++是静态编译型语言,Lua是动态解释型语言.当然,要做到动态也不是不行,C++可以用模板,C可以用宏,但是大量使用这些特性的项目代码是不能看的...
所以,C\C++ + Lua = 性能 + 动态性. 一边是性能,一边是灵活.
当前可以看到这部分用的最好的例子,ngx_lua,迅雷的blot界面引擎,WOW的脚本引擎,应该还有其他,涉猎不光不知道的更多了.
发表于 2022-1-10 11:47 | 显示全部楼层
谢谢邀请。
Lua 最大的好处就是小,绝对的小,可以嵌入任何程序而我们几乎可以忽略为此增加的大小。这门语言的功能基本是完备的。作为配置文件可以达成非常复杂的配置逻辑。看看 WoW 的各种插件和宏就知道了。
缺点么,其实都还好。我唯一不满的是它没有处理 UTF-8 的逻辑。所有的字符串当作字节流处理。多数情况下这不是什么大问题,但可惜我的工作和 Unicode 和字符串关系颇大,所以对这类功能支持一直非常敏感。
发表于 2022-1-10 11:56 | 显示全部楼层
除了上面提到的与C/C++交互,lua还有一个重要的优点是语法简单,可以用做数据描述,甚至构造DSL,一个例子是premake:作为一个C++的元编译系统,用lua来”描述“C++项目,可以看一个简单的例子:
A Sample Script
(知乎不支持代码格式吗。。。)
这看起来像是一个配置文件,非常简单易懂,但这确实就是lua代码,除了简单,用一门真正的语言来“描述”来项目,多了更多的灵活性,比如你可以使用if, else, for...等等来完成一些复杂的描述。
发表于 2022-1-10 12:00 | 显示全部楼层
这篇文章,也许可以回答你的问题:
[46]脚本语言Lua的特点是什么?(同Python,Ruby,Perl等对比)另外,这里还有几篇Lua和C++混合编程的入门介绍文章
从中可以很明显地认识到Lua的特点以及他的应用场景
[47]一半是性能,一半是灵活——C++和Lua的混合编程(在Windows平台编译并安装Lua)关于Lua的 系列文章 Lua | 有{間}客栈
发表于 2022-1-10 12:03 | 显示全部楼层
容易和C/C++交互,内核小巧,极易嵌入到其他程序,可当做一种配置语言
经常用于游戏开发中,魔兽世界,愤怒的小鸟都有用到
发表于 2022-1-10 12:13 | 显示全部楼层
Lua本来就是嵌入式,
那么用途就是粘合粘合粘合。
本身很好的与C/C++交互效果非常棒。
加上本身是有开源解释器。
内嵌入程序,可以很好的利用其增量更新的特性。
在提供bind库完善的前提上,是可以几乎不需要从新编译程序来更新程序的
发表于 2022-1-10 12:16 | 显示全部楼层
awesome(一个linux wm)的介绍是这样的
awesome tries to complete these tools with what we miss: an extensible,highly configurable window manager.
To achieve this goal, awesome has been designed as a framework windowmanager.It's extremely fast, small, dynamic and heavily extensible using theLua programming language.
发表于 2022-1-10 12:22 | 显示全部楼层
由Lua 粘合的Nginx生态环境
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-14 19:25 , Processed in 0.229755 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表