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/m.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燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP