已阅读5页,还剩74页未读, 继续免费阅读
(计算机应用技术专业论文)轻型脚本引擎的研究与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学位论文数据集 中图分类号 t p 3 1 4 学科分类号 5 2 0 4 0 4 0 论文编号 10 0 1 0 2 0 0 8 0 6 9 6 密级 公开 学位授予单位代码 l 0 0 1 0 学位授予单位名称北京化工大学 作者姓名符盛宝学号 2 0 0 8 0 0 0 6 9 6 获学位专业名称计算机应用技术获学位专业代码 0 8 1 2 0 3 课题来源自选项目研究方向脚本引擎开发 论文题目 轻型脚本引擎的研究与开发 关键词脚本引擎,虚拟机,v b l e t 论文答辩日期 2 0 1 1 一0 5 2 6论文类型 开发研究 学位论文评阅及答辩委员会情况 姓名职称 工作单位学科专长 指导教师张贝克教授北京化工大学安全中心安全系统工程 并行计算、图像处 评阅人1王雪晶副教授 北京化工大学 理 评阅人2肖亮副教授 北京化工大学核磁共振医学成像 评阅人3 评阅人4 评阅人5 软件测试与软件可 徽员会拂赵瑞莲教授北京化工大学 靠性 系统集成,网络数 答辩委员l许南山副教授北京化工大学 据库 并行计算、图像处 答辩委员2 王雪晶 副教授北京化工大学 理 答辩委员3 李辉 副教授北京化工大学计算机科学 答辩委员4 肖亮副教授北京化工大学 核磁共振医学成像 答辩委员5 注:一论文类型:1 基础研究2 应用研究3 开发研究4 其它 二中图分类号在中国图书资料分类法查询。 三学科分类号在中华人民共和国国家标准( g b t1 3 7 4 5 9 ) 学科分类与代码中 查询。 四论文编号由单位代码和年份及学号的后四位组成。 摘要 轻型脚本引擎的研究与开发 摘要 近年来,随着脚本技术的快速发展,为应用程序提供脚本支持已 经成为实现软件可定制和可扩展的有效方案。脚本引擎是脚本解释执 行的程序平台,是为应用程序提供脚本支持的技术实现。在现代工业 领域的应用中,可嵌入应用程序的现存脚本引擎大多不能满足要求, 它们中有些因为支持的脚本语言语法不好学,而不易于该领域用户的 入门,有些则因为需要较大的时间和空间开销,而不能满足中小型应 用程序的性能要求。 本文在研究了当前主流脚本技术的基础上,设计并开发实现了一 个轻量级脚本引擎,该脚本引擎由前端编译器和后端虚拟机组成,其 中,前端编译器将脚本源程序翻译为字节码指令,分别采用了手写代 码和分析程序生成器a n t l r 自动生成代码两种实现方案;而后端虚 拟机是一个基于堆栈机的字节码执行程序,通过执行字节码来解释脚 本逻辑。脚本引擎还包含一套c + + 应用程序交互接口,用于将它嵌入 c + + 实现的应用程序中,使得用户能够通过脚本调用应用程序注册的 对象、函数等,从而实现应用程序的二次开发功能。脚本引擎支持的 脚本语言是自主设计的v b l e t 脚本,v b l e t 是v i s u a lb a s i c 语言的子集, 后者在非正式程序员中具有较高声誉的。v b l e t 删减了s u a lb a s i c 语 言的部分功能特性,并且在语法特点上进行一些扩展,使得脚本更灵 活,交互性更好。最后,实现了脚本引擎的具有语法高亮功能的集成 北京化t 大学硕i :学位论文 开发环境。 a b s t r a c t r e s e a r c ha n dd e v e l o p m e n to fal i g h t 吧i g h t s c i u p t i n ge n g n 叮e a b s t r a c t a l o n gw i t ht h er a p i dd e v e l o p m e n to fs c r i p tt e c h n i q u e , s c r i p t i n g s u p p o r tf o r 印p l i c a t i o ni sa ne f f e c t i v em e t h o dt om a k et h ea p p l i c a t i o n m o r ee x t e n d a b l ea n dm o r ec u s t o m i z a b l e s c r i p t i n ge n g i n ei sap r o g r a mt o i n t e 印r e ta n dm ns c r i p t i n gp r o g r a m s ,a n dt e c h n i c a li m p l e m e n t a t i o no f s c r i p t i n gs u p p o r t f o r a p p l i c a t i o n i nt h ef i e l do fm o d e mi n d u s t 吼 n e v e r t h e l e s s ,t h e r ea r eh a r d l ya n ye x i s t i n gs c r i p t i n ge n g i n e st om e e tt h e r e q u i r e m e n to ft h ea p p l i c a t i o n s ,s i n c et h es c r i p t i n gl a n g u a g e so fs o m e e x i s t i n gs c r i p t i n ge n g i n e sa 1 et o od i 衔c u l tt og e ts t a r t ,a n ds o m es c r i p t i n g e n g i n e sc o n s u m e t o oi n u c ht i m ea n dm e m o r i e st om e e tt h ep e 响m l a n c e r e q u i r e m e n t so fm e d i u m - s m a l la p p l i c a t i o n s t bs o l u t et h e s e p r o b l e m s , t h i s p a p e rd e s i g n e s a n dd e v e l o p e sa l i g h t w e i g h ts c p t i n ge n g i n ew h i c hi sc o n s t i t u t e do f af 而n t e n dc o m p i l e r a n dab a c k e n dv i r t u a lm a c h i n e t h en i o n t e n d c o m p i l e r , w h i c hi s i m p l e m e n t e db yw r i t i n gb yh a n do rg e n e r a t i n gb yap a r s e rg e n e r a t o r a n t l r ,c o m p i l e st h es c n p t i n gs o u r c ep r o g r a mt ob y t ec o d ei n s t r u c t i o n s t h eb a c k e n dv i r t u a lm a c h i n ei sas t a c km a c h i n ew h i c he x e c u t e sb y t e c o d ei n s t r u c t i o n st ou n d e r s t a n dt h em e a n i n go fs c r i p t s f u r t h e m l o r e ,t h i s i i i 北京化工人学硕士学位论文 s c n p t i n ge n g i n ec o n t a i n sas e to f c + + i n t e r a c t i o ni n t e r f a c e sw i t hw h i c hi t c a nb ee m b e d d e di n t oc + + a p p l i c a t i o n s ,i tm a k e ss c r i p t i n gl a n g u a g et o i n v o k e 如n c t i o n sa n do b j e c t sr e g i s t e r e di nt h ea p p l i c a t i o n s ,a sar e s u l t , s e c o n d a 巧d e v e l o p m e n to ft h ea p p l i c a t i o n si m p l e m e n t e db yu s e r t h e s c r i p t i n gl a n g u a g ei si n t e 印r e t e db yt h i ss c r i p t i n ge n g i n en a m e dv b l e t v b l e ti sas u b s e to f s u a lb a s i cw h i c hi sp o p u l a rt oc a s u a lp r o g r a m m e r s ; i tr e m o v e s p a r t s o ff e a m r e so fs u a lb a s i ca n de x t e n d ss o m e g r a m m a t i c a lf e a t u r e s t om a k ei tm o r en e x i b l ea n dm o r ei n t e r a c t i v e f i n a l l y a ni n t e g r a t e dd e v e l o p m e n te n v i r o i l i i l e n to ft h i ss c r i p t i n ge n g i n ei s i m p l e m e n t e d a r e rt e s t i n go ft h ep r o 铲a m ,i ti sc o n c l u d e dt h a tt h i ss c r i p t i n ge n g i n e c a ni n t e 印r e tv b l e ts c r i p tc o n e c t l ya n dm o r eh i g h l yi np e 怕m l a n c e ,s oi t c a ne x t e n da n dc u s t o m i z ea p p l i c a t i o n sb y e m b e d d i n g k e yw o r d s : s c r i p t i n ge n g i n e ,v i r t u a lm a c h i n e ,v b l e t i v 目录 目录 第一章绪论1 1 1 研究背景及意义1 1 1 1 研究背景1 1 12 课题研究的意义2 1 2 脚本语言的发展及应用现状3 1 2 1 脚本语言的发展及其特点3 1 2 2 国内外对脚本语言应用的研究5 1 3 本文的研究工作及其论文结构7 第二章脚本语言相关技术研究9 2 1 脚本引擎相关技术9 2 1 1 脚本引擎、宿主和脚本9 2 1 2 脚本引擎和宿主的交互方式1 0 2 1 3 脚本引擎体系结构1 0 2 2 编译器设计相关技术1 2 2 2 1 编译器概述1 2 2 2 2 前端编译的各个阶段1 4 2 2 2 1 词法分析15 2 2 2 2 语法分析17 2 2 2 3 中间代码生成18 2 2 3 自动代码生成和a n r 1 9 2 3 虚拟机技术2 l 2 3 1 虚拟机概述2 l 2 3 2 堆栈虚拟机的体系结构2 2 2 _ 3 3 与应用程序的集成2 3 第三章前端编译器的实现2 5 3 1 词法分析器 3 1 1 手写词法分析器, 2 5 2 5 北京化工大学硕士学位论文 3 1 2a n l i r 自动生成词法分析器2 7 3 2 语法分析器2 8 3 2 1 手写语法分析器2 8 3 2 2a n r 自动生成语法分析器3l 3 3 符号表和作用域3 2 3 4 字节码指令的生成3 4 3 5 前端编译器的接口3 5 第四章虚拟机及交互接口的实现3 7 4 1 虚拟机结构的实现3 7 4 1 1 虚拟机结构的实现3 7 4 12 堆栈结构的实现3 8 4 2 虚拟机指令系统的实现4 0 4 2 1 指令系统的特点及设计目标4 0 4 2 2 指令系统的实现4 0 4 3 虚拟机指令执行机制4 2 4 3 1 表达式的执行4 2 4 3 2 控制语句的执行4 4 4 - 3 3 函数调用的执行4 5 4 4 虚拟机与应用程序的接口实现4 7 第五章脚本引擎的测试4 9 5 1 脚本引擎测试方法4 9 5 2 功能测试5 0 5 3 性能测试与分析5 0 第六章总结及进一步的工作。5 3 6 1 本文工作总结5 3 6 2 进一步的工作5 3 参考文献。5 5 致谢5 9 目录 研究成果及发表的学术论文。6 1 作者及导师简介6 3 北京化工大学硕士学位论文 i co n t e 矗t s c h a p t e r li n t r o d u c t i o n 1 1 1r e s e a u r c hb a c k g r o u pa i l dr e s e a r c hs i 盟i 6 c a t i o n 1 1 1 1r e s e a r c hb a c k 粤。o u p 1 1 1 2r e s e a r c hs i g n i f i c a t i o no f t h i ss i i b j e c t 2 1 2t h ed e v e l o p m e n ta l l d 印p l i c a t i o ns t a t u so fs c r i p t i n gl a n g u a g e s 3 1 2 1t h ed e v e l o p m e n ta r l dc h a r a c t e r i s t i c so fs c d p t i n gl a n g u a g e s 3 1 2 2r e s e a r c ho fs c r i p t i n gl a n g u a g e s 叩p l i c a t i o n 5 1 3m a j nc o n t e s t so f t h i st h e s i s 7 c h a p t e r2r e s e a r c ho fs c r i p t i n gt e c h e n o i o g y 。9 2 1 i e c h n o l o g yo fs c r i p t i n ge n 百n e 9 2 1 1e c r i p t i n g 肌百n e ,h o s t 锄ds 嘶p t 9 2 1 2i n t e r a c t i v ew a yo fs c r i p t i n ge n 百n ea n dh o s t 1o 2 1 3a 】c h i t e c t u r eo fs c r i p t i n ge n 百n e 1o 2 2t e c l l n o l o g yo f c o m p i l e rd e s i 印1 2 2 2 1c o m p i l e ro v e r v i e w 。1 2 2 2 2p h a s e so f 丘d n t e n d 1 4 2 2 2 1l e x i c a la 1 1 a l y s i s l5 2 2 2 2s y n t a xa n a l 心s 1 7 2 2 2 3i i l t e 肌e d i a t ec o d e 舀m e r a t i o n 18 2 3 3p a r s e r 誉m e r a t o ra i l da n t l r 19 2 3v mt e c h n 0 1 0 9 y 一2l 2 3 1v mo v e r v i e w 2l 2 3 2a r c h i t e c t u r eo f s t a c kv m 2 2 2 3 3i i l t e r 留a t i o no fs 嘶p t i n ge n 百n ea n da p p l i c a t i o n 2 3 c h a p t e r 3i m p l e m e n t a t i o no f1 r o n t e n d 。2 5 3 1i m p l 锄e n t a t i o no fs c a 衄e r 2 5 3 1 1h a n dc r a f t e ds c 籼e r 2 5 l x 北京化t 大学硕上学位论文 3 1 2g e l l e r a t i n gs c a n n e rb ya n t l r 。2 7 3 2i r i l p l 锄e n t a t i o no f p a r s e r 2 8 3 2 1h a n dc r a r e dp a r s e r 2 8 3 2 2a n t l ra u t og e n e r a t e sp a r s e r 31 3 3s y i n b o lt a b l ea n ds c o p e 3 2 3 4g e l l e r a t i n gb 外ec o d ei n s t m c t i o n s 3 4 3 5i i l t e r f - a c e so ff r o n de n d 3 5 c h a p t e r4i m p l e m e n t a t i o no fv m a n dc o n n e c t i o ni n t e r l h c e s 。”3 7 4 1h n p l e m e n t a t i o no f v t a r c h i t e c t u r e 3 7 4 1 1v ma r c h i t e c n l r e 。3 7 4 1 2s t a c ka r c l l i t e c t u r e 3 7 4 2i l i l p l 锄e n t a t i o no f v mi n s t m c t i o ns e t 4 0 4 2 1c h a r a c t e r i s t i ca i l dd e s i g no b j e c t i v eo fi n s t m c t i o ns e t 4 0 4 2 2i m p l e m e n t a t i o no f i n s t m c t i o ns e t 。4 0 4 3e x e c u t i n gi n s t l l l c t i o n s 4 2 4 3 1e x e c u t i n ge x p r e s s i o n s j 4 2 4 - 3 2e x e c u t i n gc o n t r o ls t a t e m e n t s 4 4 4 3 3e x e c u t i n go fc a l l i n gf u n c t i o n s 4 5 4 4i n t e r a c t i v ei n t e r f a c e so f v ma i l d 印p l i c a t i o n s 4 7 c h a p t e r51 e s t i n gs c r i p t i n ge n g i n e 。一”4 9 5 1t e s t 印p r o a c h 4 9 5 2f 啪c t i o nt e s t 5 0 5 3p 卅o m a n c et e s ta i l da n a l y s i s 5 0 c h a p t e r 6s u m m a r ya n df h r t h e rw o r k 。”一一”。5 3 6 1s u m m a i y 5 3 6 2f u r t h e rw o r k 5 3 r e f e r e n c e s 。5 5 a c k n o w l e d g e m e n t s 5 9 x p u b l i s h e dp a p e r 。6 1 i n t r o d u c t i o n so fa u t h o ra n dt u t o r 。6 3 北京化工人学硕上学位论文 x l l 符口说明 a n t l r s d g h a z o p v m v b l e t 符号说明 a n o t h e rt o o lf o rl a n g u a g er e c 0 盟i t i o n ,识别语言的另一个工具 s i 驴e dd i r e 曲e dg r a p h ,符号定向图 h a z 莉a n do p e r a b i l i t ys t u d y ,危险与可操作分析 r t u a lm a c h i n e ,虚拟机 本文自主设计的脚本语言 x i i i 北京化工大学硕l 学位论文 第一章绪论 1 1 研究背景及意义 1 1 1 研究背景 第一章绪论 当现有系统由于业务逻辑发生变更而不能满足当前需求时,糟糕的维护工作 就不得不发生。在高跳槽率的i t 行业,员工的频繁流动势必对维护工作造成特 大的困难。在大型软件的维护中,有时候对业务逻辑的理解都必须由专人花费数 年时间来完成。过时的代码晦涩难懂,导致维护工程师放弃修改而采取彻底改写 的唯一补救措施,但这种做法不仅代价高昂,还可能暗藏有各种风险和隐形成本 【l 】。为了尽量避免在软件成型后,由于需求变更或功能添加而增大修改成本,系 统设计人员有时需要为后期维护设计接口,而这些接口也许以后很少用到,但却 因此而花费了很大的设计和开发成本,甚至还要付出性能代价【2 】。 另外,软件系统面向的用户可能很多,在领域确定,保证主要功能一致的情 况下,每个用户需要的功能和使用的习惯都不同,如果软件系统在设计时加入了 很多使用频率不高的功能组件,就会使软件系统复杂而臃肿。在传统的工程应用 系统的设计中,软件往往在实现之前用户需求就发生变更。因此,人们迫切需要 开发出可定制化、可用户化和可扩展的软件系统来减少需求变更所带来的开发和 维护成本。 使用基于插件体系架构和混合脚本编程的方法是实现扩展灵活的可定制软 件系统的有效方法【3 】,但前者的开发方法工作量较大,有时候提供给插件的接口 的复杂度比系统本身还要大,因此适用于要添加的新功能属于特定用户经常使用 的大中型系统的开发,比如流行的j a v a 开发工具e c l i p s e 。近年来,脚本语言凭 借强大的描述能力和灵活的语法结构,使得为应用程序提供脚本支持从而进行混 合语言开发成为实现可扩展和可定制的有效方案【4 5 】,实践表明【3 】,脚本语言更直 观而且工作量更小,与用户的交互性更好。 目前在现代工业控制领域中的一些非大型软件系统,急需一个用于实现可定 制可扩展功能的轻型脚本引擎,比如北京化工大学信息学院自主研发的 s d g h a z o p 建模软件平刨6 1 ,该软件平台通过友好的图形界面,完成s d g 建 模、推理和数据处理。但是,在定量分析上,该软件存在一些局限性,而且推理 过程不能实现智能化,缺乏强大的数值计算能力,当规则发生变更或需要增加计 算能力时需要重新编译、发布新版本。因此,在不明显牺牲原系统性能代价的前 北京化丁大学硕j :学位论文 提下,嵌入一个轻型的脚本引擎,通过脚本语言实现灵活的规则推理和数值计算 的方法是一个有效的解决方案。 1 1 2 课题研究的意义 从国内外脚本语言发展的情况来看,虽然国内也有自主设计的脚本语言,例 如中文编程语言的出现就是一个具有创新性的尝试,但是当前比较流行的脚本语 言的设计都是从自世界各地的设计者之手,美国人创造了p 甜,同本人设计了 r u b y ,荷兰人发明了p 州h o n ,巴西人写出了l u a ,我国有关研究人员对该领 域的贡献几乎为零。由于国内的产品很少会用到脚本和脚本引擎,偶有使用也大 多基于现有的国外流行的脚本引擎,因此国内对脚本引擎的研究也比较少【7 】,本 文的研究希望能弥补国内脚本语言和脚本引擎的空白,缩小在相关领域与国外的 差距。 在应用方面,随着脚本技术的不断发展,脚本语言的应用已经从最初的作为 外壳语言和文本处理语言,成为广泛应用在游戏引擎和各种应用程序的扩展上【8 】。 通过为应用程序提供脚本支持,使得应用程序摆脱了传统的固定的静态的命令, 通过用户自定义的新命令,提高应用程序的多样性和有效性。另外,在工程应用 系统的设计中,对语义动作的描述往往需要以即时提交和即时执行的方法来工作, 脚本引擎是能够支持这种工作的有效技术,在它的支持下,工程应用系统可以允 许用于以脚本代码的方式描述要执行的操作,并允许用户即时地、在线地将脚本 提交给系统,而不须用户显示去执行编译、链接和启动的命令或窗口事件来激活 脚本 4 1 。 从应用的角度看,脚本引擎即是嵌入在应用程序( 宿主程序) 中,解析执行 脚本代码,并提供脚本程序和宿主程序交互接口及其管理交互数据的工具;从实 现的角度看,脚本引擎是一个类似于解析型编译器的支持系统。而编译技术的理 论和结构较为负责,对一个不熟悉编译技术的工程应用系统设计员来说,在工程 应用系统设计上实施编译技术具有非常高的难度,尤其目前在国内工程应用系统 的设计中,编译技术的应用大多还只停留在一个较浅的层次上【4 】,因此研究和开 发面向工程应用领域的脚本引擎不仅对脚本语言在工程应用领域的使用起到一 定作用,而且还能为后续相关领域系统丌发人员提供参考实施方案。 尽管本文丌发的脚本引擎在不同的工程应用软件系统中具有一定的普遍适 用性,但其初衷是面向集成化s d g 建模、推理与信息处理的软件平台,开发和 实现一个轻量型的脚本引擎,在不需要进行架构的重新设计的前提下,增强该软 件平台的逻辑推理能力,并且在规则推理和计算上具有更高的灵活性和扩展性。 2 第一章绪论 1 2 脚本语言的发展及应用现状 1 2 1 脚本语言的发展及其特点 脚本语言第一次作为一个解析语言在上世纪6 0 年代出现,最初在学术上很 少引起计算机科学界的注意,但是随着人们越来越强调程序员的效率更重要于程 序的效率,并且伴随着万维网的发展,脚本语言的在学术界与在应用领域的名声 和引起的关注度都发生了巨大的变化,从2 0 世纪7 0 年代起,相继出现了s h e l l 脚本和报表生成工具语言【8 】。有迹象表明,脚本语言很可能与传统的编译语言一 起在2 1 世纪成为主导的程序设计语言【5 】。不同于传统编译语言的是,脚本语言 强调灵活性和表达式的丰富性更甚于运行时的时间和空间开销。脚本语言随着其 不同的类型其功能也大不相同,但是概括起来脚本语言具有如下公共特性【9 1 0 】: 同时支持批处理和交互式使用。脚本逐行地被编译或解释: 经济的表达式。为了支持快速开发和交互式使用,脚本语言倾向于要求最小 的源代码; 缺少声明,简单的作用域规则。大部分脚本语言省略声明,名字的作用于被 默认为全局; 灵活的动态类型化。变量的类型在使用之前的那一刻检查或在不同上下文中 做不同解释; 易于访问其它程序。通过提供大量的内部命令来运行另一个程序; 复杂的模式匹配和字符串操作功能。通过基于扩充的正则表达式实现文本处 理和报表生成的强大功能。 高级数据类型。许多高级类型构造被作为语言本身的语言和语义里,而不是 作为库来提供。 虽然有文献】指出脚本语言在时间和空间开销上并不比传统的系统语言慢 多少,但是不同于传统的系统语言,脚本语言单纯作为开发语言的情况比较少, 而是与其它系统语言结合使用,它假定已存在用系统语言编写的高性能组件模块, 凭借其语法简单,平均每行代码产生的机器码指令多的特点,而成为把这些高性 能组件“粘合”在一起的有效工具,因此,脚本语言也常常被成为“粘合语言”。 脚本语言发展到现在,已经有半个世纪长的时间,目前本文作者还没有发现 可靠数据统计过现存脚本语言的种类,不过估计这项统计工作将是不可完成的, 因为脚本语言在整个计算机应用领域太广泛了,任何一个应用项目都可能有一种 自己的脚本语言,如下简要介绍几种当前主流脚本语言: 北京化工入学硕+ 学位论文 1 p e r l ,p e r l 是有l a r r yw a l l 与1 9 8 7 年开始设计的,主要用于正文处理。p e r l 的语言核心相对简单,在此之上扩充了数量巨大的内部库函数,大量使用标 点符号以使得一条语句完成普通语言需要几条甚至几十条语句才能完成的 工作,但是这也给p e r l 带来了语言晦涩难懂的骂名。p e r l 语言的学习周期 相对比较长,不易于掌握。 2 p y t h o n ,p y t h o n 是9 0 年代初期由荷兰阿姆斯特丹c w i 的g u i d ev a nr o s s u m 开始开发的。p y t h o n 语言是第一个把缩进作为语法分组的语言。它具有如下 特点:动态类型、自动内存管理、大型程序支持、丰富的内建数据类型和强 大的可软件包,还易于扩展和嵌入。由于包含强大的库,因此p y t h o n 语言 的执行效率要慢一些。 3 r u b y ,r u b y 是广泛使用的粘接语言中最新的一个,由日本的y u k i h i r o “m a t z ” m a t s u m o t o 于2 0 世纪9 0 年代前期开发。是一种“比p e r l 更强大,比p y t h o n 更面向对象的语言 。同样具有垃圾回收、出色的正则化处理等特点,此外 还具备类定义、多线程和异常处理、迭代封闭和运算符重载等功能。 4 v b a ,v b a ( v i s u a lb a s i cf o ra p p l i c a t i o n s ) 是面向w i n d o w so f f i c e 的嵌 入的脚本语言,不能独立运行,而必须要有一个宿主程序。v b a 是v b s c r i p t 的子集,后者是w i n d o w s 平台上使用最广泛的脚本语言,继承了v i s u a lb a s i c 简单易学的语言特点。 大多数应用系统都能接受某种形式的,告诉它们去做什么的命令。这些命令 有时是以文本形式提供给的,更多的是有用户界面时间驱动的,通过鼠标点击、 菜单选择和击键。为画出某个图形而执行的画图程序命令可以保存起来或重新载 入,选择、插入、删除和修改其中的部分,选择线性、宽窄或颜色、显示的缩放 或旋转,或者修改用户优先权。 扩充语言可以提高应用系统的可用性,它是用户可以自己创建新命令,通常 可以把现有的命令作为基本成分使用,对于各种复杂的工具,人们已经越来越多 地把扩充语言看作它们必不可少的部分。a d o b e 的图形应用套装( i l l u s t r a t o r 、 p h o t o s h o p 、h l d e s i 龃等) 可以用j a v a s 嘶p t 、s u a lb a s i c ( 在w i n d o w s 上) 或 a p p l e s 嘶p t ( 在m a c 上) 扩充( 编写相关脚本) 。a o l s e r v e r 是一个来自a m 嘶c a o n l i n e 的开源w e b 服务器系统,可以用t c l 为它写脚本。作为扩充语言,最早起 源于e m a c s 文本编辑器上的e m a c sl i s p 。e m a c s 编辑器的内核部分相当小,而其 之所以功能那么强大是由于人们为它创建了极大的一批扩充包。另外,在 w i n d o w s 平台下,微软为其自己的扩充语言v b s c r i p t 的接口支持,因此v b s c r i p t 成为使用最广泛的扩充脚本语言之一【8 】。 常常作为扩展和粘合的通用脚本语言,很多应用系统开发人员为了省去自己 4 第一章绪论 重新设计一门脚本语言的时间周期和可能由此带来的不稳定型,通常选择在自己 的应用程序中嵌入以上脚本的脚本引擎。 脚本语言和系统语言通常是互补的,因此大多数主要的计算机平台都会同时 支持这两种语言。随着软件复用技术受到越来越多的重视,人们开始采用这样的 软件开发模式:软件被分成一个个可复用的软件组件,软件组件框架使用系统语 言编写,当需要使用这些组件框架时则使用脚本语言把它们粘接在一起【5 ,8 】。 1 2 2 国内外对脚本语言应用的研究 在有关脚本语言的经典论文【5 】中,t c l 脚本语言的发明者j o l l no u s t e r h o u t 说 到,“脚本语言假定现存一集用其它语言写的又用组件,它们的意图不是从空白 开始写应用,而是去组合这些组件。 这句话几乎概况了脚本语言的应用范围。 o u s t e r l l o u t 预见未来的程序员将在他们系统的顶层更多得依赖脚本语言,在那里 清晰性、可重用性和易于开发都是至关重要的因素。传统的“系统语言 如c 、 c + + 和j a v a 将主要用于自足的可重用的系统组件,这些语言强调的是复杂算法和 执行速度。 虽然有些脚本语言的设计者把通用性作为设计目标,但是多数脚本语言还是 主要用于一些定义清晰的应用领域【5 】。而在另一个新兴起的热门领域电子游 戏,特别是网络游戏,脚本语言更是这些软件系统必需附带品【9 ,1 2 。17 1 。 在现代工程应用领域,大多数控制系统和专家系统中,都嵌入了脚本语言编 程环境,从而实现基于脚本支持的扩展和定制功能【1 8 l9 1 。从目前国内外发展的情 况来看,实现脚本技术支持的方法有三种:一种是通过嵌入现有脚本引擎来支持 现有的脚本语言;另一种是采用现有的脚本语言及其语法,但是选择自行开发该 脚本的脚本引擎;还有一种是脚本语言和脚本引擎都自行设计和开发。下面分别 说明这三种实现方法在当前国内外的研究情况。方法一【1 8 。2 3 1 是通过现有脚本语言 向其它语言( 如c c + + ) 提供的交互a p i 或通过实现组件接口把脚本语言嵌入应 用系统中。在现代工业控制领域,这种方法支持的脚本语言比较常见的是p v t h o n 和s u a lb a s i c ,这是因为: 1 p w h o n 和v i s u a lb a s i c 的语法相对于其它脚本语言来说比较简单易学。这点 很重要,因为在工程应用领域,脚本语言的使用者都不是专业程序员,在没 有任何计算机语言经验的基础上,学一门晦涩难懂的脚本语言花去了他们更 多的时间,往往会使他们失去耐心。不同于p 甜的大量符号使用,p 饥h o n 具 有简洁的语法风格,而作为s u a lb a s i c 更是在非正式程序员中享有很高的 声誉: 北京化- t 大学硕一i :学位论文 2 它们都有强大的文档帮助。p 叭h o n 是一个开源产品,它的背后是拥有全世界 大量爱好者的p 、灿o n 社区的支持;虽然与p y t h o n 相反的是s u a lb a s i c 掌握 在传统软件垄断巨头m i c r o s o r 的手里,但是m i c f o s o r 向开发人员提供的文 档支持又公认是在所有商业企业里最好的; 3 它们都具有强大的库支持。p 汕o n 不仅有自带的强大标准库,而且又有很多 第三方免费库的支持,如d j a l l g o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年南平市属学校教师招聘笔试真题
- 2025年安阳殷都区医疗健康服务集团招聘卫生专业技术人员笔试真题
- 儿童徒步活动拍摄方案策划(3篇)
- 妇女宣传游戏活动方案策划(3篇)
- 共享直播间营销方案(3篇)
- 任务3.2 S7-1200 PLC Modbus通信控制G120变频器
- 2026年江苏中考语文(真题)试卷及答案
- 吉林省通化市2026年重点学校初一入学语文分班考试试题及答案
- 2026年江苏中考数学(真题)试卷附答案
- 广西壮族自治区贺州市重点学校高一数学分班考试试题及答案
- 2025甘肃省民航机场集团招聘38人笔试历年难易错考点试卷带答案解析
- 硫铁矿制酸施工组织方案
- 地砖铺设闭水试验管控方案
- 军考2026年考试题及答案
- GB/T 47582-2026航空航天P形(环形)卡箍通用规范
- 2026地质队矿山水文岗面试题及答案
- 2026深静脉血栓形成诊断和治疗指南(第四版)全面解读
- 兵器集团人才学院题库
- 《JBT 8293-2025浮动油封》专题研究报告
- 采购文件三级审核制度
- 《工业用全氟壬烯、全氟-4-甲基-2-戊烯》编制说明
评论
0/150
提交评论