C_and_CPP 板


LINE

※ 引述《Neisseria (Neisseria)》之铭言: : 最近朋友推坑 Lua,试了一下,语法不会太难 : 感觉有点像语法比较乾净的 JavaScript,还蛮有意思的 Lua 超赞的啊,不只是语法乾净,整个 runtime 也很小 後面我再讲为什麽这个「runtime很小」扮演重要角色 : 後来试着将 Lua 和 C 结合,采用以下方法: : 法 1: 分别用 dostring 将两段 Lua code 分别死在 C 程式中 : 范例 https://pastebin.com/FQn1WZUa : 法 2: 将 Lua code 写在外面,C 只是用来呼叫 Lua script : 范例 https://pastebin.com/zfviHkaK : 但是,觉得用比较快的语言 (C) 包比较慢的语言 (Lua) 好像怪怪的 : 是不是应该先写 C struct (as class),再用 Lua 呼叫 : 最後再用 C 将 Lua 包起来,像这样: : C main app --> Lua script --> C struct (as class) : 不知道 Lua 实际上怎麽用会比较好用 : 上来问各位大大 : 感谢 C/C++ 版 C 与 Lua 会结合,就是因为没有十全十美的程式语言 C 的优点是执行效率高,缺点是写起来麻烦又不安全(undefined behavior) Lua 跑起来虽然慢,但写起来简单,开发速度快 我们要截长补短,所以并没有一定要让谁呼叫谁比较好的规则,而是看需求: * 程式规格固定、需要高效率、或是要呼叫底层函式的部份用 C 写 * 规格时常变动,需要快速做出来验证效果的,用 Lua 来写 * 想要更高的弹性,因此设计 plug-in 系统,更适合用 Lua 比如说你想做个爬网页的程式,那麽开 socket 的部份自然得用 C 写 但是网页抓下来後你可能想做各式各样的动作,像是存图片、扫瞄关键字等等 这部份用 Lua 写就可以很灵活的变化,这种情况是 Lua 呼叫 C 又比如说许多游戏引擎使用 C++ 来实作运算吃重的核心 但是会在特定位置呼叫外部的 Lua script 这麽一来就可以用 Lua 快速实做出不同玩法的游戏 等到玩法确定後,再把需要效能改善的部份用 C++ 重写 如果全部都用 C++ 开发,那麽开发时程是会大幅拉长的 另一个 Lua 的优势是它的 runtime 很小,只依赖 standard c library 只要环境能跑 C 就可以把 Lua runtime 编起来跑 在 C 程式中包进一个 Lua interpreter 比起 python / ruby 是简单许多的 而且正因为 Lua standard library 功能非常阳春 当你想要设计 plug-in 系统时,会比较容易去禁止 plug-in 做坏事 反正它真需要什麽底层功能,你再给它对应的 library 即可 没有人规定给 C 呼叫的 function 一定要跑得和 C 一样快 选择适当的工具去满足开发需求,这才是程式设计师的专业所在 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.25.243.240
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1484745230.A.918.html
1F:推 Neisseria: 感谢大大说明,现在比较有概念了 01/18 21:34
2F:推 CoNsTaR: 对C来讲,或许包给Lua做事的部分可以在函式名称上有区别 01/19 03:54
3F:→ CoNsTaR: 没有人规定给C呼叫的函式一定要和C一样快 01/19 03:54
4F:→ CoNsTaR: 但是当你的系统里面存在越来越多这种和表面上看起来有一 01/19 03:54
5F:→ CoNsTaR: 点点不一样的东西 01/19 03:54
6F:→ CoNsTaR: 我想累积下来一定也不是什麽好事吧~ 01/19 03:54
7F:→ hichcock: 这篇写的很棒ㄚ~ 01/19 09:02
8F:→ hichcock: 重点在於 C + Lua 可以把效能 + 弹性的效果最大化 01/19 09:17
9F:推 shadow0326: 推 01/19 10:51
10F:推 eye5002003: 补个优点,lua语法简单,有机会开放让非程式人员修改 01/22 22:46
11F:→ alex70266: 重点是弹性阿,C call lua script 包 C module很常用 01/26 21:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP