http://www.ngnc.net/ngnc_result_of_iret.htm
《NGNc,“中断”返回的结果》
副标题:一个“类C”的脚本语言介绍;
副标题2:一个程序员“以文会友”“抛砖引玉”的帖子;
目录:
1、名称描述
2、简单规则描述
3、与“中断”的关系
名称阐述:
NGN=Engine音,C=c语言,开发初衷同其他脚本语言一样,目的是将引擎进行封装,使用脚本将数据和规则类数据移出引擎体,因此取名称“引擎”
简单规则描述:
同标准C基本兼容,兼容度未做评估,支持基本宏定义,标准C类型,控制,循环,函数体等;同ANSIc差距多少无法回答因为没仔细研究过;只讲述些不同点:比如:IF ,必须使用()将表达式包裹起来,然后跟其他表达式或程序指令块“{}block”,而NGNc则不需要(),而是用“,”分割条件表达式和程序体表达式,还有个更好地就是灵活的常量赋值机制,主要就是用来定义外部数据而专门支持的,一定比标准的c好用;
与“中断”的关系:
中断是机器BIOS中最重要的概念,当系统外部设备有请求时,比如鼠标,串口数据同步请求等,都会产生中断,这在一个单CPU的环境下,系统会保存当前机器状态,响应这个请求,在请求完成后,就恢复设备状态;“NGNc”就是一个中断请求,将我这个单CPU大脑中断,待响应结束IRET后,“NGNc”就呈现在了我的面前;
一直以来,用VC的IDE环境开发项目,并组织和管理项目需要的文件,尽管VC的功能很强大,但在项目后期,每每都是因为修改个别的数据,而重新编译整个项目,麻烦。起初,通过设计系统的数据文件格式,将数据文件搬移出项目,将引擎和数据分离,在只修改数据的时候,用数据编辑器或简单文本描述文件进行。编制数据编辑器当然有可以避免规范数据输入等优点,但额外工作产生了。文本描述成为我们主要的目标。
最初文本描述方法简单,比如Window的Ini文件管理模式。随着文本文件格式的逐步复杂,文本文件到特定数据格式的转换工具越来越想向C语言转变。这就是NGNc的第一个产生的契机。我们叫它“DataOut”,顾名思义就是将数据拿出来的意思。
项目开发的越多,项目后期的对控制逻辑和规则描述的需求也逐步呈现出来。仅仅DataOut已经不能满足我们的需要,起初同文本数据描述一样,只是简单的规则罗列,但随着功能的发展,支持简单的类C语言的规则书写方式被支持了。
发展到现在NGNc已经完全成为了真正的C语言,并拥有自己的虚拟机。我们现在的开发已经越来越喜欢这种开发模式:任何项目通过NGNc脚本语言的使用,自然地将系统做了良好的分割,降低了子系统间的偶合程度,令Team的协作更清晰简单。整体的系统复杂程度的降低,和管理效率的提高是脚本语言使用的功劳。下面讲述几个NGNc应用的例子,来说明它的好处。
NGNc应用举例1:
FileAna,一个使用脚本语言的文件分析工具:
FileAna的产生来源于频繁的文件格式分析和格式转换,数据提取的工作。比如:互联网刚发展初期,很多网站为了让内容快速“丰富”起来,编制机器人上其他同类网站“抓”内容是常有的事情。频繁地搜索定位,提取转换,累死个人儿。研究研究其他游戏引擎,分析分析游戏资源想来会对开发很有帮助,数据是核心的核心。
每次分析一个目标文件的流程:观察(用眼看)目标文件,用经验简单猜测个数据结构,打开以前的VC工程文件,修改一下其中的数据定义,开始尝试搜索,运气好一遍不成2遍应该可以搞定。总之,经过N次尝试,成功是不成问题的。每次的分析都是这样,最后用IDE管理了一大堆数据格式。“好象VC的IDE对数据格式的管理能力很弱吧”。
NGNc脚本在FileAna的用处就集中在:数据格式描述,搜索规则描写,数据提取和转换(输出成新的格式的文件,或数据库记录)。而有关于常用的支持函数,用户操作界面等,则使用MFC的窗口系统实现。
FileAna的使用方法,变得简单,简化的主要在于修改数据格式和搜索策略的调整效率大大提高,切数据格式的管理以及通常的搜索策略的积累变的集中,不需要每次在不同的工程文件间拷贝代码了。且常用的文件格式输出也很自然。
(着重说明:NGNc的数据描述方法和规则描写是C语言习惯,这非常符合程序员的习惯,好用)
NGNc的开发模式,“抛砖引玉”:
NGNc同其他语言一样,不在于语法规则的精妙,而更在于其函数库,以及支持的引擎的丰富程度,NGNc将以开放的方式提供给拥有引擎的开发者,为引擎的使用封装一个简洁清晰的接口,令使用者更加专注于应用而非“白手起家”,屏蔽掉不必要的中断,而将每个单CPU才智发挥到极至;此文意在此结交更多的朋友,奉上拙见以供参考;
(有兴趣的朋友,请看本站提供的开放式开发项目:《NGNcalc2x》的相关内容)
(这里是《“NGNide集成调试环境”简介》“NGNc专用”)
(还有《致朋友》的公开信)