0
C/C++  与  Lua  的混合编程
为什么需要使用多于一种语言? <ul><ul><li>性能与扩展性互重 </li></ul></ul><ul><ul><li>不同的层面需要不同的语言描述需求 </li></ul></ul>
为什么是  C ? <ul><ul><li>为底层开发人员最熟悉 </li></ul></ul><ul><ul><li>大部分操作系统层面和通用库均提供  C API </li></ul></ul><ul><ul><li>性能可以得到保证 </...
为什么是  Lua ? <ul><ul><li>容易嵌入 </li></ul></ul><ul><ul><li>轻量 </li></ul></ul><ul><ul><li>语言特性补充了  C  的不足 </li></ul></ul><ul><...
获得的好处 <ul><ul><li>隔离底层,让系统更健壮 </li></ul></ul><ul><ul><li>降低开发成本 </li></ul></ul><ul><ul><li>应付多变的需求 </li></ul></ul><ul><ul>...
易出现的问题 <ul><ul><li>多语言构建的系统更为复杂 </li></ul></ul><ul><ul><li>层次划分不清,职责混乱 </li></ul></ul><ul><ul><li>把  Lua  当成  C/C++  来用 </...
嵌入还是扩展,这是一个问题 <ul><ul><li>选择 1:  以  C  语言为主体,将  Lua  嵌入 </li></ul></ul><ul><ul><li>选择 2:  以标准  Lua  解释器为主体,编写  C  扩展 </li>...
Lua  作为数据描述语言 <ul><ul><li>配置管理 </li></ul></ul><ul><ul><li>处理结构化数据 </li></ul></ul><ul><ul><li>XML (LuaExpat/LOM) </li></ul>...
为  Lua  编写  C/C++  模块 <ul><ul><li>luabind (boost.python?) </li></ul></ul><ul><ul><li>tolua  </li></ul></ul><ul><ul><li>lua...
面向对象 <ul><ul><li>C++  层的对象粒度 </li></ul></ul><ul><ul><li>userdata/lightuserdata/handle ? </li></ul></ul><ul><ul><li>对象生命期管理...
调试 <ul><ul><li>lua debug  库 </li></ul></ul><ul><ul><li>阅读  lua source code </li></ul></ul><ul><ul><li>debug API </li></ul>...
系统性能优化 <ul><ul><li>重写内存分配器 </li></ul></ul><ul><ul><li>保持  C  层次的简洁 </li></ul></ul><ul><ul><li>理解  Lua  ,它是一门独立语言 </li></ul...
参考资料 <ul><ul><li>http://www.lua.org </li></ul></ul><ul><ul><li>lua mailling list </li></ul></ul><ul><ul><li>书 </li></ul></...
谢谢
Upcoming SlideShare
Loading in...5
×

C/C++与Lua混合编程

2,790

Published on

最近一直在考虑在高效c++上层,用一个动态语言封装一个可以动态解析输入,并传递给c++的层。
之前的PHP有一些缺陷,考虑用Python或lua做。
这篇ppt来自云风

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,790
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
29
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "C/C++与Lua混合编程"

  1. 1. C/C++ 与 Lua 的混合编程
  2. 2. 为什么需要使用多于一种语言? <ul><ul><li>性能与扩展性互重 </li></ul></ul><ul><ul><li>不同的层面需要不同的语言描述需求 </li></ul></ul>
  3. 3. 为什么是 C ? <ul><ul><li>为底层开发人员最熟悉 </li></ul></ul><ul><ul><li>大部分操作系统层面和通用库均提供 C API </li></ul></ul><ul><ul><li>性能可以得到保证 </li></ul></ul><ul><ul><li>C++ 亦可,但不推荐 </li></ul></ul>
  4. 4. 为什么是 Lua ? <ul><ul><li>容易嵌入 </li></ul></ul><ul><ul><li>轻量 </li></ul></ul><ul><ul><li>语言特性补充了 C 的不足 </li></ul></ul><ul><ul><li>还有其它的选择 </li></ul></ul><ul><ul><ul><li>Python </li></ul></ul></ul><ul><ul><ul><li>Javascript </li></ul></ul></ul><ul><ul><ul><li>自定义语言 </li></ul></ul></ul>
  5. 5. 获得的好处 <ul><ul><li>隔离底层,让系统更健壮 </li></ul></ul><ul><ul><li>降低开发成本 </li></ul></ul><ul><ul><li>应付多变的需求 </li></ul></ul><ul><ul><li>热更新系统 </li></ul></ul><ul><ul><li>数据描述更方便 </li></ul></ul><ul><ul><li>能做到单一语言难以做到的 </li></ul></ul>
  6. 6. 易出现的问题 <ul><ul><li>多语言构建的系统更为复杂 </li></ul></ul><ul><ul><li>层次划分不清,职责混乱 </li></ul></ul><ul><ul><li>把 Lua 当成 C/C++ 来用 </li></ul></ul><ul><ul><li>定义不恰当的 DSL </li></ul></ul>
  7. 7. 嵌入还是扩展,这是一个问题 <ul><ul><li>选择 1: 以 C 语言为主体,将 Lua 嵌入 </li></ul></ul><ul><ul><li>选择 2: 以标准 Lua 解释器为主体,编写 C 扩展 </li></ul></ul>
  8. 8. Lua 作为数据描述语言 <ul><ul><li>配置管理 </li></ul></ul><ul><ul><li>处理结构化数据 </li></ul></ul><ul><ul><li>XML (LuaExpat/LOM) </li></ul></ul>
  9. 9. 为 Lua 编写 C/C++ 模块 <ul><ul><li>luabind (boost.python?) </li></ul></ul><ul><ul><li>tolua  </li></ul></ul><ul><ul><li>lua native C API </li></ul></ul>
  10. 10. 面向对象 <ul><ul><li>C++ 层的对象粒度 </li></ul></ul><ul><ul><li>userdata/lightuserdata/handle ? </li></ul></ul><ul><ul><li>对象生命期管理问题 </li></ul></ul><ul><ul><li>lua metatable 带来的动态性 </li></ul></ul><ul><ul><li>C/Lua 交互的性能 </li></ul></ul>
  11. 11. 调试 <ul><ul><li>lua debug 库 </li></ul></ul><ul><ul><li>阅读 lua source code </li></ul></ul><ul><ul><li>debug API </li></ul></ul><ul><ul><li>IDE </li></ul></ul>
  12. 12. 系统性能优化 <ul><ul><li>重写内存分配器 </li></ul></ul><ul><ul><li>保持 C 层次的简洁 </li></ul></ul><ul><ul><li>理解 Lua ,它是一门独立语言 </li></ul></ul><ul><ul><li>LuaJIT </li></ul></ul><ul><ul><li>LuaCOM </li></ul></ul>
  13. 13. 参考资料 <ul><ul><li>http://www.lua.org </li></ul></ul><ul><ul><li>lua mailling list </li></ul></ul><ul><ul><li>书 </li></ul></ul><ul><ul><ul><li>Programming In Lua (Pil) </li></ul></ul></ul><ul><ul><ul><li>Lua 手册 </li></ul></ul></ul><ul><ul><ul><li>Lua Programming Gems </li></ul></ul></ul><ul><ul><li>http://blog.codingnow.com </li></ul></ul>
  14. 14. 谢谢
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×