随笔 - 505  文章 - 1034  trackbacks - 0
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910


子曾经曰过:编程无他,唯手熟尔!

常用链接

留言簿(94)

随笔分类(649)

随笔档案(505)

相册

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

积分与排名

  • 积分 - 903797
  • 排名 - 14

最新随笔

最新评论

阅读排行榜

评论排行榜

最近花了2天过了一遍PIL,意图对脚本语言有一个基本印象,并思考出它在游戏程序中的运用。过完PIL后,令我印象深刻的不是它的语言特性,而是这个库本身所代表的设计理念。(LUA首先是一门语言,源代码中有完成语言解释执行工作的虚拟机,并且还有C和LUA交互的库接口)
LUA库分为三个部分:核心,wrapper,add-ons。每个部分的设计和定位都十分棒。
看核心部分,由纯C构成,并且将通讯接口做到最小化。这里不得不再赞赏一下C,作为一种平坦的语言,能用相当明了的接口完成库的任务。在做一个库的设计的时候,首先就要决定把库的任务最小化,遵循KISS原则,一个库只做一件事情。由于核心本身要完成的任务很小,同时由于用C编写,所以会极为容易设计出一个紧凑而正交的接口。LUA的核心就是这个样子的,lua.h。
另一方面,并不是用C就可以设计出紧凑而正交的接口的。对于库来说,如果能把库的功能界定在很小的范围内,那么就不会有甚么问题,但是试图在一个工程中用C设计出紧凑而正交的接口完成工程,基本上很难,因为一个工程通常都不是只打算做一件事情,而是通过好些事情完成任务。
由于LUA核心部分的接口太过紧凑,太过KISS,使用的时候需要补充许多代码,这个时候,wrapper就发挥作用了。wrapper可以用C/C++编写,不再考虑接口的紧凑性,为了实现该库的简易上手可以借用任何手段。作为库的开发者,可以提供一个简单的wrapper,并且可以依靠社区的力量给该库增加各种各样的wrapper,以适用不同目的。lauxlib.h就是这样的wrapper
add-ons是拓展一个库的功能的关键,依赖于社区的力量,可以使得你的库越来越强大。因此,库的核心部分必须要留出一个add-ons的空位,add-ons一般是基于动态链接库的方式完成。
posted on 2007-08-29 11:19 七星重剑 阅读(687) 评论(0)  编辑 收藏 引用 所属分类: PL--Lua

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理