网易首页 > 网易号 > 正文 申请入驻

在C++项目中引入Lua(AlphaGo使用的方案)

0
分享至

最近大火的AlphaGo,其中的deepmind已经开源,可以到github中下载https://github.com/deepmind/lab·,网上还有一个基于Python开源AlphaGo,那个不是google的。通过看deepmind源码,我们可以知AlphaGo使用的是C++和Lua方案。当然语言不是AlphaGo的重点,但还是说明了c++和Lua方案能够完成大型的项目。
从2009年开始在三维仿真项目中引入Lua,C++项目的开发效率得到了大幅度。在我们三维仿真这种对性能要求较高的项目中,Lua对性能并没有造成大的影响。我最早接触Lua是看到魔兽世界中的任务脚本,后来看了云风的博客,他在网易的网游中引入了Lua,这让我确定了在我的项目中引入这种脚本。当前还有很多应用程序和游戏也是使用LUA作为嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽世界、博德之门、愤怒的小鸟、VOCALOID3、太阳神三国杀 等。你在玩游戏时看他的安装目录中,你会经常看到lua后缀的脚本文件。
从2010年我公司开始进入视频处理领域,由于视频分析处理对性能要求和技术要求较高,所以开发成本也很高,一般一两年c++经验的开发人员很难做出成果,但是在引入了Lua之后,一些新人也可以参与到项目中去了,在核心架构搭建好后,通过引入Lua将部分业务逻辑放到Lua中开发,不仅提高了开发效率,对开发人员要求也降低了。
在这多年项目开发中总结出来,对于c++项目不管多大,一定要引用一种脚本,Lua是其中比较成熟可靠的方案。Lua脚本源码非常小没有依赖,可以很容易在各个平台上编译,Lua源码不仅提供了执行代码,还提供了编译代码,也就是说你可以将你写过的Lua脚本进行编译以防止源码泄露,并提高执行效率。Lua脚本内部还提供了调试断点函数,所以你可以自己开发一个调试工具,当然也有第三方提供的开源断点调试工具,我们都知道写c++程序如果不能调试那开发效率一定会大幅度降低。这也是我使用Lua,暂时还没有使用node.js的原因。
下面介绍一下Lua:
Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
Lua还具有其它一些特性:同时支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程 ,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
我们做一个示例 lua调用c++函数
////////////////////////////////////////////////////////////////////////////
///C++代码部分
int LuaCallC(lua_State *L)
{
//获取第一个参数
int para1 = lua_tonumber(L, 1);
//获取第二个参数
int para2 = lua_tostring(L, 2);
return 0;
}
//注册这个C++函数给lua调用
lua_register(lua, "LuaCallC", LuaCallC);
-----------------------------------------------------
---Lua代码部分
---调用c++函数
LuaCallC(100,"teststring")
这个示例只是演示下调用过程,多类型参数、返回值、类型检查都没有加。但通过这个示例可以看出来C++与Lua交互的简单,同样C++调用Lua函数也比较简单。后面我会再来出一些详细教学文章。
也可以看我一个视频教程

C++与Lua联合编程实战(c++程序员必备技能)

http://edu.51cto.com/course/course_id-7559.html

本文出自 “夏曹俊” 博客,谢绝转载!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
曾国藩晚年醒悟:精明不如厚道,厚道不如格局,格局不如拙诚

曾国藩晚年醒悟:精明不如厚道,厚道不如格局,格局不如拙诚

千秋文化
2026-02-18 09:27:41
68岁赵本山蹲炕头吃酸菜炖鹅,那双掉漆筷子比好多人朋友圈还真实

68岁赵本山蹲炕头吃酸菜炖鹅,那双掉漆筷子比好多人朋友圈还真实

喜欢历史的阿繁
2026-02-17 23:12:52
2月18日俄乌:泽连斯基的硬气回应

2月18日俄乌:泽连斯基的硬气回应

山河路口
2026-02-18 17:13:09
已婚也逃不过!在爱泼斯坦的安排下,比尔盖茨和安妮·海瑟薇会面

已婚也逃不过!在爱泼斯坦的安排下,比尔盖茨和安妮·海瑟薇会面

蓝猫说剧
2026-02-10 20:59:41
女儿正上大学突然失联,2年后父亲上网发现其已结婚生子!“闺女叫他们洗脑了!”婆家却指娘家“偏心兄弟”:叫儿媳拾破衣服穿!

女儿正上大学突然失联,2年后父亲上网发现其已结婚生子!“闺女叫他们洗脑了!”婆家却指娘家“偏心兄弟”:叫儿媳拾破衣服穿!

