(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf_第1页
(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf_第2页
(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf_第3页
(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf_第4页
(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf_第5页
已阅读5页,还剩85页未读 继续免费阅读

(计算机应用技术专业论文)基于python的sdghazop软件中推理规则问题的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 基于p y t h o n 的s d g - h a z o p 软件中推理规则问题的研究 摘要 随着人们对安全问题的日益重视,安全评价己经成为过程工业不可 或缺的一部分。在众多的安全评价方法当中,s d g - h a z o p 方法成为目前 过程工业中应用最为广泛的方法之一。s d g - h a z o p 是二种定性的系统危 险辨识过程,它将s d g 的推理与h a z o p 的分析机制相结合,利用计算机 辅助的h a z o p 技术对所建立的过程s d g 模型进行分析,从而使得安全评 价的结果更加的准确和完备。 但是,利用现有的软件平台进行建模分析时,存在着一个突出的问 题,就是只能依赖软件提供的固有规则进行推理。在软件开发过程当中, 如果需要根据实际情况添加新的规则,就必须重新编码、编译和发布。 这使得系统不够灵活,缺乏与用户的交互,并且也加大了软件开发和维 护的难度。 针对这样的问题,本文提出了一种基于p y t h o n 脚本扩展技术的开 发方法。该方法通过嵌入p y t h o n 脚本语言到c + + 应用程序当中为软件提 供脚本支持。使用这种系统结构,开发人员可以在不改变原有程序对象 模型的情况下,快速地为应用程序提供p y t h o n 脚本支持。利用嵌入的 脚本语言,用户在进行s d g 建模分析的时候,可以在脚本中添加新的自 定义规则或计算公式,有效地提高了系统的灵活性和扩展性。 本文最后还选择m i c r o s o f tv i s u a lc + + 6 0 作为开发工具,实现 了一个p y t h o n 的集成开发环境,为用户提供了运行和调试等功能。 北京化t 大学硕 学位论文 关键词:p y t h o n ,脚本,嵌入,s d g i i a b s t i t a c t r e s e a r c hi n t ot h er e a s o n i n gr u l e s o fs d g h a z o ps o f t w a r e b a s e do np y t h o n a b s t r a c t a sp e o p l et op a ym o r ea t t e n t i o nt ot h es a f e t yi s s u e s ,s a f e t ya s s e s s m e n t h a sb e c o m ea ni n d i s p e n s a b l ee l e m e n ti nt h ep r o c e s si n d u s t r y i na l lt h ek i n d s o fs a f e t ya n a l y s i sm e t h o d s ,s d g - h a z o pm e t h o di st h em o s tw i d e l yu s e d s a f e t ya n a l y s i sa p p r o a c hi nt h ep r o c e s ss y s t e m s d g h a z o pi s ak i n do f q u a l i t a t i v ep r o c e s so f h a z a r di d e n t i f i c a t i o n ;i tc o m b i n e st h es d g i n f e r e n c e a n dh a z o pa n a l y s i sm e c h a n i s m ,a n dt h e nf i n i s h e st h ec o m p u t e r - a i d e d h a z o ps t u d yo ft h es d gm o d e l t h ec o m b i n a t i o nm a k e st h er e s u l t sm u c h m o r ea c c u r a t ea n dc o m p l e t e h o w e v e r , t h e r ei s ap r o m i n e n tp r o b l e mw h i l eu s i n gt h e e x i s t i n g s o f t w a r ep l a t f o r mf o rm o d e l i n g ,t h ec o n v e n t i o n a li n f e r e n c eo n l yr e l i e so nt h e i n t r i n s i cr u l e sp r o v i d e db yt h es y s t e m i nt h ep r o c e s so ft r a d i t i o n a ls o f t w a r e d e v e l o p m e n t ,d e v e l o p e r s h a v et or e d ot h ew h o l e p r o c e s s o fc o d i n g , c o m p i l i n ga n dp u b l i s h i n gi fn e wr u l e sh a v et ob ea d d e da c c o r d i n gt ot h e a c t u a ls i t u a t i o n b e c a u s eo ft h o s e ,t h es y s t e mi sn o tf l e x i b l ee n o u g h ,a n d l a c ko fe x c h a n g ew i t ht h eu s e r , i ta l s oi n c r e a s e dt h ed i f f i c u l t yo fs o f t w a r e d e v e l o p m e n ta n dm a i n t e n a n c e i i i 北京化工大学硕七学位论文 t os o l v e t h ep r o b l e m ,ad e v e l o p m e n tm e t h o db a s e do np y t h o nw a s p r e s e n t e di nt h i sp a p e r t h i sm e t h o du s ep y t h o na sa ne m b e d d e ds c r i p tt o s u p p o r tt h e h o s ta p p l i c a t i o nw r i t t e ni nc + + ,i ta l l o w sd e v e l o p e r st ob u i l d t h e s y s t e mw i t h o u tc h a n g i n g t h es t r u c t u r eo fo r i g i n a lo b j e c t m o d e l b y e m b e d d i n gs c r i p t i n gl a n g u a g ei n t ot h ea p p l i c a t i o n ,u s e r sc a na d dn e wr u l e s a n dc a l c u l a t i o nf o r m u l a st ot h es d gm o d e l i ti sh e l p f u li ne n h a n c i n gt h e f l e x i b i l i t ya n de x t e n s i b i l i t yo ft h es y s t e m a tl a s t ,m i c r o s o f tv i s u a lc + + 6 0h a sb e e nu s e dt or e a l i z ea ni n t e g r a t e d d e v e l o pe n v i r o n m e n tf o rp y t h o n t h eu s e r sc a nr u na n dd e b u gt h es c r i p t s t h e yw r o t ef o rt h es y s t e m k e y w o r d s :p y t h o n ,s c r i p t ,e m b e d , s d g i v 符号说明 p r h a s d g h a z o p c o m i d l s 、g u m l 符号说明 过程安全分析 符号定向图 危险与可操作性分析 组件对象模型 接口定义语言 简单封装和接口生成器 统一建模语言 北京化工大学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文 不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意 识到本声明的法律结果由本人承担。 作者签名: 王团丝1 日期: 关于论文使用授权的说明 学位论文作者完全了解北京化工大学有关保留和使用学位论文 的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属 北京化工大学。学校有权保留并向国家有关部门或机构送交论文的 复印件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论 文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保 存、汇编学位论文。 保密论文注释:本学位论文属于保密范围,在上年解密后适用本 授权书。非保密论文注释:本学位论文不属于保密范围,适用本授权书。 作者签名: 芝因缝1日期:互塑2 :皇! 主芝: 导师签名:考鼢日期:2 琴芝业 第一章绪论 1 1 过程安全分析 第一章绪论 过程工业是国民经济的支柱产业之一,随着经济的飞速发展,对于能源的依赖 促使石油化工行业生产日益复杂,这导致该行业安全问题不断涌现。一旦在石化行 业的生产过程中发生事故,后果轻的会造成停车,给企业带来经济上的损失,而如 果严重的话,则可能会给现场人员,甚至是工厂周边的居民带来人员伤亡,并造成 该地区的环境污染。据统计,美国每年由于安全问题所导致的国民经济损失达2 0 0 亿美元,其中仅石油与化工行业即损失1 0 0 亿美元左右。 导致化工事故的原因有很多方面,但主要原因有如下几点: 不足的过程安全分析( p r h a ) ; 变化的不良管理( m o c ) ; 使用不适当的设备; 过程状态没有充分标示; 没有预警告; 缺乏“软件 和“硬件 基础设施。 化工事故所造成的巨大经济损失促使安全生产成为各国政府与各大企业如今所 要面临的首要问题之一。如何能够做到防患于未然,发现并消除过程中潜在的危害, 提高系统的可靠性和安全性,帮助现场操作人员在事故发生但尚未造成巨大损失之 前消除事故源,安全地撤离,并将损失降到最低,就成为近年来各国研究人员研究 的一大热点,而这对于我国国民经济的稳步发展,构建和谐社会也有着重大的意义。 过程安全分析( p r h a ,p r o c e s sh a z a r da n a l y s i s ) ,是工厂在进行设计阶段的一 个很重要的环节,需要大量的时间,精力和特定领域的专家知识,通常被认为是一 种找出并降低隐藏在过程系统中的潜在危险的重要手段,是十分有效的措施。其目 的主要是【l 】: 1 预测事故发生的可能性; 2 评价可能事故的后果; 3 找出防止事故的策略; 4 如果一个事故发生了,要将不利影响降到最低; 目前,国际推荐的常用p r h a 方法按特征,大体上可以分为定性分析、定量分析和 综合分析三种【2 1 。其中定性分析方法包括: 检查表法( c h e c k l i s t s ) : 如果怎么样法? ( w h a t i f r e v i e w s ) ; 北京化工人学硕上学位论文 危险与可操作性分析( h a z o pr e v i e w s ) ; 失效模式分析( f a i l u r em o d e sa n a l y s i s ,f m a ) ; 定量分析方法包括: 事件树( e v e n tt r e e s ) ; 故障树( f a u l tt r e e s ) ; 失效模式与后果分析( f a i l u r em o d e sa n de f f e c t sa n a l y s i s ) ; 另外,道化学公司的火灾、爆炸危险指数( f & e i ) 评价法主要用来评价工艺装置 及其所含物料实际的火灾、爆炸及反应危险,如今已经得到广泛的应用,被化学工 业公认为最主要的危险指数。目前比较成熟的评价方法还有:英帝国化学公司的蒙 得评价法、日本化工省的六阶段安全评价法以及世行标准等等。 综合分析,则是将定性分析和定量分析相结合的一种分析方法,由于各种分析 方法都有其适用范围和特点,综合分析集众家之长,可以分析出比单个分析方法更 为可靠和精确的评价结果。 在上述化工过程安全分析方法中,目前应用最为广泛的当数危险与可操作性分 析方法,即h a z o p 。经过几十年的发展,出现了计算机辅助h a z o p 分析方法一 s d g h a z o p 方法。所谓s d g ( 符号定向图) ,是一种由节点( n o d e s ) 和节点之间 有方向连线,又称支路( b r a n c h e s ) 构成的网络图,可以用来表达复杂的因果关系【3 l 。 而s d g h a z o p 方法正是将符号定向图s d g 的强大推理能力与h a z o p 的分析机制 相结合,从而克服人工h a z o p 费时、费力和成本高的缺点。 本人所在的实验室已经开发出一套图形化的软件环境为s d g h a z o p 分析方法 提供了软件支持。该环境通过友好的界面,大大提高效率的同时,使出错的几率减 小。更重要的是,使安全评价具有周期性,这种方式避免重复工作,可复用性高。 1 2 现阶段研究存在的问题 虽然现阶段s d g h a z o p 方法的研究取得了巨大的进展,却仍然存在着一些问 题,例如,s d g h a z o p 现在主要应用于连续过程工业,而对于间歇过程,如何利 用s d g h a z o p 来进行合理的描述和分析尚有一定的难度;如何将以定性作为基础 的s d g h a z o p 方法与定量分析方法相结合,从而提高分析的准确性等等。 对于这样的问题,可以在传统的模型中引入规则来进行推理,通过选择通用规 则和自定义规则进行判断,并在规则前件满足的前提下进行前向和反向推理,从而 挖掘出过程中潜在的所有危斛4 1 。但是,现阶段的软件环境只是一味的遵循固有的 规则,无法针对不同的过程,修改l e l 的不合理的规则或有针对性地添加新的规则, 从而改变推理引擎的原有推理路径。不能通过与用户的交互,实现推理过程的智能 2 第一章绪论 化,而且其数值计算能力也不强。按照现有的软件开发方案,如果需要添加新的规 则或者是增加计算能力,需要重新编写原来的代码,然后编译,再发布新的版本。 这种开发流程显然在软件的灵活性和可复用性方面都是难以接受的。 1 3 传统的软件复用方案 针对前面的问题,可以通过一些开发过程中的软件复用方案来解决。软件复用 是一种计算机软件工程的方法和理论,其实质就是一种在开发软件的过程中避免重 复劳动的解决方案 s l 。软件较强的可复用一直是软件工程所追求的目标之一,软件 工程界一直希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特 定的应用系统。目前,在软件工程界提出了多种解决软件复用的方案: 第一,通过组件对象模型可以实现软件复用,它是通过生成组件对象、编译连 接,在二进制基础上实现复用。 第二,是通过类和函数的共享来实现比组件对象高一级的方法,这也是我们通 常所说的面向对象的编程和结构化的编程。在面向对象的编程中,我们通过类和对 象的一些特点可以非常方便地实现程序代码的复用。 第三,结构化的编程,它将一个软件分成几个不同的模块,每一个模块分别实 现了一定的功能,当下一次我们需要类似的功能模块时,直接调用原来的程序代码 即可,这样也在一定程度上实现了软件的复用。 这些传统的软件复用方案在一定程度上解决了代码复用的问题,但是对于开发 完成的软件来说,软件为用户提供的功能通常是固定的,难以通过与用户的交互实 现新的需求。在这种情况下,利用脚本语言混合开发来为用户提供二次开发的平台, 成为解决s d g h a z o p 分析方法中规则引入问题的重要途径。 1 4 利用脚本语言混合开发 利用脚本语言混合开发,也是比类和函数更高级的一种方法。它是在不同的语 言之间进行程序的混合编写,在形式上它是最高级的共享。 混合语言开发是指采用两种或两种以上的编程语言来进行程序开发的方法,常 见情况是系统编程语言和脚本语言之间的混合,使用脚本作为系统的扩展。混合语 言编程的软件开发方法近年来日益受到重视 6 1 ,混合开发的目的就是为了能更好地 解决采用不同代码的程序开发同一软件和代码的复用问题。 采用脚本语言混合开发方法的好处有【7 】: 1 ) 充分利用不同编程语言的各自优势。系统编程语言开发的程序运行速度快, 北京化_ t 大学硕士学位论文 但开发周期较长;脚本语言方便灵活,代码简短,开发效率可提高5 1 0 倍,但程序 运行速度慢。合理地结合两者的优点,取长补短,可以快速高效地构建应用程序并 维持相当的性能。 2 ) 继承历史遗留代码。虽然新的高级编程语言不断出现,但有大量重要的应用 程序仍然是用f o r t r a n 或者c 等老语言写成。要充分利用新语言的进展,同时使 这些遗留代码继续发挥作用,把他们全部翻译成新语言是不现实的,可以用混合语 言编程的方法来加强程序的结构化和改善用户界面。 3 ) 提供二次开发平台。在采用混合开发技术的系统中,还可以利用脚本技术为 用户提供二次开发的平台,使专业用户可以自定义应用系统的逻辑和规则,增强了 系统与用户的交互性。 综上,使用脚本语言进行混合开发,即可以复用已有的用系统编程语言编写的 代码,又可以充分利用脚本语言的优势对软件进行灵活的修改,有效地增强了软件 的可复用性。而脚本语言,作为一种编程语言,与传统的系统编程语言有着很多不 同,下面,主要介绍一下脚本语言的产生与发展。 1 4 1 脚本语言介绍 脚本语言( s c r i p tl a n g u a g e ,s c r i p t i n gl a n g u a g e ,s c r i p t i n gp r o g r a m m i n gl a n g u a g e ) 是为了缩短传统的编写编译链接运行( e d i t c o m p i l e - l i n k r u n ) 过程而 创建的计算机编程语言。此命名起源于一个脚本r s c r e e n p l a y j ,每次运行都会使对 话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言。 一个脚本通常是解释执行而非编译,脚本语言都有简单、易学、易用的特性, 目的就是希望能让程序设计者快速地完成程序的编写工作。而宏语言则可视为脚本 语言的分支,两者也有实质上的相同之处。虽然许多脚本语言都超越了计算机简单 任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。几乎所 有计算机系统的各个层次都有一种脚本语言。包括操作系统层,如计算机游戏,网 络应用程序,字处理文档,网络软件等。在许多方面,系统编程语言和脚本语言之 间互相交叉,二者之间没有明确的界限。 与系统编程语言不同,脚本语言被设计为无类型的:所有的东西无论是看起来 还是使用起来都是完全一样的,因此他们可以互换。例如,在v i s u a lb a s i c 中一个 变量可以一会儿处理字符串,一会儿又处理整型。代码和数据也常可互换,因此, 可以用一个程序写另一个程序,然后高速执行。脚本语言一般是面向字符的,因为 它为许多不同的事物提供了一致的描述,无类型语言使组件更容易连在一起。 脚本语言和系统程序设计语言的另一个重要不同是脚本语言是被解释,而系统 程序设计语言是被编译。被解释的语言由于没有编译时间而能够提供快速的转换。 4 第一章绪论 通过允许用户运行时编写应用程序,解释器使应用程序更加灵活,通过快速设计代 码解释器可以实现强大的功能。脚本语言不如系统程序设计语言效率高,部分是因 为它们使用解释器而不是编译器。 脚本语言比系统程序设计语言更高级,平均一个指令可以做更多的工作。一个 典型的脚本语言指令执行成百上千条机器指令,而一个典型的系统程序设计语言指 令执行大约五条机器指令。部分不同是因为脚本语言使用翻译器,这不如系统程序 设计语言中被编译的代码,但是主要的不同是因为脚本语言的初期操作有更强大的 功能。 综上所述,脚本语言不是系统程序设计语言的替代品,它们之间的关系并不矛 盾【8 l ,他们各自适合不同类型的工作,脚本语言和系统程序设计语言互为补充。 1 4 2 脚本语言特点 大多数的脚本语言具有语法简单,易于学习,解释性、无需编译,易于部署和 维护等优点,与直接使用静态编程语言c 和c + + 相比,使用动态脚本语言开发效率 更高,开发和维护难度较低,作为系统扩展和快速开发语言具有一般静态编程语言 不具有的优势。通过脚本语言扩展或集成已有系统,在很多软件平台中得到了广泛 应用。脚本语言作为一类开发语言,主要有以下优点: 1 ) 快速开发。它们大大缩短了“开发、部署、测试、调试 周期。 2 ) 部署简便。大多提供即时部署能力,而无需花费大量时间在编译和打包周期上。 3 ) 与已有技术集成。它们大都构建在已有的组件技术,诸如j a v a 或者c o m 上, 以便有效重复利用现有代码。 4 ) 易于学习和使用。技术门槛很低,可以轻松找到大量的使用者。 5 ) 动态代码。脚本语言能够被即时生成和执行,这在某些应用程序中是非常必要和 有用的高级特性。 凡事没有十全十美,脚本语言也有一些缺点: 1 ) 运行速度慢是脚本的最大缺点。 2 ) 它们通常都不具有“一般性”,而是为某种特定的应用程序所产生,比如说p h p 和互联网。 1 4 3 脚本语言发展趋势 在过去的十五年里,人们编写计算机程序的方法发生了根本的转变。这种转变 是从c 或c 抖等系统程序设计语言到p e r l 9 1 或t e l 1 0 1 等脚本语言的过渡。与系统程序 设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。 5 北京化工大学硕士学位论文 系统程序设计语言起源于像内存字等最初期的计算机元素,它为建立数据结构和算 法而创建。相反的,脚本语言为胶着而设计:他们假设已经存在一套强大的组件, 而它主要是把组件连在一起。 脚本语言已经存在了很长时间,它的重要性正在不断提高。二十世纪六十年代 以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框 架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。 然而,速度更快的机器、更好的脚本语言、图形用户界面和组件构造重要性的不断 提高,以及因特网的发展等趋势大大提高了脚本语言的应用。在今后的十年中,这 种趋势将继续。 由于其强大的自定义功能,脚本技术也正在被越来越多的软件供应商使用。在 短短的几年时间内,脚本技术已经迅速在广泛的领域中找到了自己的位置:p 2 p 、 开放源代码、无线应用、嵌入式应用程序以及将要命名的某些应用。很难追踪脚本 技术的具体方向,因为它在每个领域都正处于领导地位。毋庸置疑,脚本语言,比 如v b s c r i p t 、j a v a s c r i p t 、j y t h o n 、p y t h o n 、l u a 、p e r l 和p h p 正越来越流行。这种脚 本趋势正由于快速应用程序开发( r a n ,r a p i da p p l i c a t i o nd e v e l o p m e n t ) 的发展而越 来越扩大化。r a d 是一种开发风格,如今它正吸引着越来越多的拥护者。 脚本语言代表一套与系统程序设计语言不同的协定,它牺牲执行速度和与系统 程序设计语言相关的类型长度,而提供更高的编程创作和软件重用能力。随着计算 机硬件技术的发展,当编程者的劳动力成本比计算机的性能因素更重要时,脚本将 成为比今天更为重要的编程范例。 1 5 本论文的主要内容 本论文针对现有s d g h a z o p 软件开发过程中规则引入的问题,提出了一种基 于p y t h o n 脚本技术的混合语言开发方法,这种开发方法通过将原应用程序的模型对 象暴露给p y t h o n 脚本环境,使得模型中的节点和支路变成了可编程的对象,从而增 强了与用户之间的交互。这种开发方法还可以应用于很多框架相同,但需要用户灵 活配置,或进行二次开发的应用系统。本文主要研究了以p y t h o n 脚本语言为基础的 软件扩展技术,成功地在应用程序当中嵌入了p y t h o n 脚本语言,并且实现了一个支 持脚本扩展的应用程序框架和p y t h o n 脚本语言的集成编辑环境。 下面,简单介绍一下本论文的大体结构。 第一章,介绍化工过程安全分析的重要性,并指出了当前化工过程安全分析对 于我国社会和经济发展的重要意义。分析了现阶段s d g h a z o p 软件开发过程中存 在的问题,给出了一种可以提供二次开发功能的混合语言开发方法。最后,概述了 6 第一章绪论 本论文主要内容与章节组织。 第二章,介绍了基于嵌入式脚本语言的脚本扩展技术,并详细介绍了p y t h o n 脚 本语言。重点研究了基于p y t h o n 与c c + + 语言的脚本集成技术以及集成工具,并给 出了一种利用s w i g 在c + + 程序中集成p y t h o n 脚本的方法与步骤。 第三章,以p y t h o n 作为扩展脚本嵌入到c + + 程序当中,具体地实现了宿主对象 向脚本环境的注册,p y t h o n 脚本语言的嵌入接口,以及脚本运行的系统事件机制。 从而很大程度上降低了在s d g h a z o p 软件开发过程中,开发人员使用p y t h o n 脚本 引擎的复杂度。 第四章,在上一章的基础上为嵌入的脚本实现了编辑环境,详细介绍了调试器 的实现,并扩展了p y t h o n 的调试器,将其集成到了界面环境中,为用户提供了源代 码编辑、脚本管理和调试运行等功能。 第五章,通过实现的接口进行了应用分析,分析结果表明,利用实现的接口为 应用程序提供p y t h o n 脚本支持的过程非常简单,并且能够很好地解决s d g h a z o p 分析方法中的规则引入问题。 7 第二章脚本语言和扩展技术 第二章脚本语言和扩展技术 本章对p y t h o n 脚本语言的技术特点和原理进行了研究,重点研究了基于c c + + 语言和p y t h o n 语言的集成技术与方法。 2 1 脚本语言的作用 脚本语言分类有很多,但由于在s d g h a z o p 中使用的脚本是是依赖于主程序 的,属于一种嵌入式脚本,所以在这里重点介绍可以用于提供二次开发功能的可嵌 入式脚本。这里的嵌入并不是指嵌入式系统,而是说脚本语言作为一种可以嵌入到 宿主程序( 一般为编译语言开发) 、与宿主程序内部进行通信的语言,也是通常所指 的用脚本语言扩展宿主程序。对于这样的系统来说,一般由三个核心的概念组成, 它们是宿主、引擎和脚本【1 1 】。 宿主可以简单认为是所编写的脚本要控制的功能对象,是编写的应用程序最终 想提供给用户的功能组件。如果为应用程序编写脚本,那么脚本的依附对象就是宿 主,脚本功能最终的执行者也是宿主。任何应用程序都可以看成是宿主,都可以嵌 入脚本解释能力。引擎,是宿主和脚本之间的桥梁。脚本引擎获取脚本,并按照语 法解释执行,脚本与宿主对象的模型结合紧密,可以控制宿主对象,修改其属性, 调用相关方法,实现脚本要求的功能【1 2 1 。向脚本提供可利用的对象,并解释脚本以 实现二次开发是脚本引擎的主要功能。它们三者的关系如图所示: 图2 - 1 宿主、引擎和脚本关系 f i g 2 - 1t h er e l a t i o n s h i po f h o s t ,e n g i n ea n ds c i r p t 具有嵌入特点的脚本语言有很多,例如l u a 和p y t h o n 之于c c + + ,b e a n s h e l l 之于j a v a 。开发人员可以在c c + + 程序中调用脚本、执行脚本、调用脚本中的某一 个函数;也可以将c c + + 程序中的变量的值赋给脚本中某个变量的值,将c c + + 中 9 北京化工人学硕上学位论文 的函数与脚本中的某个函数对应,这样在执行脚本时,就能够在脚本中读取设置程 序中的变量。作为一门语言,嵌入式脚本当然能够单独运行,但更重要的是它可嵌 入的特点,使得用户可以在程序运行时添加和修改逻辑功能: 对于专业用户,按需要扩展应用服务,是完全有必要的。特别是对于那些框架 基本相同的应用系统,让用户方便配置甚至通过二次开发来改变逻辑规则,嵌入式 脚本语言就起到了很重要的作用。比如说s d g h a z o p 当中,推理的主要过程都是 写在主程序代码当中,如果想要增加一些有用的规则或者是计算过程,那么对程序 的修改每次都要通过下面的流程进行: 1 修改代码 2 编译 3 重新发布 4 应用 5 修改代码 6 编译 7 如果使用了脚本,就可以简化上面的流程。程序中小到一些计算公式,大到一 些主要的控制流程都可以用脚本来完成,由于脚本解释执行的特点,通过修改脚本 部分来改变程序的流程就变成了: 1 修改代码 2 应用 3 修改代码 4 2 2 脚本扩展技术分析 现在,越来越多的软件系统都提供脚本功能,以便让用户更加灵活地操作软件。 为应用程序提供脚本支持可以使用如下几种方法: n e t 框架下的脚本引擎 在微软的n e t 框架中,本身提供了强大的脚本引擎,可以直接使用n e tc l r 的任何编程语言作为脚本语言,如v b n e t 、c 撑、j s e r i p t ,j 撑等等。使用脚本引擎, 我们可以动态生成任意表达式、或动态导入任意脚本文件,并在任意时候执行。但 是,现有的s d g h a z o p 并不是在n e t 平台下开发的,而且对于目前的需求来说, 与n e t 相关的授权费用也过于昂贵。 a c t i v e xs c r i p t i n g 技术 1 0 第二章脚本语言和扩展技术 微软提供的a c t i v e xs c r i p t i n g 技术可使软件扩充变得非常简单,软件开发商利 用脚本引擎( s c r i p te n g i n e ) 支持脚本语言的解释和执行操作,而软件用户可以根据需 要编写自己的脚本代码,交由软件处理,对于用户来说,就好象自己在编写程序控 制应用程序,以完成自己所期望的功能。然而如果使用a c t i v e xs c r i p t i n g ,同样会 面临授权费用和开发成本的问题,并且以上两种方法都是基于微软的开发平台,都 难以适应平台移植的要求。 自定义脚本语言并开发解释器 有很多软件厂商在开发时自定义了类似脚本的高级语言,比如像b a s i c 一样的 简化了的脚本。然而这种脚本语言通常是完全由厂家自定义的语言、语法,是不通 用的,非开放性的,用户需要记住和不断翻阅厚厚的指令手册来编写程序。而且这 种脚本的功能通常也不够强大,难以达到一些高级应用的要求。 通用的可嵌入式脚本 目前,有一些免费开源的通用脚本语言本身具有可嵌入的特点,比如p y t h o n , 使用这种脚本语言来支持应用程序不但降低了开发的成本,而且也具有跨平台的优 势。 综上所述,像p y t h o n 这样的脚本语言不仅功能强大,而且其免费开源和跨平台 的优势很适合用来作为s d g h a z o p 的脚本支持。 2 3p y t h o n 语言介绍 2 3 1 简介 p y t h o n 的创始人是g u i d ov a nr o s s u m 1 3 】,在发明p y t h o n 语言之前g u i d o 曾参与 过- - 1 7 称作a b c 的语言的设计,a b c 是专门为非专业程序员设计的;g u i d o 在 p y t h o n 语言的设计过程中吸收了a b c 语言的许多优点,诸如a b c 的数据类型( 列 表、元组、文本等) ,变量无需声明,内建的功能强大的字符串处理以及简单的控制 结构等特性;同时摒弃了a b c 语言的一些缺陷,其中最主要的就是使p y t h o n 更易 扩展,这也是p y t h o n 语言现在如此流行的原因之一。p y t h o n 的第一个实现是在m a c 机上,p y t h o n 语言的设计还受到m o d u l a - 3 ( 另一种优美强大的语言) 的影响,并结 合了u n i xs h e l l 和c 的习惯。 p y t h o n 是一种解释性的、面向对象的高层语言以及强大的网络服务器端脚本语 言。与其他脚本语言一样,p y t h o n 代码类似于伪代码【1 4 】。p y t h o n 的类模式支持了诸 如多态、操作符重载、多重继承等高级概念,这些面向对象特性使它成为j a v a 和 c + + 等系统语言的理想脚本工具,使用p y t h o n 只需短短几分钟的时间就可以开发出 使用其它语言可能花费几小时的原型。 北京化工大学硕上学位论文 p y t h o n 是开源软件,可以从官方网站上免费得到它的整个系统,拷贝或在自己 的系统中嵌入它都没有限制。而且p y t h o n 是完全开放源码的,这加强了开发者的能 力并产生了一个大的专家团体。p y t h o n 是用可移植的a n s ic 写成的,实际上可以 在今天所用的各主要平台上编译、运行。而且,p y t h o n 程序可以自动编译成可移植 的字节码( b y t e c o d e ) ,可在安装了兼容的p y t h o n 版本的平台上自由运行。 2 3 2 设计理念 可扩充性可说是p y t h o n 作为一种编程语言的特色。新的内置模块( m o d u l e ) 可 以用c 或c + + 写成。而开发者也可为现成的模块加上p y t h o n 的接口。p y t h o n 可以 使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。 p y t h o n 也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导 思想是,对于一个特定的问题,只需要有一种最好的方法来解决。这在由t i mp e t e r s 写的p y t h o n 格言( 称为t h ez c no f p y t h o n ) 里面表述为: t h e r es h o u l db eo n e - 一a n dp r e f e r a b l yo n l yo n e - 一o b v i o u sw a yt od oi t 这正好和p c r l 语言的中心思想t m t o w t d i ( t h e r e sm o r et h a no n ew a yt od o i t ) 完全相反。这也是人们常把p e r l 和p y t h o n 互相比较的重要原因。 p y t h o n 语言是一种清晰的语言的另一个意思是,它的作者有意的设计了限制性 很强的语法,使得不好的编程习惯( 例如i f 语句的下一行不向右缩进) 都不能通过 编译。这样有意的强制程序员养成良好的编程习惯,其中很重要的一项就是p y t h o n 的缩进规则。 还有一个和其他大多数语言( 如c ) 的区别就是,模块的界限。这种界限完全 是由每行的首字符在这一行的位置来决定的( 而c 语言是用一对花括号 来明确的 定出模块的边界的,与字符的位置毫无关系) 。这一点曾经引起过争议。因为自从 c 这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是 一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进( 包括i f ,f o r 和函数定义等所有需要使用模块的地方) ,p y t h o n 确实使得程序更加清晰和美观。 另外p y t h o n 在其他部分的设计上也坚持了清晰划一的风格,这使得p y t h o n 称 为- f q 易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。p y t h o n 直接编写的程序段有时运行效率甚至高于用c 编写的程序。 2 3 3 主要应用领域 p y t h o n 是一个有1 0 年历史的编程语言,它可以在如下领域应用并提升使用者 的业务【1 6 】: 一个宏编程语言 1 2 第一二章脚本语言和扩展技术 可以用p y t h o n 给现有的应用程序添加一个宏语言或底稿编制( s c r i p t i n g ) 能力。 经过稍微的训练,它使用户级别的底稿编制变得简单。发展一种新的语言常常被认 为是大公司的独家专利,而p y t h o n 是一种可以加入现有工具的宏语言,并且适合不 同的层次的人使用。 一个快速的对象模型和算法的原型开发工具 在p y t h o n 下创建对象,可以比现有的大多数语言用更短的代码和更少的时间, 并且全部支持继承,封装和多态性。一个比较流行的办法是在p y t h o n 中创建原型程 序,直到确认设计是正确的再换到c + + 中,一个更好的办法是先将p y t h o n 应用程序 轮廓化,然后在c + + 中重写速度至关重要的部分。 一个调试工具 新程序和代码库需要测试。有经验的开发人员知道给一个新功能或程序建立一 个测试套件会节约时间并减少麻烦。如果一个程序可以与输入输出文件工作,那么 p y t h o n 可以生成输入,运行这个程序,然后检查输出并进行分析。如果问题在于数 据,可以编写一次性的脚本来检查数据是否一致。 数据清除和转换 有时候需要将数据由一个数据库移到一个新的数据库,或新建一个界面让数据 在互不兼容的系统中流动。如果人工来做,这会是一个很繁琐而且容易犯错误的过 程。p y t h o n 对列表和字典的本地支持使复杂的数据转换更加容易。而且这种交互式 模式可以让编程人员在转换过程的每一阶段观看数据。还可以编写由源到目标的数 据转换的脚本并按需要不断运行,直到它正确完成工作。 p y t h o n 作为粘合剂 互不兼容的系统常常需要被联在一起,而且这个过程需要自动进行。p y t h o n 支 持所有的集成关键技术。同时也很好的与文件,协议,d l l 及c o m 对象工作。p y t h o n 还提供广泛的库,可以得到几乎任何种类的数据。它还是很好的控制其他套件、进 行系统管理以及控制其他系统数据流动的工具。 综上所述,p y t h o n 是一种优秀的脚本语言,若希望在其他任何语言中实现所有 这些功能,必定要投资购买代价不菲的第三方库,而p y t h o n 强大的特性都可以免费 获得。 2 3 4 发展前景 p y t h o n 在编程领域的占有率一直处于稳步上升之中,根据最新的数据,p y t h o n 排名第六【1 7 1 。前五名分别是j a v a 、c 、v b 、p h p 和c + + 。作为一个很年轻的语言, p y t h o n 的位置已经相当靠前了。随着微软将p y t h o n 纳入n e t 平台,相信p y t h o n 的 将来会更加强劲发展。p y t h o n 很可能会成为n e t 平台快速开发的主流语言。欲了解 1 3 北京化工大学硕士学位论文 这方面情况,请参考i r o np y t h o n 的相关信息 著名的搜索引擎g o o g l e 也大量使用p y t h o n 。更加令人吃惊的是,在诺基亚智 能手机所采用的塞班操作系统上,p y t h o n 成为继c + + ,j a v a 之后的第三个编程语言1 2 0 0 6 年的g o o g l e 编程大赛已经将p y t h o n 作为参赛语言之一,可见p y t h o n 的影响力 之巨大。 2 3 5 与其他脚本比较 p y t h o n 提供了很多其他语言拥有的特性,另外p y t h o n 本身也是由诸多其它语言 发展而来的,包括a b c 、m o d u l a - 3 、c 、c + + 、a l 9 0 1 6 8 、s m a l l t a l k 、u n i xs h e l l 和 其它的脚本语言,等等。p y t h o n 是“浓缩的精华 ,从中吸取了许多优秀的特性, 并将它们溶于一炉【1 8 】。p y t h o n 也经常被拿来和下面的一些脚本语言比较: 1 p e r l p e r l 是另外一种脚本语言,远远超过了标准的s h e l l 脚本。p e r l 最大的优势在于 它的字符串匹配能力,p y t h o n 的正则表达式很大程度上是基于p e r l 的。然而,p e r l 语言的晦涩和对符号语法的过度使用,让解读变得困难。为初学者的学习带来了不 小的障碍。p e r l 的这些“特色使得完成一个任务有多个方法,进而容易引起开发 者之间的分歧。 2 r u b y r u b y 是一种功能强大的面向对象的脚本语言,使用r u b y 可以方便快捷的进行 面向对象编程。r u b y 的不足在于,没有内省性,缺乏国际化支持,英文文档极度匮 乏f 吲,发展相对较为缓慢。p y t h o n 是多种编程范式的结合,它不像r u b y 那样完全 面向对象。p y t h o n 有一个字节码解释器,而r u b y 没有。p y t h o n 更加易读,而r u b y 事实上可以看成是面向对象的p e r l 。 3 l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论