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