大象新闻
2026-01-27 17:45:03
这6种隔夜菜太危险,宁可倒掉也别吃!

这6种隔夜菜太危险,宁可倒掉也别吃!

极目新闻
2026-02-17 20:17:46
家庭存款达标线公布!达到这个数,就超过全国80%家庭

家庭存款达标线公布!达到这个数,就超过全国80%家庭

慧眼看世界哈哈
2026-02-18 16:35:15
大衣哥女儿回娘家头发油腻不讲究,夫妻分道,大衣嫂气质出众

大衣哥女儿回娘家头发油腻不讲究,夫妻分道,大衣嫂气质出众

阿斚田侃故事
2026-02-18 18:05:50
厅长父亲是如何为孩子发展布局的?艰苦一线非去不可!

厅长父亲是如何为孩子发展布局的?艰苦一线非去不可!

墙头草
2026-02-18 20:14:55
铁了心对付中国?暴跌58%,俄罗斯大幅加税,中国汽车栽得太冤了

铁了心对付中国?暴跌58%,俄罗斯大幅加税,中国汽车栽得太冤了

爱吃醋的猫咪
2026-02-01 19:36:46
除夕夜一过,属虎、属兔、属蛇、属羊这四个生肖,日子要松快起来

除夕夜一过,属虎、属兔、属蛇、属羊这四个生肖,日子要松快起来

牛锅巴小钒
2026-02-17 07:12:17
全国普遍现象:80%的人都被房贷困住了

全国普遍现象:80%的人都被房贷困住了

流苏晚晴
2026-02-18 18:15:36
小野六花、河合明日菜、天马唯、三上悠亚、南乃空 日本美女明星

小野六花、河合明日菜、天马唯、三上悠亚、南乃空 日本美女明星

鹿鹿156
2026-02-19 03:08:36
马斯克赢了!首辆Cybercab下线,无方向盘定价17万起

马斯克赢了!首辆Cybercab下线,无方向盘定价17万起

沙雕小琳琳
2026-02-18 16:56:09
加代不给康哥面子,暴打兵部副总管!叶三哥维护代哥古俊山被革职

加代不给康哥面子,暴打兵部副总管!叶三哥维护代哥古俊山被革职

阿柒故事汇
2026-02-05 16:42:27
赛季报销!独行侠官宣:欧文本季不复出 本人表态决定并不容易

赛季报销!独行侠官宣:欧文本季不复出 本人表态决定并不容易

醉卧浮生
2026-02-18 23:08:20
男人心里有多爱你,过年就能看出来

男人心里有多爱你,过年就能看出来

莲子说情感
2026-02-16 12:49:14
两年了,为何许家印迟迟不判刑?真相比你想象的更复杂!

两年了,为何许家印迟迟不判刑?真相比你想象的更复杂!

李云飞Afey
2026-01-20 11:43:34
活了30多年:才知道滚筒洗衣机的6个正确用法,难怪衣服洗不干净

活了30多年:才知道滚筒洗衣机的6个正确用法,难怪衣服洗不干净

装修秀
2026-02-17 10:45:03
美国媒体惊叹:过中国年,怎么就成了席卷全球的新潮流?

美国媒体惊叹:过中国年,怎么就成了席卷全球的新潮流?

命运自认幽默
2026-02-18 10:12:28
2026-02-19 04:47:00
老夏课堂
老夏课堂
老夏课堂的编程技术
22文章数 70关注度
往期回顾 全部

头条要闻

以色列提升全国警戒级别 加紧军事准备

头条要闻

以色列提升全国警戒级别 加紧军事准备

体育要闻

首金!苏翊鸣唱国歌落泪 自信比1呐喊

娱乐要闻

明星过年百态!黄晓明等现身三亚

财经要闻

面条火腿香菇酱!上市公司这些年请你吃

科技要闻

怒烧45亿,腾讯字节阿里决战春节

汽车要闻

量产甲醇插混 吉利银河星耀6甲醇插混版申报图

态度原创

教育
亲子
时尚
数码
本地

教育要闻

60后父母们的爱与焦虑

亲子要闻

一群小可爱,一群好家长,用最甜的声音,唱最暖的歌声,有缘相聚

马年壁纸送上,祝大家新年快乐,马上发财!

数码要闻

盛色推出星舰S009带鱼屏显示器,4199元

本地新闻

春花齐放2026:《骏马奔腾迎新岁》

无障碍浏览 进入关怀版