脚本语言十篇

时间:2023-03-15 03:21:50

脚本语言

脚本语言篇1

关键词:脚本语言、MAXScript、函数表达式

所谓脚本语言,即在应用程序中由用户根据由应用程序以供的命令集,自己编写的程序段,用来简化程序的操作过程或对应用程序进行扩展。像许多应用程序一样,3DSMax也有自己专门设计的脚本语言MAXScript,它是像3DStudioMAX一样面向对象的,有许多对于MAX用户界面征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于MAX的对象层次。是可以调用大部分c++函数的,和MAYA的MEL语言也有很多的相通之处。对于三维软件的高级用户来说,掌握了较全面的技术后发现现有的软件已无法全力表现出她们的思想,他们需要一种可以随时扩展软件工作能力的工具,可以自己开发程序外挂来帮助工作已经是必需的要求了。MAXScript程序给用户提供了更多的想象空间,也是高级用户的必修课。

MAXScript是3dsmax中的插入脚本语言,它为用户提供了以下功能:

·描述3DStudioMAX的全部用途,如造型、动画、材质、渲染等;

·将脚本集成在用户应用面板卷展栏工作界面上,给脚本一个标准的MAX用户接口;

·使用插入的文件的I/O,建立用户输入/输出工具;

·写入可以访问全部场景状态的过程控制器;

·建立批处理工具,例如批处理渲染脚本;

·通过OLEAutomation,与外部系统建立活动接口。

表达式控制器和MAXScript的基本结构和VB类似,但由于3DSMax是图形程序,所以在MAXScript中有许多绘制图形的命令,这些命令类似于AUTOCAD中的LISP文件命令。这样的命令不需要编辑,可直接在程序中运行,并可直接看到运行结果。

在3dsmax的MAXScript这个菜单中有一个记录宏(MacroRecorder),选中这一项,在以后绘制图形时,每一步的操作都会自动转化成脚本语言,打开同一菜单下的脚本记录(MAXScriptListener),可以看到每一步操作的命令形式,通过这种方法可以初步了解MAXScript的基本格式,也可以通过复制命令简化编程步骤。下面以一个简单的实例加以说明。

1、打开记录宏命令,打开脚本记录。

2、在任意窗口划一直线和一个球体。

3、为球体制定位置控制器为路径,选择直线作为运动路径。

4、打开动画记录按钮,将时间调到100帧。

5、将球体在路径中位置调到50(%AlongPath),关闭动画记录按钮。

下面是相应的脚本语言:

1.linetransform:(matrix3[1,0,0][0,0,1][0,-1,0][4.42805,-1.45167e-007,3.32103])isSelected:on

Sphereradius:13.0567smooth:onsegs:32chop:0slice:offsliceFrom:0sliceTo:0transform:(matrix3

[1,0,0][0,0,1][0,-1,0][86.7159,-3.25819e-006,74.5387])isSelected:on

2.select$Sphere01

$.pos.controller=path()

$.pos.controller.path=$Line01

3.maxtoolanimmode

setanimateon

sliderTime=100f

select$Sphere01

4.$.pos.controller.percent=50

maxtoolanimmode

setanimateoff

现欲使球体前50帧运动1/4路程,后50帧运动3/4路程。则根据上面记录编写程序如下(其中绘制过程省略):

maxtoolanimmode

setanimateon’开启动画记录

fort=1to100by1doattimet’设置动画范围从1到100

(

$Sphere01.pos.controller=path()’指定路径控制器

$Sphere01.pos.controller.path=$line01’选择路径

ift<50then’当在50帧以内时

(

$Sphere01.pos.controller.percent=t/2’路程为0到25%

)

ift>=50then’当在50帧以后时

(

$Sphere01.pos.controller.percent=t*75/50-50’路程为25%到100%

)

)

maxtoolanimmode

setanimateoff’关闭动画记录

这样就完成了一个简单的脚本语言的编制。可见通过这种方法编制脚本语言是一种简便快捷的好方法。另外脚本语言中还有很多函数,可通过相关资料查询其用法,这里就不再赘述了。

下面讲一点MAXScript在应用方面的技巧:

1、用MAXScript控制布尔运算

先生成一子弹状物体起名bullet,再生成一与其等直径圆柱和一个立方体,调整子弹头部指向x轴负向,其轴心在子弹x轴最小值处,立方体和圆柱体轴心在x最大值处,对齐立方体和圆柱体轴心,(注意在使用MAXScript时轴心的位置非常重要),关联复制立方体和圆柱体,复制后的物体分别起名为box、bar(圆柱体),将复制后的物体移开便于观察,对原物体进行布尔运算,这是通过对复制后的物体进行控制即可控制布尔物体。下面的程序通过控制圆柱体的高度来控制子弹在立方体上打孔的深度。(在此为简化程序未考虑加减速问题,有兴趣的读者可加以补充)

animateon

fort=1to100by1doattimet

(

$bullet.pos.x=3000-10*t’子弹匀速向x轴负向运动

if$bullet.pos.x-$box.pos.x>=0then

(

$bar.height=0’当子弹未接触到立方体时洞深为0

)

if$bullet.pos.x-$box.pos.x<0then

(

$bar.height=$box.pos.x-$bullet.pos.x’当子弹未接触到立方体时洞深为子弹头距立方体右边的距离

if$bar.height>250then’圆柱体高度即洞深不超过立方体厚度

(

$bar.height=250

)

)

)

animateoff

2、MAXScript对灯光的控制

通过对灯光的三种颜色分别控制可以模仿霓虹灯的效果,当然通过开关控制器就可以较简单的控制灯光,但那样的控制方式比较单调,无法形成霓虹变幻莫测的效果,用MAXScript控制灯光产生的效果几乎可以乱真,这里只提供一种思考不做详细介绍,希望广大爱好者们开动脑筋,发挥想象创造出完美的场景。

3、MAXScript对模型的变形控制

脚本语言篇2

关键词:脚本语言、max script、函数表达式

所谓脚本语言,即在应用程序中由用户根据由应用程序以供的命令集,自己编写的程序段,用来简化程序的操作过程或对应用程序进行扩展。像许多应用程序一样,3dsmax也有自己专门设计的脚本语言maxscript,它是像3d studio max一样面向对象的,有许多对于max用户界面中特征和结构,带动画关键帧的动画模式,并通过层次改变场景对象对应于max的对象层次。是可以调用大部分c++函数的,和maya的mel语言也有很多的相通之处。对于三维软件的高级用户来说,掌握了较全面的技术后发现现有的软件已无法全力表现出她们的思想,他们需要一种可以随时扩展软件工作能力的工具,可以自己开发程序外挂来帮助工作已经是必需的要求了。maxscript程序给用户提供了更多的想象空间,也是高级用户的必修课。

max script是3ds max中的插入脚本语言,它为用户提供了以下功能:

·描述3d studio max的全部用途,如造型、动画、材质、渲染等;

·将脚本集成在用户应用面板卷展栏工作界面上,给脚本一个标准的max用户接口;

·使用插入的文件的i/o,建立用户输入/输出工具;

·写入可以访问全部场景状态的过程控制器;

·建立批处理工具,例如批处理渲染脚本;

·通过ole automation,与外部系统建立活动接口。

 

表达式控制器和maxscript的基本结构和vb类似,但由于3dsmax是图形程序,所以在maxscript中有许多绘制图形的命令,这些命令类似于autocad中的lisp文件命令。这样的命令不需要编辑,可直接在程序中运行,并可直接看到运行结果。

在3ds max的 maxscript这个菜单中有一个记录宏(macro recorder),选中这一项,在以后绘制图形时,每一步的操作都会自动转化成脚本语言,打开同一菜单下的脚本记录(maxscript listener),可以看到每一步操作的命令形式,通过这种方法可以初步了解maxscript的基本格式,也可以通过复制命令简化编程步骤。下面以一个简单的实例加以说明。 

1、打开记录宏命令,打开脚本记录。 

2、在任意窗口划一直线和一个球体。 

3、为球体制定位置控制器为路径,选择直线作为运动路径。 

4、打开动画记录按钮,将时间调到100帧。 

5、将球体在路径中位置调到50(%along path),关闭动画记录按钮。 

下面是相应的脚本语言: 

1.line transform:(matrix3 [1,0,0] [0,0,1] [0,-1,0] [4.42805,-1.45167e-007,3.32103]) isselected:on 

sphere radius:13.0567 smooth:on segs:32 chop:0 slice:off slicefrom:0 sliceto:0 transform:(matrix3 

[1,0,0] [0,0,1] [0,-1,0] [86.7159,-3.25819e-006,74.5387]) isselected:on 

2.select $sphere01 

$.pos.controller = path () 

$.pos.controller.path = $line01 

3.max tool animmode 

set animate on 

slidertime = 100f 

select $sphere01 

4.$.pos.controller.percent = 50 

max tool animmode 

set animate off 

现欲使球体前50帧运动1/4路程,后50帧运动3/4路程。则根据上面记录编写程序如下(其中绘制过程省略): 

max tool animmode 

set animate on ’开启动画记录 

for t=1 to 100 by 1 do at time t ’设置动画范围从1到100 

$sphere01.pos.controller = path () ’指定路径控制器 

$sphere01.pos.controller.path = $line01 ’选择路径 

if t<50 then ’当在50帧以内时 

$sphere01.pos.controller.percent =t/2 ’路程为0到25% 

if t>=50 then ’当在50帧以后时 

$sphere01.pos.controller.percent =t*75/50-50 ’路程为25%到100% 

max tool animmode 

set animate off ’关闭动画记录 

这样就完成了一个简单的脚本语言的编制。可见通过这种方法编制脚本语言是一种简便快捷的好方法。另外脚本语言中还有很多函数,可通过相关资料查询其用法,这里就不再赘述了。 

下面讲一点maxscript在应用方面的技巧: 

1、用maxscript控制布尔运算 

先生成一子弹状物体起名bullet,再生成一与其等直径圆柱和一个立方体,调整子弹头部指向x轴负向,其轴心在子弹x轴最小值处,立方体和圆柱体轴心在x最大值处,对齐立方体和圆柱体轴心,(注意在使用maxscript时轴心的位置非常重要),关联复制立方体和圆柱体,复制后的物体分别起名为box、bar(圆柱体),将复制后的物体移开便于观察,对原物体进行布尔运算,这是通过对复制后的物体进行控制即可控制布尔物体。下面的程序通过控制圆柱体的高度来控制子弹在立方体上打孔的深度。(在此为简化程序未考虑加减速问题,有兴趣的读者可加以补充) 

animate on 

for t=1 to 100 by 1 do at time t 

$bullet.pos.x=3000-10*t ’子弹匀速向x轴负向运动 

if $bullet.pos.x-$box.pos.x>=0 then 

$bar.height=0 ’当子弹未接触到立方体时洞深为0 

if $bullet.pos.x-$box.pos.x<0 then 

$bar.height = $box.pos.x-$bullet.pos.x ’当子弹未接触到立方体时洞深 为子弹头距立方体右边的距离 

if $bar.height>250 then ’圆柱体高度即洞深不超过立方 体厚度 

$bar.height=250 

animate off 

2、maxscript对灯光的控制 

通过对灯光的三种颜色分别控制可以模仿霓虹灯的效果,当然通过开关控制器就可以较简单的控制灯光,但那样的控制方式比较单调,无法形成霓虹变幻莫测的效果,用maxscript控制灯光产生的效果几乎可以乱真,这里只提供一种思考不做详细介绍,希望广大爱好者们开动脑筋,发挥想象创造出完美的场景。 

3、maxscript对模型的变形控制 

脚本语言篇3

你的一举一动都谱写着未来

世界也太乏味更需要编的很美

像第一次见面的场景

从来不曾怀疑牵你渡过了瓶颈

多希望创造一个美好的结局

用最真的感觉慢慢一页一页写

我只期待你陪我演完

我们的脚本要写的好认真

我已经看过太多的悲剧

能给一点点笑就算是笑中带泪

我也无所谓无所谓。

你的一颦一言都谱写着未来

思念也太乏味更需要编的很美

像第一次分手的场景

我也无所谓

看完这个脚本陷得好深好深

要我如何演好爱你的人

故事里男主角剧终时泪中带笑

而他知道这最好

正文:七夕节,鹊舞纷飞,烟花烂漫。玫瑰花香四溢大街小巷,独自一人漫步在这记忆之中。踩着芬芳,许久不见了,还好吗?

思念确实是一种病,特别是此时此刻,如果现在你也是独自一人,那么你会思念我吗?薰衣草的味道,是你身上残存记忆的温度。薰衣草说,它在等待爱情,玫瑰似得如火的爱情,是你等待的吗?

紫色玫瑰,告诉我,你是我最珍贵的爱,我必须好好珍惜,可惜我现在早已失去如何挽回?

还记得曾经的白玫瑰,你说你最爱这个颜色,你说它像我,干干净净的,你说喜欢一样东西纯属凭感觉。

粉色的玫瑰,代表你是我深深的初恋,淡淡地,不那么浓烈,就像你亲吻我那么温柔。

我愿意用黑玫瑰的温柔和真心去再次称呼一下你,那个过去的曾经的称呼就好似黄玫瑰褪去的,总是无法再次寻回。无法得到的蓝玫瑰,是你吗?我一次次地遗忘这条花语,不是我记性差,只是我不忍心记住它。女人就像麝香玫瑰一般善变,但是你却像苔藓玫瑰那样让人心怜。我摘下一朵红黄玫瑰,原来是我们记忆中的快乐,好似最熟悉的陌生人,不深不浅的记忆。那年的你宛如玫瑰花苞,年轻漂亮。我只想像香槟玫瑰一样钟情于你,到老,到死。

幽兰百合,迟来的爱,再迟的爱,来了我就会牢牢握紧,我是极没有安全感的人,一丝一毫的变动我都惊奇万分。黄百合,姬百合,葵百合的爱,不是我想要的,玉米百合的勇敢与执着,令人感动,你却忘记了野百合说过要永远幸福。

任性的紫康乃馨此刻也变成了伤感的米康乃馨,我知道,我很想你。

抽出一支郁金香,深情告白,却语塞了。半天说出了那个期待已久的三个字,我爱你。。。紫郁金香偷偷告诉我,它找到了它的最爱,它说她像白郁金香那样纯情,像黄郁金香一样高贵,这样它们拥有一份羽毛郁金香那样的爱——缠绵,浓烈

盛夏时节我却怀念春菊,为自己的爱情占卜,春菊又怎么能少,想念了一年织女的牛郎,一定要带上雏菊,带上幸福,希望,邀上织女,鹊桥一会。我陪伴着矢车菊,感受着情人节单身的气氛。

风信子,传来远方他们的好消息,他们喜接连理还结婚生子了呢。不管是谁的爱,都是红风信子那一份令人感动的爱。你现在过的还好吗,希望裹胁水色风信子的祝福,轻声细语地问问你,现在还好吗?希望你可以幸福。我嫉妒那个拥有你的男人,就像是紫风信子,孤傲地飘扬在漫漫草原。

记忆里深红色的蔷薇,浮现一句话语:只想和你在一起。当时的我按照粉红蔷薇那样回答了,回答你,我要与你过一辈子。

我像水仙一样多情,你好像吃醋了。

你夸我说是个有才的人,我点了点头,我难道和山茶花一样,也充满了才华,理想以及魅力吗?

五彩的石竹,告诉我,你好美……

我手捧着丁香花,回忆着,磕磕碰碰的。你带给了我紫丁香的初恋,却不知道如何结束。

你喜欢银莲花,结果的结果,代表了没有结果的恋爱,和渐渐失去的希望。

鸢尾突然在我耳边鼓捣,说你还喜欢我,激动了半天,原来是蓝鸢尾那般容易破碎。

远方飘来一束忘忧草,可惜我又怎么能放得下。鹭鸶草在我做梦的时候都让你出现,这是一场绝望的爱情,彩叶草无情的解释这一切。

吹一朵蒲公英,无法停留的爱,让它去吧。

最后的最后,请让迷迭香,帮我留住记忆。

脚本语言篇4

关键词:脚本;乘务职业英语口语;口语教学

近年来,随着民航全球化战略的实施,英语水平成为了企业进行人才招聘的关键因素。作为对外交流的媒介,英语不仅是协助民航员工完成工作任务的重要工具,也是衡量航空公司服务质量的关键指标,更是提升航空公司国际声誉的重要保障。空乘是与整个航空服务业链条的最终客户进行最直接联系的工种,因而空乘人员的口语交流能力也会对客户造成最直接的影响。空乘人员良好的英语口语交流能力不仅能为旅客带来优质的客户体验,还能让旅客特别是非本土的商务旅客对该航空公司产生信任感。民航业国际化的趋势以及公众对高品质乘务服务的期望都对行业院校乘务人才的培养提出了更高的要求。因此,空乘英语口语教学的目标就是基于行业和企业的需求,强化学生职业技能的培养。乘务人员直接面向乘客的工作内容可分为三个阶段,即起飞前、航程中和下降前。乘客登机时,空乘人员要进行旅客接待工作。登机完毕、飞机关闭舱门之后,空乘人员会对乘客致礼欢迎,并进行安全检查。飞机开始航程的二十分钟之后,空乘人员会开始提供机舱内的餐饮服务。而在飞机下降之前,空乘人员还要开展例行的安全检查。在整个过程中,空乘人员要严格按照航空公司预先制订的服务流程逐一开展工作,每一项工作的顺序固定不变。这些工作内容如同已经设定好的脚本,一旦开始,就会遵照规定的顺序依次进行。因此,鉴于乘务工作内容的特点,从认知语言学的脚本理论出发,探讨应当如何改进乘务职业英语口语教学。

一、脚本理论简述

脚本(script)是用来描述一系列特定事件总体信息的知识结构。它是各种认知过程重要的隐形知识结构,也是语言交流的重要载体,其构成因素包括ROLES(角色)、PROPS(所有物)、ACTIONS(行为)以及EVALUATION(评价)。角色为脚本时间序列中涉及的人物;行为是角色发出的动作;所有物是在事件序列中与涉及角色相关的事物;评价即根据动机来评价事件完成的好坏[1]。脚本的顺序不是随意的,它的常规性可以提供在陌生环境下行为做事的基础,一旦了解了脚本,就会了解如何在真实世界中行为处事[2]。脚本具有框架和图式性质。框架是一种认知模型,它代表的是经常出现的具体情景的知识,可以看成是一种描述与认知范畴相关并为认知范畴提供背景的认知语境的方式[3]。脚本只有在框架中才能得到体现,因为与脚本关联的事件和行动序列都是在一定的框架中发生的,必然与此框架发生逻辑联系。同时,脚本所反映的是哪些典型行动应该或者可能在什么时候什么地方按什么顺序发生或进行,在性质上,它是一种规约。因此,脚本与框架一样也具有很强的社会文化倾向。但脚本又是独立于框架而存在的知识结构。框架是一种贮存系统,是关于某种模板主题的数据结构,是静态的,不能够反映经验;而脚本则强调直觉中的操作经验,是面向角色的请接下知识,是动态的。它虽然也是一种结构,但它描述的是程序性或序列性的结构[4]。脚本和图式有一定的相似性,但两者实则存在很大区别。图式是一种面向“概念——关系”结构的知识构型,体现知识的内在联系,而脚本是一种面向情节的知识构型,体现知识的社会规约性[4]。相比之下,脚本就显得更加具体简洁。

二、基于脚本理论进行乘务英语口语教学的可行性

昂格雷尔和施密德认为脚本是指专门为经常出现的一系列事件设计的知识结构,其中有赖于认知语境的典型事件是框架体系的一部分,它们能影响我们产生和理解与该体系有关的语言能力[3]。按照这一观点,脚本也可以被视为认知语境的一个组成部分。它是现实世界中典型情景或活动概念化和经验化的结果,是一种稳定的具有认知意义的记忆单元。脚本涉及的典型情景和活动中个人经常用到或出现的语言使用特征也可以在大脑中结构化。如此一来,原有的知识结构就成为推理的逻辑部分,原来的具体语境因素就变成了大脑中的种种关系。借助脚本知识,事件参与者能够根据自己的角色来做出一定的语言表达或者具体行动。基于脚本理论的相关研究目前多集中于语篇分析、口译教学等方面,但脚本理论对口语教学也有一定的指导意义。昂格雷尔和施密德指出,在面对面的谈话中,交流能否正常进行有赖于谈话双方对脚本知识的了解情况[3]。脚本是人们对经常发生的事件信息加以归纳总结,按发生的先后顺序排列并加以固化而得到的。如果掌握了脚本知识,即使没有亲身经历脚本中的典型事件,我们依然能明白脚本中的每一个步骤应包含的信息内容,并能根据脚本知识在相应场景下做出恰当反应。以空乘人员的工作情景为例,他们的工作环境发生在客舱,工作内容主要涉及旅客服务和飞行安全,工作流程有严格的设定和要求,需要按照程序规定来完成具体的工作任务。不管航程如何改变,在正常情况下,空乘人员每次飞行的工作流程和工作内容都是固定不变的,必须按照规定的要求和顺序进行,不能任意更改;因而相同的工作情景会在空乘人员的工作中反复出现。例如乘客登机时空乘人员需要进行乘客接待,具体内容有问候乘客、乘客指引、行李放置、回答乘客提问、座位调换等。当旅客登机完毕,飞机关闭舱门后,空乘人员会进行下一个环节的工作,具体内容有自我介绍、介绍安全带和救生衣的使用方法、提醒乘客请勿吸烟并关闭电子通讯设备等。参考昂格雷尔和施密德的“乘飞机”脚本,我们可以将空乘人员在工作中涉及的旅客基本服务部分用以下脚本表示,见表1。如果能够将这些典型情景中的工作语言加以归纳总结,将信息概念化、结构化,通过口语教学传递给学生,让学生形成相应的知识结构。那么学生在相应的情景下,就能根据已有的知识做出恰当的语言表达,进行通畅有效的口语交流,从而实现空乘专业职业口语教学的目标。

三、脚本理论指导下的空乘职业口语教学

脚本并非已发生的事实和已获得的经验的简单堆砌,它是围绕一系列有序的典型情景形成的知识系统。因此在语言教学中,我们要帮助学生建立相关的脚本,梳理有关知识,形成知识网络,使得学生能够在脚本知识的指导下展开口语交流。利用脚本理论展开空乘职业英语口语教学要注意以下三个方面。

(一)输入脚本,形成知识体系

空乘工作的内容繁杂,她们不仅需要与乘客就一般社交场合的常见话题进行沟通交流,也需要回答乘客、机组人员等提出的关于客舱服务或安全等方面的问题,还要能基于客舱环境、客舱服务等话题进行说明描述,并对相关活动做出指示。这些工作涉及的脚本序列繁多,内容迥异,例如空乘人员与外籍乘客之间进行交流所涉及的脚本知识显然区别于空乘人员跟机组人员之间的沟通交流所涉及的脚本知识。为了降低脚本习得的难度,老师在教学中要根据脚本的性质和内容对其进行分类;同时,老师还要明确脚本的主题、背景以及脚本中的角色、行为和评价等一系列因素,鼓励学生寻找与脚本主题相关的百科知识以及与情境相联系的语言表达,帮助学生将已有的旧知识和获得的新知识联系起来,建立排列有序的知识网络。语言学习不仅与输入的语言知识有关,也受到学习者的认知能力和经验感知的影响,脚本的习得过程亦是如此。学生可以基于自己的经历体验和已有知识来加工信息,对脚本进行信息补充,或者重新整合并构建新的脚本,这是一个主动认知的过程。为了提高脚本习得的效果,要让学生充分发挥主观认知能力,而脚本输入的方式是我们需要关注的重要因素。乘务职业口语教学涉及的内容跟空乘人员的工作内容息息相关,但其中许多是在日常生活中难以经历体验的事件,学生很难对其产生直接的认知经验。如果仅仅通过文字内容的输入,学生难以理解并掌握这些脚本知识。因此老师要采取灵活多样的形式来输入脚本,加深学生的理解。教学中可以借助音频、视频多媒体资源输入信息,以形象直观的方式为学生提供丰富的脚本知识,促进学生习得脚本。

(二)脚本操练,熟悉知识

脚本的输入能帮我们建立知识网络,但要能够熟练使用脚本知识完成语言输出,需要通过模仿脚本中的典型事件来进行操练,完成知识的内化。交际中使用的大量自然语言是程式化的、自动的和重复的,被称为固定用语。固定用语由于在某种特定的情景内经常被使用,所以一经提起,大脑便倾向于激活与该表达有关的情景框架以及内部发生的相应事件或行为,因为这些事件或行为的典型组合方式和内部结构关系被概念化后以脚本的形式储存在人的记忆中[1]。只有在固定语言表达与常见情景之间建立起联系,当交际中相关脚本被激活之后,人们才能根据脚本知识做出相应的语言表达。学生可以通过角色扮演来演练脚本,例如“乘客接待”“乘机介绍”等,以便熟悉实际情景和常用句型,并在它们之间建立联系,为激活脚本奠定基础。

(三)脚本扩展,补充信息

脚本具有动态性,它虽然建立在反复使用的基础之上,但它的知识结构并非一成不变的。它不仅会随着人们的认知和体验发生变化,也会随着具体语境的变化而发生改变。在日常的工作生活中,我们会发现构成脚本的事件或活动并非完全固化,其事件的推进也并非总是按照常规顺序进行。生活本身的多变性使得具体语境中可能存在许多突发事件或是不符合脚本预期的情况,这就需要我们不断充实和丰富脚本的内容,以便灵活应对具体情境。对于空乘人员而言,当飞机飞行顺利,乘客平安无虞时,她们的工作主要是为乘客提供各种服务,如餐饮服务、机上娱乐系统管理、免税品销售、客舱清洁等,让他们享受舒适愉快的飞行旅程。然而一旦出现特殊紧急情况时,如机上乘客突发疾病需要进行处理,因为天气原因引起飞机颠簸,出现机器故障或其他原因使得飞机必须紧急迫降等,空乘人员需要立即采取措施,做出反应。在这些紧急情况下,空乘人员需要用到的脚本知识已经远远超出普通服务类脚本的知识范围。因此在口语教学中,这些偶有发生的次脚本更需要引起我们的关注,因为它们关乎乘客的生命安危。我们要在原有的服务脚本中补充相应的知识,让脚本的知识网络涵盖更大的范围,变得更为丰富具体。

四、脚本理论应用中需要注意的问题

(一)语言准确性

空乘人员的工作并不仅仅如常人所想的只是为机上乘客提供各种服务,其更重要的职责是维护飞行安全,包括协助乘客了解空中飞行的安全知识,指导乘客使用机上安全设备,以及在紧急情况下,组织乘客迅速安全地撤离飞机等。在这些关乎生命安全的情景下使用的语言必须精确明白,不易产生歧义,才能让旅客完全理解并跟随空乘的指令做出正确的行动。对于脚本中涉及旅客安全部分的语言表达,学生一定要彻底了解并掌握,做到用词准确,合乎规范,这样才不在实际交际中出现表达失误,导致事故。

(二)语言得体性

脚本具有社会规约性。不同的文化具有不同的社会规约,因此脚本也会受到文化背景的影响,体现出文化差异。在真实的工作场景中,旅客的国籍和文化背景不同,决定了服务用语的选择。老师在口语教学中一方面要提醒学生关注不同文化背景带来的差异,另一方面要提供源于真实生活的脚本,让学生了解文化差异的具体表征。只有认识了脚本在不同文化下的适当表征,学生才能得体使用语言,避免出现交际失误。笔者曾邀请某航空公司的空乘人员来校为空乘专业的学生作讲座,讲座中她提及了以下事例:某次在执行国际航班的飞行任务时,她为一名外籍乘客提供点菜服务。当乘客询问机上是否有威士忌时,她很自然地回答,“Yes,ofcourse”。但是乘客对她的回答却大为光火,指责她态度倨傲,她惊讶之余却不得其解。事后经过询问同事她才明白,“ofcourse”的语气太绝对,过于直接,因此乘客误以为她觉得自己的提问简单并对此颇感不屑,才会心生不快。相对而言,“sure”比“ofcourse”的口气委婉礼貌,用在此处更适合。作为服务人员,空乘人员在与乘客交流时需要把握分寸,注意语言得体礼貌,才能让乘客感觉轻松舒适自如,因此语言的得体性在教学中不可忽视。

五、结束语

乘务专业英语口语教学的目的是在当下学习在今后工作情境如何有效地实现与乘客的交流,完成工作任务。脚本理论对于乘务职业英语口语的教学具有重要的指导意义。利用脚本知识指导乘务职业口语教学,使得教学从“学习本位”转变成“能力本位”,真正做到面向对象、基于过程、创设情境,进而基于岗位需求培养出高素质的乘务人才。但是在具体的教学过程中,教师还需要通过实践不断探索行之有效的教学方法,以便更好地引导学生习得并灵活运用脚本知识,加强口语表达,提高交际能力。

参考文献:

[1]王敏.基于社会脚本理论的英语听力认知策略研究[J].吉林工程技术师范学院学报,2009,(7):50-51.

[2]武小莉.图式理论研究对口语输出的启示[J].湖南科技学院学报,2011,(2):162-165.

[3]UngererF.&H.J.Schmid.AnIntroductiontoCognitiveLinguistics[M].Beijing:ForeignLanguageTeachingandResearchPress,2001:212-217.

脚本语言篇5

关键词:Python;网络游戏;脚本;集成

中图分类号:TP391.9 文献标识码:A 文章编号:1009-3044(2013)09-2109-03

1 概述

网络游戏发展至今,市场竞争相当激烈,这就促使开发者必须快速、高效的响应玩家需求才能站得一席之地。传统的游戏开发中大量使用C/C++技术,虽然C/C++有着明显的性能优势,但很多时候我们关心的不是程序的运行效率,而是程序的开发效率、维护效率、可移植性等[1]。在游戏中使用Python脚本,就正好能满足这些目标,小到一些计算公式,大到游戏的控制流程都可以通过脚本完成,且Python支持运行时动态修改,能做到代码热更新。因此,构建基于Python的网络游戏脚本系统是非常具有应用价值的。

2 Python动态脚本语言简介

Python是一门优雅、简约、健壮的开源解释性语言。它诞生于1989年,由Guido Van Rossum开发设计。Python最初源自于某个研究项目,为了提高工作效率而创造的一种通用程序设计语言。经过十来年的发展,Python已经逐渐完善,由于其强大的扩展性和丰富的库支持,很多领域都出现了它的身影,譬如YouTube、豆瓣等就是使用Python技术的成功案例。Python的主要特点有[2]:

1)进入门槛低 Python语法相当的简洁,编写出的程序通常短小精悍,且类似于自然语言,符合开发者的使用常识和直觉,再加上设计精巧的数据结构和内存管理,使得它成为一门容易学习的编程语言。

2)面向对象 Python中面向对象的实现是通过使用自定义的类和对象来完成的,这种特性是在其设计之初就被赋予的。

3)内存管理功能 Python解释器接管了内存管理,这使得开发人员可以更关注于程序本身逻辑的实现,而不必像C/C++程序员那样常常分心于内存事务的处理。正因为如此,Python开发的程序周期更短、错误更少。

4)可方便地嵌入宿主语言并与其通讯 通常一些特别强调性能的地方,可以用C来编写,然后在Python中调用这些扩展模块以达到性能提升的目的。反之C/C++中也可以嵌入Python解释器,这样就可以替代动态连接库形式的接口,使得程序开发更灵活。

5)丰富的库 Python的标准库包含有数百个模块,其功能涵盖与操作系统、解释器、Internet等的交互,所有这些模块都已经充分测试,可以直接在开发中使用。

3 脚本系统架构设计

脚本在游戏开发中扮演着粘合剂的角色,如何高效、快捷的使用和管理脚本,使之服务于游戏逻辑的开发并驱动整个游戏进程就是我们需要解决的问题。脚本和宿主代码通常是以事件为中心进行相互交互[3],具体在游戏中与脚本交互的就是我们的游戏引擎。从图1中我们可以得知脚本系统的基本框架,即脚本语言本身和脚本接口模块。脚本系统设计的关键在于接口模块的实现,为了提供一个通用的脚本系统设计方案,我们将脚本接口模块集成到引擎中。脚本接口模块主要作用是方便Python脚本的扩展和嵌入,为Python脚本与游戏引擎之间提供一个数据交互的通道,从而将游戏的逻辑和具体实现分离开来[4]。

3.1 脚本接口模块的总体设计

脚本接口模块的总体设计如图2所示,它由游戏世界接口、脚本对象管理器、脚本包装器、逻辑脚本、消息处理器脚本几个部分组成。其作用主要包括以下一些方面:

1)提供Python脚本能够实现游戏具体功能的接口,具体包括脚本可以创建游戏对象、修改游戏中角色对象属性、设置定时器、打印调试日志等功能,这是由游戏世界接口管理完成的。

2)便于引擎管理脚本文件,使得引擎能够根据逻辑灵活的调用相关脚本。这是通过脚本包装器将脚本文件由一个独立的管理类模块管理实现的,脚本包装器由逻辑脚本对象、消息处理器对象组成。其中消息处理器对象维护着一个消息到逻辑处理的映射关系表。

3)通过修改消息处理器对象维护的映射关系表,引擎内核可以动态的加载、修改、删除脚本对象,从而实现游戏逻辑的热更新。

通过脚本接口模块这个抽象层使得引擎与Python脚本可以相互交互,Python与C++的交互是建立在Python与C的基础上的,主要是数据格式的转换和对异常的处理。

3.2 Python调用引擎函数

本系统需要使用Python语言来实现引擎的逻辑部分,因此引擎必须为Python语言提供访问内部实体的接口,提供一个接口需要以下一些步骤:

1)引擎中创建具体的扩展模块代码。

2)脚本接口系统中编写一个单独的C源文件,并利用样板来包装代码。

① 包含Python.h头文件,它包含了我们所需要的所有声明。

② 为每一个函数都增加PyObject *Module_func()的包装函数,用于将Python参数转换成C程序格式类型,处理完再转换为Python对象传回给Python解释器。期间如果有错误出现,即设置模块的异常处理对象并返回NULL。

③ 增加PyMethodDef ModuleMethods[]的数组,用于将函数名与函数实现联系起来。

④ 增加模块初始化函数initMethod()。

此外,还可以通过一些自动化工具来完成上述过程,譬如使用SWIG工具,它是一种简化脚本语言与C/C++接口的开发工具,通过包装和编译C程序达到与脚本通讯的目的[5]。

3.3 引擎调用Python函数

Python被用作实现引擎中的逻辑和消息处理器,然后在需要的时候从C++中调用脚本中的函数。主要步骤如下:

1)设置编译环境,即设置Python头文件和库文件目录。

2)初始化Python解释器,Py_Initialize()。

3)调用Python脚本逻辑,并处理异常。

4)释放资源,Py_Finalize()。

4 应用案例

该脚本系统结构清晰,易于实现,利用该系统在游戏中的寻路和城战模块中使用Python脚本来完成逻辑,如图3所示,实践证明使用该脚本系统能够带来较高的开发效率,且能动态的修复线上bug,快速的响应了玩家的需求。

5 结束语

本文设计了一种基于Python的网络游戏脚本系统,通过在脚本接口模块中提供脚本调用的引擎接口,使得利用脚本就可以完成游戏逻辑,有效地降低开发的复杂性,此外,游戏逻辑和引擎的分离提高了系统的稳定性,在实际项目中使用该脚本系统取得了较好的市场效果。

参考文献:

[1] 于造波.脚本技术在游戏引擎中的应用[J].电脑知识与技术,2008(19) :167-169.

[2] 王国强,张贝克.基于Python的嵌入式脚本研究[J].计算机应用与软件,2010,27(3):107-109.

[3] 王娟玲.网络游戏引擎技术的研究[J].电脑编程技巧与维护,2011(10):64-65.

脚本语言篇6

关键词:Wincc监视系统;语音报警;Horn报警组件;脚本;C语言 文献标识码:A

中图分类号:TP273 文章编号:1009-2374(2017)08-0071-02 DOI:10.13535/ki.11-4406/n.2017.08.034

WinCC是SIEMENS推出的运行于Windows操作系统的HMI/SCADA系统。作为全集成自动化系统的重要组成部分,该系统凭借集成方便、功能强大等优点在工业、农业等自动化领域中得到广泛应用。生产过程中如发生异常状况,SCADA系统应在第一时间以语音、图像等多种方式通知现场人员进行故障处理。WinCC的Horn组件可以通过组态配置来实现语音报警功能,但会降低WINCC的运行效率,本文介绍了一种借助脚本程序来实现语音报警功能的Wincc报警应用。

1 语音报警实现原理

WinCC本身不具备发出语音的功能,也没有提供处理声音的相关函数,但鉴于可以与操作系统完美结合的优点,我们可以通过在全局脚本使用C语言调用Windows的API函数来实现语音报警功能。

WinCC可以与PLC控制系统进行实时数据通讯。当生产过程出现异常时,WinCC可以及时准确地获取到PLC控制系统中的故障或异常代码,随后触发全局脚本执行特定程序,进而调用Windows系统API函数,驱动计算机声卡和音箱实现语言报警,如图1所示:

2 语音报警的实现

当我们对WinCC组态了消息归档(报警归档)后,在某缶事件发生时,就会触发相应的消息变量。如果在全局脚本中设定合适的触发器,就可以通过在全局脚本中编写执行C语言程序调用相关的Windows函数,使得电脑播放指定的Wav格式的音频文件,实现语音报警的功能。

2.1 Windows API函数

PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)函数为Windows API函数,可以播放Wav格式的音频文件。

函数声明:

BOOL PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)。

形参:

char*pszSound:指向要播放声音文件的全路径,使用两个连续的反斜杠转义代表一个反斜杠。

char*hmode:应用程序的实例句柄,除非指向一个资源标识符(即fdwSound被定义为SND_RESOURCE),否则必须设置为NULL。

DWORD dwflag:标志的组合,若成功则函数返回TRUE,否则返回FALSE。

当dwflag=0时,声音文件播放一次,该脚本一直等到播放结束。这时声音播放的脚本会一直占用这个线程,其他C脚本无法在期间执行。

当dwflag=1时,声音文件播放一次,同时并行其他的C脚本而不受影响。

当dwflag=2时,如果未找到声音文件,则不播放默认值,而是什么也不播放。

当dwflag=8时,重复该声音文件直到下个PlaySoundA调用。

2.2 全局脚本

WinCC系统运行后,当配置的相关变量的数值超出PLC系统的设定值时,电脑将自动以指定的播放形式播放指定的Wav格式的文件,实现语音报警。

全局脚本中编写相关程序并设定脚本触发器后,当触发条件满足时,WinCC系统会自动执行其中的程序实现语音报警。

实际工业生产使用中,语音报警音乐一般都很短暂,所以一般都会使用循环播放的模式,所以将PlaySoundA()函数的形参dwflag设置为0x0008,即声音文件循环播放,当故障确认后,利用故障确认位来实现报警音乐的停止播放。

此外代码编写时需要注意PlaySoundA()函数在调用中必须首先进行函数的声明,否则无法进行PlaySoundA()函数的调用,编译报错。

3 运行结果

由于该功能为语音报警的实现,虽然系统运行中可以实现语音报警,但无法直接展示运行结果,为此在全局脚本中通过格式化输出函数printf()函数以输出字符串的形式进行打印。如图3所示:

4 结语

通过在全局脚本中编写C语言可以在不安装Horn组件的情况下实现WinCC的语音报警功能,可以播放指定的Wav格式音频文件,具有方式灵活、减少系统占用资源、提高运行速度的优点,有较强的实际意义。

参考文献

[1] 何龄修.读顾城《南明史》[J].中国史研究,1998,

(3).

[2] 杨鸿.C语言在WinCC语言报警中应用[J].自动化应

用,2016,(3).

[3] 王晓东.SIMATIC WinCC环境中C语言的应用[J].控

制工程,1999,(6).

[4] 王禹.基于WinCC的操作画面语音报警设计[J].数字

技术与应用,2015,(7).

[5] 冉井旺,戴滔.语音报警在集中监控系统中的设计应

脚本语言篇7

关键词:WinCC;PLC;人机界面;C语言;Visual Basic语言

中图分类号:TP393文献标识码:A

文章编号:1009-2374 (2010)27-0080-02

0引言

随着工业自动化程度的日益提高,人机界面技术在工业生产中应用的越来越普及。组态软件的出现使得利用计算机可以更加高效地对现场数据进行处理,从而实现工业现场的优化控制。其中德国Siemens公司的Windows Control Center (简称WinCC)以其良好的操作性和强大的功能而著称,在工业领域得到了广泛应用。

1WinCC的C脚本

WinCC集成了C脚本功能,C脚本遵守标准C语言规范,并提供了基于C脚本规范的系统函数,支持组态工程师进行全开放的自由编程,进行深层次的二次开发。这为在WinCC中引进满足实际需求的各种算法提供了基础的编辑平台。

WinCC的全局脚本编辑器(Globe Script)为组态工程师提供了C脚本开发环境。它将函数分成项目函数、标准函数和内部函数三种类型,其中项目函数是组态工程师自己开发的符合C语言规范的函数,编译后的项目函数允许用户在整个项目内像调用C语言内部函数一样自由使用;标准函数是WinCC系统自带的在C语言基础上开发的若干组态常用函数,允许组态工程师对之进行更改;内部函数是C语言自带的系统函数,不允许组态工程师编辑修改。组态工程师可以在组态画面中利用函数,实现各组件的动态化。可见,编辑相应的项目函数是实现不同用户系统独立功能的一个主要途径和技术手段。

要将所有的设备都显示在一张画面里是不可能的,所以将设备按照处理工艺的功能分级在多张画面内,之间的切换使用按钮的鼠标动作来实现。用WinCC的脚本编程,在按钮动作中调用它的内部函数来实现.

1.1按住释放按钮

它的C脚本代码如下:

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{#define Par1 "_CMD"//定义变量

SetTagBit(Par1,1);//置位变量为1}这是按住的按钮代码;

#include "apdefap.h"

void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{#define Par1 "_CMD"//定义变量

SetTagBit(Par1,0); //置位变量为0}这是释放的按钮代码.

1.2位反转按钮

它的C脚本代码如下:

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{#define PAR1 "_CMD"//定义变量

if (GetTagBit(PAR1)==1)

SetTagBit(PAR1,0); //置位变量为0

else

SetTagBit(PAR1,1); //置位变量为1}

2WinCC的VB脚本

2.1VB脚本在配方参数保存与打开中的应用

它的VB脚本代码如下:

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)

……

SelectPathNameTag.Write ""

End Sub

以上为保存按钮的VB脚本代码,中间相同部分已省略。它可以用来保存为txt文本文档存储到本地计算机硬盘中,需要打开时,只需找到文档存储路径调用出来即可把参数显示到相应的表格中,使用户操作十分方便。打开按钮的VB脚本代码如下:

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)

DestinationPath = "D:\ZRecipe Depos\" & SelectPathNameTag.Read//打开路径

……

End Sub

工业生产中经常有配方程序,有许多参数需要预先设定好,然后让设备按照预定的参数生产。工艺工程师预先设好参数后,保存为命名好的文本文档,当要修改参数时调出文档找到需改参数对应的表格即可。

2.2VB脚本在数据导出中的应用

WinCC中经常会有大量归档数据需要导出,除了利用归档窗口中的打印控件导出数据外,利用VB脚本程序也可导出对应的数据并生成CSV格式的Excel文件可存放于计算机硬盘上,且导出数据的速度比归档窗口中的打印控件快。

只需在WinCC窗口界面中做一按钮,在按钮的属性->事件->鼠标动作中编写如下VB语言脚本代码:

Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)

DestinationPath ="D:\test.csv"//存储路径

……

End Sub

3结语

WinCC对象的属性可以进行设定或编程以实现对该对象的动画及事件的触发,内嵌的C语言减少了开发者的学习时间,并增加了其灵活性。进入21世纪后,工业自动化水平日益提高,人机界面技术在国内外的工业生产、自动化控制等领域已得到越来越多的认可,其中组态软件以其开发周期短、功能强大等特点在业界得以广泛的关注。本文通过实际项目简述了利用组态软件WinCC进行数据处理的基本思路和优化方法,指明了如何利用WinCC后台强大的脚本功能实现各种数据处理算法的一般过程。实践证明,该方法不仅有效节约了系统资源,而且能够实时显示和跟踪数据变化,满足现场使用的要求。

本文作者创新点:将人机界面引入自控系统,实现了良好的人机交互;利用计算机运行速度快、容量大的特点,把各类复杂的数据处理放在了WinCC中进行,提高了设备利用率,增快了响应速度。

参考文献

[1] Siemens AG .wincc v5 The Configuration Manual and the Communication Manual,Germany:Siemens,2000.

[2] Siemens AG .wincc SIMATIC WinCC 系统描述[P].Germany:

Siemens,2000.

[3] 西门子(中国)有限公司自动化与驱动集团.SIMATIC WinCC V5 基础手册[M].1997.

脚本语言篇8

关键词:MapReduce;脚本解析;QL;事件配置

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)19-4361-03

An Analysis of Parsing Module QL Script

CHEN Hao

(Guangdong Technical College of Water Resources and Electric Engineering, Computer Information Engineering, Guangzhou 510925, China)

Abstract:MapReduce system as a core component of the script parsing module, which is the basis for a distributed cloud computing platform implementation. The module is based on the realization scripting interface, the language used in this process is QL (Query Language). After the QL script by script parsing module for parsing, event execution module configured by the parameters of events come true. The following detailed analysis of the implementation process of this scripting language.

Key words:MapReduce; script parsing; QL; event configuration

1 QL脚本的设计理念

QL脚本在设计方面,充分考虑了与现有数据库查询语言SQL相结合的特点,QL脚本无疑可以被看作是对数据库查询语句SQL的一种转型和衍生。基于对现有技术的可扩展性和覆盖性分析,使用QL脚本来定义关键词的过程能够适应市场上各种网络流量统计的不同类型,当然必须对设计过程中对关键词的灵活扩展性作以充分性的考虑,以便于后期对QL脚本的扩容升级,更好的支撑云计算平台的综合应用。

2 QL脚本模块的分析

QL脚本模块解析可以分为以下几大模块:解析引擎(ScritEngine)、脚本语句解释器(ScritParser)、比较运算模块(Compare)、算术运算模块(Arithmetic)、逻辑运算模块(ExpressionEngine)、聚合运算模块(Aggregate)、字段运算模块(Field)、配置模块(Configuration)等。图1是QL脚本解析模块的整体结构图。

QL脚本解析的实现过程如下:系统的入口为ScriptEngine,它的功能是读取QL语言脚本,并将脚本逐行传递给脚本解析器。脚本解析器按照每行的QL语言脚本首字母对语句进行分类,根据不同语句的类别调用不同的解释模块对语句进行解析。语句解析逐行进行,如脚本中含有子句等其他复杂句型,脚本解析器会调用其他的处理模块,如调用聚合运算模块对脚本进行相应的处理。

3 配置文件的定义及解析过程

一个完整的QL语言脚本包括配置文件、原始数据文件、输出结果保存位置和统计执行语句。模块在运行时,首先需要对配置文件进行解析以获取数据格式,然后对输入数据和输出数据路径进行解析,最后解析统计执行语句,并将解析的命令传递给作业执行模块。

编写QL语言脚本时,首先应指定配置文件,指明要处理的数据格式。配置文件的格式如下:列序号、名称、描述、数据类型。根据配置文件中的格式,系统对输入数据进行匹配,从而对指定列序号的数据进行操作。配置文件支持如下的关键词:

表1 配置文件关键词列表[关键字\&功能\&ResetColumn语句\&用于重新载入列配置文件,切换不同的配置文件\&createColumn语句\&用于创建一个新的配置文件,并载入这个配置文件\&AddColumn语句\&对当前的配置文件进行增加列的操作\&]

如上表所示,目前配置文件中共支持三个关键词,分别为:ResetColumn用于重新载入列配置文件,可用于切换不同的配置文件。CreateColumn用于在当前脚本中创建一个新的配置文件。AddColumn对当前的配置文件进行增加列的操作。

4 关键词解析

QL语言中的关键词指的是在每一句QL脚本句首的单词,每个语句的功能由此关键词来确定,在解析时脚本解析模块会根据该关键词来进行下一步的判断。目前QL语言支持的关键词为:Process,Select,Count,CountD如下表所示。

表2 脚本关键词列表

[分类\&关键字\&功能简介\&分组聚合统计\&Process\&对各分组求集合函数值\&选择字段\&Select\&选择字段、字串、表达式输出结果\&多重计算\&Count\&同时对多个逻辑表达式计数\&去重计算\&Countd\&对指定字段去重计算\&]

1) Process 语句

功能介绍:提供统计各分组内的聚合函数运算结果的功能。Process语句支持多种表达式,表达式中必须包含有函数。且支持多种子句:where 子句、groijpby 子句、order by 子句、tofile 子句,having 子句' limit 子句。

在脚本解析时,Process类接收以"Process"开头的一行脚本,从后往前寻找各个子句,并将该行脚本切割为各个子句,创建子句解释类的对象处理各个子句。Process语句脚本解析过程按照从后往前的顺序解析子句。解析完成后,将所需信息封装起来,通过作业配置的方法,传给作业执行模块。

2) Select 语句

功能介绍:用于选择某列或多列输出。提供选择某个字段、多个字段四则运算或字段运算的功能。

Select语句类关系与Process的类似,按照从后往前的顺序解析子句。Select语句支持多重输出功能,语句中可通过花括号指定多重输出条件和输出文件名。解析完成后,将所需信息封装起来,通过作业配置的方式,传入作业执行模块。

3) Count 语句

功能介绍:提供同时计数多个值的功能。

Count语句设计为同时计数多个值的功能。Count后可跟多个逻辑表达式,在一次读取数据的同时,计数满足各个表达式条件的记录数。

4) CountD 语句

功能介绍:提供对指定字段的去重计数功能。

CountD语句支持where子句,group by子句和tofile子句。CoimtD语句的主要功能是以符合where指定条件的话单为对象,按照groipby分组,对CountD指定的字段进行去重计数。

以上的QL关键词只是定义了该语句的功能范围,实际统计的任务需要其他运算逻辑语句来组成更为复杂的操作。全部的关键词都支持算术运算,包含加减乘除四种运算,并且可以使用括号定义运算优先级。当没有括号时,将从左到右进行计算,乘除运算优先于加减运算。

5 事件执行模块

事件执行模块的功能是接收脚本解析模块传递过来的参数,根据参数选择不同的Map和Reduce类,并配置和提交统计事件到Hadoop框架。事件执行模块内的各模块基本都遵循Hadoop的Map Reduce框架的接口定义。主要任含以下几个模块:输入输出模块、Map模块、Partition模块、Combine模块和Reduce模块。

事件执行过程示意图如下:

图2 事件执行过程示意图

每一行语句可解释为一个可执行的MapReduce的事件,事件执行组件配置好事件后提交给Hadoop的JobTracker,由Hadoop的Map Reduce框架执行事件,Map模块读取原始数据分块,Partition模块和Combine模块对Map模块输出的统计结果进行合并处理,最后提交给Reduce模块最终输出至HDFS。

1) 输入输出模块

输入模块负责读入文件分片并将其分割成记录,适用于读取流记录这种半结构化文件。本模块的输入为网络流量记录文件,输出为统计任务的键/值对,主键为本条记录在文件中的字节偏移量,值为流量记录值。本模块只用于读取半结构化的文本文件,输入模块输出的键/值对,通过引用传递给Map模块。

输出模块根据指定的字段分隔符和行分隔符输出结果。本模块与输入模块类似,可以将记录以行的形式存入文本文件中。其输入为Reduce模块产生的键/值对。输出为最终结果文件,存储在HDFS上。

2) Map 模块

Map模块的功能为从整条网络流量记录中取出指定字段,经过提取、计算等操作后,产生键/值对,并将统计的初步结果写到计算机本地磁盘。Map模块继承了 Hadoop框架的Map模块,并根据处理的网络流量记录格式进行了一些定制。

根据统计功能的不同,目前系统包含如下两个Map部件:GrovpMapper和CountMapper。GroipMapper用于处理分组后的集合统计,分组条件作为主键,Map端集合运算结果作为值进行输出。CountMapper用于处理多重计数的统计需求。Map模块的输入为输入模块输出的键/值对,Map模块对相同的主键的键值进行合并处理后,输出新的键/值对,键为分组的条件,值为该分组对应的值。

3) 数据分割模块(Partition)

Partition模块继承了 Hadoop框架定义的Partition模块。利用该模块,系统将Map输出的结果进行初步划分,可以保证某一取值范围的中间结果送到同一个Reduce任务中进行处理。划分时采用对key进行hash运算的方式,在保证正确性的同时一定程度上简化Reduce的过程。划分的个数是由用户自定义的Reduce任务的个数。

4) 数据合并模块(Combine)

Combine模块用于计算机本地中间文件的合并。该模块通常运行在Reduce操作前,对之前模块的结果中相同主键的键/值对进行合并。Combine模块的处理步骤与Reduce的操作是相似的,但是Combine模块通常在Map模块运行后进行,它的出现可以有效的减少集群内的数据传输。因为在Map Reduce运行的过程中,Map模块和Reduce不一定在同一运算节点进行,该模块可以将Map输出的结果进行初步合并,减少输入至Reduce模块的文件大小。

5) Reduce 模块

Reduce模块继承了 Hadoop框架定义的Reduce模块,实现的功能是对前一模块统计的中间结果进行合并,输出最终结果。处理流程为:Map模块的中间结果被Combine模块和Partition模块处理以后,存入运算节点的本地磁盘临时文件内。集群主节点通知Reduce模块去对应的运算节点读取文件。目前系统所有Map模块生成的中间结果都按主键值被Hash函数分成N份(N是系统用户指定的Reduce数量),N个Reduce任务分别负责不同的主键取值区间。因此,所有的Reduce任务需要按照主键的取值范围去对应的节点读取Map输出的中间结果,并将其形成键/值的列表。读取后,再次按照主键进行合并,并进行函数计算、算术运算、逻辑运算等操作。最终由输出模块将最终的键/值对输出到HDFS。

5 结束语

QL语言设计目的是能让了解该语言的普通用户,即使在完全不懂JAVA编程技能的情况下,能够在云计算平台系统上进行分

布式计算。因为作为开源项目的Hadoop为用户提供了众多的JAVA编程接口,但是很多用户并不具备编写完整程序的能力,而且针对不同的分析任务都编写相应的程序成本较高。通过QL语言可以较好的解决这一难题,用户只要在掌握基本的语法的情况下即可实现分布式的云计算。

参考文献:

[1] 万至臻.基于MapReduce模型的并行计算平台的设计与实现[D].杭州:浙江大学,2008.

[2] 谢桂兰.基于Hadoop MapReduce模型的应用研究[J].微型机与应用,2010,4.

脚本语言篇9

关键词:概念形成机制 转喻 隐喻

一、引言

概念是事物本质的反映,它是对一类事物进行概括的表征。概念形成指个体通过反复接触大量同一类事物,从而获得此类事物或现象的共同特征或共同属性,并通过肯定或否定的例子加以证实的过程。自然语言是人类心智的产物,与其他认知领域密切相关,并且本身也是心理、文化、社会、生态等因素相互作用的反映。语言结构依赖并反映概念的形成过程,而概念的形成过程又以我们自身的经验为基础。那么,人类在与外部世界相互作用的过程中,其概念形成机制是怎样的?这种机制在语言中又有怎样的体现?

针对以上问题,本文拟运用Lakoff (1987)的“理想化认知模型(ICM)以及相关的隐喻、转喻理论以名词“脚/足”为例,对英汉词语的词义拓展过程中的概念形成机制进行对比研究,对相关理论提供实证依据,探究其普遍规律以及两者各自的特点。

二、概念界定

1.ICM。ICM是 Lakoff (1987)认知理论中的重要组成部分。根据下面四个原则建构: (1)命题:由ICM中的成分、特性及它们的关系组成。人类的知识结构大多储存于命题当中。(2)意象图式:指人类日常身体经验中不断重复出现的相对简单的结构,如:容器、路径、联结、力量、平衡及各种空间方位和关系等。(3)隐喻映射:将命题、命题中的一个成分或意象图式,从一个认知域映射到另一认知域中相对应的结构中。(4)转喻映射:用同一经验域中容易感知、理解、辨认、记忆或突显的部分映射整体或整体其它部分。

上述四原则中,命题和意象图式形成ICM的结构是ICM延伸的基础。而隐喻和转喻映射是ICM根据命题结构和意象图式扩展辐射的机制。由此可见,ICM理论还包含了意象图式和转、隐喻理论。正是这些理论解释了概念是如何扩展和延伸的,而转、隐喻也从修辞学层面被提升到了认知层面。

2.隐喻和转喻。隐喻和转喻最早被作为两种普通的修辞格进行研究。直到20世纪80年代,Lakoff和Johnson在《我们赖以生存的隐喻》(1980)一书中提出两者都是人类认知世界的重要手段和方法。他们植根于人类的基本经验之中,构成我们日常的思考和行为方式(Lakoff & Johnson,1980:37)。自此,转、隐喻被作为认知机制得到了广泛的探讨和研究。

Lakoff和Johnson认为隐喻的本质是以此事物来体验彼事物,是用清晰具体的经验来构建抽象复杂的高一级概念,并用“域”来代表概念,用“映射”来代表两概念之间的互动关系。换言之,隐喻是认知主体从一个熟悉的认知域(源域)到未知认知域(目标域)之间的映射,其过程依据事物间的相似性,多为多对应投射。Lakoff又将其分为三类:实体隐喻,结构隐喻和方位隐喻。

认知语言学认为转喻是同一个认知域内的两个次认知域的映射。Barcelona(2000:246)提出“转喻是认知域内的映射现象,也是从源域映射到目的域,只是源域和目的域都应在同一个功能域中,由语用功能将它们联结起来,使目的域得以在心理上被激活。”简言之,转喻是同域中一事物对另一事物的映射,起替代作用,是单对应映射。

正是通过这两种映射机制的作用,词语才具有了更为丰富和实用的多种含义。近十年来,一些学者又对隐喻和转喻在概念扩展中的连续性进行了进一步的探讨。在相关研究中,其侧重点主要是英语中介词的分析以及汉语中人体隐喻和习语的研究,缺乏对其他实义词意义的系统研究。因此,本文试图运用相关理论,对英汉语中“脚/足”词语的语义进行概念形成机制的对比分析。

3.英汉“脚/足”词语的概念形成机制。“脚/足”,其字面意思为“人和动物的行走器官”,具有长度、位置、功能等属性。人类最初用其来描述其他陌生事物或概念时,往往是依据两者某一项属性的相似或相近性。具体而言,“脚/足”是源域,突显度高,而各个属性是目的域,突显度较低,两者同属一个认知域,具有关联性,因此,在词义发展的第一个阶段形成转喻机制(即:“范畴-特性”ICM);在此基础上,再经过转喻或隐喻,构成平行的、多层次的词义网络。在使用过程中,其英汉句型有: the foot of NP,Vt.POSS foot PP;脚/足+名词,名词+脚/足,动词+足,动词+手+动词+脚。

4.“脚/足”词语――位置。脚/足处于人体的下端(垂直),因此,在经过“器官-人体下端”的转喻过程后,又进行了如下拓展:(1)“人体下端-物体下端”的隐喻过程(人体隐喻)。如:the foot of the mountain,the foot of the stairs;脚灯,脚注,山脚,墙脚,高脚杯等;(2)“物体下端-物体/事物末端”的转喻过程,此过程中,由“下端(垂直)”替代了“末端(水平)”的含义。如:the foot of the bed; 日脚,雨脚等;(3)“物体下端-最后(次序/顺序)-残余的滓末-剩余无用的东西”,此为“转喻-隐喻-转喻”的连续过程。如:the foot of the line/parade,foots,…my foot!(imf) ;茶脚,下脚料,蛇足等。

5.“脚/足”词语――关系。脚/足与其他身体器官之间具有亲密的,平等的关系,映射到“人与人之间的关系”上,就形成了隐喻机制。只有汉语中有这样的映射关系。如:手足。

6.“脚/足”词语――功能。(1)依据其支撑/站立功能,“脚/足”词语在经过“器官-支撑功能”的转喻机制后,又进行了如下语义拓展:a.“支撑/站立功能-支撑部分/基础”的转喻机制。如:basal foot,the foot of the tower(塔基);椅脚,车脚,根脚,脚本。b.“支撑/站立功能-站立之地-立场/观点/态度”的“转喻-隐喻”机制。如:a foot in both camps(脚踏两只船), get/have a cold foot;脚踏两只船,脚踏实地,站不住脚等。c.“支撑/站立功能-附近/周围-影响/威力/控制”的“转喻-隐喻”机制。如:at/under foot,at/beneath/under sb’s feet,live under the cat’s feet;脚下,脚底下人。(2)依据其行走功能,“脚/足”词语在经过“器官-行走功能”的转喻机制后,又进行了如下拓展:a.“行走功能-步伐/步距-阶段”的“转喻-隐喻”机制。如:walks with a light foot,fleet of foot,get/have a foot in the door; 脚头等。b.“行走功能-步态/走路的方式-做事的方式”的“转喻-隐喻”机制。如:on foot,put one’s best foot forward,put one’s foot down,put one’s foot in it,set foot in(进入),set foot in,miss one’s foot,stand on your own feet; 敛足,涉足,插足,失足,比手画脚,愣手愣脚,慌手慌脚,大手大脚等。c.“行走功能-人”的转喻机制。很多身体部分都能被用来代表人,选择的依据在于我们想要表现人物的哪方面特性(Lakoff & John,1980:31)。用“脚/足”词语来替代人,主要是指那些从事依据脚的行走功能进行工作的人,帮手,或对某些人的敬称。如英文中foot and horse 中的“foot”替代infantry,指军队中服役的步兵;汉语词语有:脚子,足下,高足等。

7.“脚/足”词语――长度。脚/足本身具有一定的长度,这种长度相对稳定。古时,在没有精确的测量工具的情况下,人们往往用身体的某部分作为依据,测量其他事物。因此, 以“脚/足”词语为源域,“长度”为目的域,发生了转喻映射(两者同属一个认知域)。如:英文中“foot”具有了“英尺(0.3048米)”的固定词义,而汉语中也有“一脚宽”的表达方法,但并没有作为标准长度被固定下来。

三、结语

通过英汉语中“脚/足”词语概念形成机制的对比研究,我们发现:

1.两词(脚/足, foot)在概念形成的认知过程中,均以转喻为主,隐喻为辅。

同时,转、隐喻是一个连续的过程。与介词相比,名词具有除字面含义外多种内涵,代表了多种属性和特征。人们在使用其描述其他事物时,往往依据其中某一项属性和特征的相似或相邻性。因此,在概念形成的第一个阶段,多采用转喻机制,属于范畴-特性ICM。除此之外,转、隐喻并不是相互独立的、分割的过程,而是一个连续的系统。

2.两词的概念形成过程基本相似,这说明ICM模型具有一定的普遍性。

本文仅对英汉名词的概念形成机制做了个案研究,要深入探究人类语言词汇词义拓展过程中的认知机制,还需大量细致的对比研究,以寻求认知过程中所折射出的不同民族语言在价值观,文化观念,心理过程等方面的异同。此方面内容将另文再议。

[基金项目:华北电力大学青年教师基金(93208705)]

参考文献:

[1].Barcelona,A.Metaphor and Metonymy at the Crossroads:A Cognitive Perspective.Mouten de Gruyter,2000.

[2].Lakoff,G & Johnson,M.Metaphors We Live by .Chicago:University of Chicago Press.1980.

[3].Lakoff,G.Women,Fire and Dangerous Things:What Categories Reveal about the Mind .Chicago:University of Chicago Press,1987.

脚本语言篇10

关键词:实时嵌入式软件;软件测试;脚本

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2011) 18-0000-02

Real-time Embedded Software Testing Research

Zhang Feng,He Yingjie,Wang Bin

(No.91413 Troops of PLA,Qinhuangdao 066000,China)

Abstract:The development and application of embedded real-time software is a hotspot of computer software nowadays.It’s very important to ensure the quality of embedded real-time software.This article analyzes the characteristics of embedded real-time software.Based on the analysis of the whole structure of the embedded real-time software testing and the architecture of host and target computer,this article discusses script language and its interpretation,at last introduces testing result analyze implement and creates testing report.

Keywords:Real-time embedded software;Software testing;Script

一、引言

当今社会信息化进程的快速发展,计算机软件在各个领域得到了越来越广泛的应用,尤其是在工业控制、电子信息以及武器装备等很多嵌入式系统中发挥着核心作用。随着嵌入式技术的发展和计算机硬件技术的进步,硬件元件的集成量也大大增加,从而使嵌入式设备的硬件性能得到了极大的提高。嵌入式系统的发展趋势是:硬件逐渐向通用性平台过渡,依靠软件来完成系统的各种任务。因此,软件已成为决定系统成败的关键性因素。在嵌入系统开发中软件的代码质量对产品的最终质量起到了决定性的作用。

软件质量是软件的生命,软件测试是保证软件产品质量的重要手段。因此,要成功开发出高质量的软件产品,必须加强软件测试工作。本文将提出一种对实时嵌入式软件进行测试与分析设计的一种测试方法。

二、实时嵌入式软件的特点

(一)开发与运行环境分开

嵌入式软件最终的运行平台是在目标机上,但是由于目标机中的环境有种种限制,因此,嵌入式软件的开发不能在目标机上进行,而是在目标机之外的PC上进行,即我们所说的宿主机。在宿主机上完成软件开发后,再将软件程序移植到目标机上运行。也就说,嵌入式软件的开发环境和运行环境是不一致的。正是这个不同,给嵌入式软件的测试带来了不少的麻烦。

(二)开发平台复杂多样

因为嵌入式系统的一个突出特点是其专用性,即一个嵌入式系统只进行特定的一项或几项工作,嵌入式软件运行的硬件平台都是为进行这些工作而开发出来的专用硬件电路,它们的体系结构、硬件电路,甚至所用到的元器件都是不一样的,所以嵌入式软件运行平台(通常称为开发平台)也是复杂多样的。

(三)硬件资源、时间有严格限制

由于嵌入式系统的专用性,嵌入式软件运行的硬件平台的硬件资源是相当有限的。另外,由于嵌入式系统的实时性,决定了嵌入式系统的运行时间也是严格限制的。实时软件的时间约束主要表现为软件或其中的进程的时间约束。通常,实时系统可分为:硬实时系统和软实时系统。硬实时系统中,处理请求的时间约束异常关键,即未满足约束的处理请求被认为是系统的失败。而软实时系统中的时间约束只是希望被满足,即使不满足也不会引发系统失败。这种软、硬实时系统的划分,实际上是刻画了实时软件中时间特性强度,它对于软件的时间特性设计和测试有着重要的影响,决定了它在测试中的花销,即是否为时间特性进行单独。

(四)缺乏可视化编程模式

由于嵌入式软件最终要在目标机平台上运行,而其开发只能在宿主机平台上进行,编程的结果只能在代码完成并通过相应的调试器和编译器然后下载到目标机平台上才能看到,无法实现可视化编程。

(五)不同的嵌入式软件在不同环境下的可靠性、安全性的要求是不同的

一些嵌入式系统,比如军队的雷达、电子对抗系统,它们要在电磁很强的恶劣的环境下可靠地工作,而且要保证操作人员的安全。但是对于手机软件来说,它的可靠性和安全性就不如电子武器军事装备要求的高。

三、实时嵌入式软件测试

实时嵌入式软件的突出特点在于其运行环境(目标机环境)和开发环境(宿主机环境)的不一致,这一特点也导致典型的实时嵌入式软件测试要从宿主机下载到目标机上进行测试。

(一)实时嵌入式软件测试的总体体系结构设计

实时嵌入式软件测试的一般步骤是在主机上编写测试代码,然后把该代码编译下载到目标机,接着通过测试执行该测试目标代码。测试工具运行在宿主机上,测试所需要的信息在目标机上产生,由于目标机的资源相当匮乏,测试后所得的信息在目标机上不便分析,通过主机和目标机之间的通信把测试所得信息上传回主机,再由主机中的测试结果分析工具对测试信息进行分析。嵌入式测试基本结构如图1所示。

(二)实时嵌入式软件测试宿主机及目标机的体系结构设计

如图2所示,在宿主机方,在测试开始前制定测试计划,根据不同的测试目的选择相应的测试用例,生成测试脚本,通过脚本解释器实时解释非实时生成的测试命令,并将测试命令和数据通过目标服务器发送至被测目标系统;同时将从目标机上的测试获得测试结果数据后,可显示测试结果,以提示测试人员,还可以由测试结果分析工具对测试结果进行分析,最后传送回测试结果数据库,并生成测试报告。在目标机方,测试接收测试命令后运行被测实时嵌入式应用软件,被测应用软件将测试后生成信息发送到测试中的一个专门任务的消息队列中,此任务负责在适当的时候将这些信息发送到宿主机方。同时目标服务器中也有负责接收测试所得信息的专门任务,它从目标机上的测试获得测试结果数据。

四、脚本语言及脚本语言解释器

(一)脚本语言

实时嵌入式软件测试脚本语言的设计:在脚本化的实时嵌入式软件测试中,测试脚本语言的设计非常关键,根据实时嵌入式软件测试的特点和脚本化的嵌入式软件测试的实现机制,我们采用对结构化的脚本语言进行扩展的方式,即在通用结构化语言的词法、语法的基础上加入针对实时嵌入式软件测试特性的描述。通用结构化语言是指在C语言的基础上,进行C简化,保留不可缺少的、可用于实时嵌入式软件测试的结构化特性,而省去一些测试中不必要的特性。我们设计的脚本语言包括控制命令和消息命令两大部分。控制命令是对测试执行的流程进行控制,如整数变量、循环(for)、条件判断(if⋯else)、暂停(pause)、中止(stop)、脚本执行开始段(begin)、脚本执行中止段(end)等。而消息命令由一个主要的命令组成,就是msg命令,msg命令后面有五个参数,分别是被测试对象的进程号、发向被测试对象的消息号、被测试的消息内容、消息内容参数1、消息内容参数2。这五个参数就可以决定目标嵌入式系统执行何种测试。

(二)脚本语言解释器

1.脚本语言。软件测试中,实现软件测试自动化技术的有效手段是脚本技术的引入。软件测试脚本化可以减少测试人员的工作量,提高软件测试的可维护性,实现软件测试过程中用户和被测软件之间的交互。同时由于解释性的脚本语言可移植性好,有利于实现跨平台,可提高脚本代码的可重用性,提高测试的可重复性。测试脚本是具有正规语法的数据和指令的集合。在软件测试过程中,测试脚本通常以文本形式存在,由测试脚本组织用户所施加的一系列软件执行动作,达到驱动被测软件运行的目的,从而完成测试。

2.脚本解释器。根据实时嵌入式软件测试脚本语言的设计,设计针对该语言的解释器。脚本语言解释器是脚本语言的支撑,解释器设计的成功与否直接关系到能否实现脚本化的实时嵌入式软件测试。针对上述脚本语言设计中所提到的用户施加的测试命令及其特性,则需要处理测试中各命令的时间要求以及命令之间的并发同步等问题,解释器应由两部分组成,即控制部分和解释部分。控制部分的作用在于对测试脚本进行预处理,提取各种命令的执行脚本,生成按时间排列的命令表,然后根据实时调度时钟信号和条件判断触发解释部分的调用,借助在控制部分中的多命令处理方式可以保证测试中各种命令的并发和同步的处理,从而保证了实时嵌入式软件测试中对实时特性的要求;解释部分的工作原理是在控制部分按时钟信号触发后,加载需要解释的脚本执行代码,脚本源代码首先由词法分析器进行词法分析,分离出标识符、关键字和变量名等,然后由语法分析器根据语法定义,分析源程序的语法正确性并根据语义执行相应的语义动作。最后生成测试命令并通过目标服务器下载到目标机上,以驱动被测软件的运行。

五、测试结果分析工具及测试报告生成

测试结果分析工具包括内存分析工具、性能分析工具、覆盖分析工具等。

内存分析工具:在嵌入式系统中,内存约束通常是有限的。内存分析工具用来处理在动态内存分配中存在的缺陷。当动态内存被错误地分配后,通常难以再现,可能导致的失效难以追踪,使用内存分析工具可以避免这类缺陷进入功能测试阶段。

性能分析工具:在嵌入式系统中,程序的性能通常是非常重要的。经常会有这样的要求,在特定时间内处理一个中断,或生成具有特定定时要求的一帧。开发人员面临的问题是决定应该对哪一部分代码进行优化来改进性能,常常会花大量的时间去优化那些对性能没有任何影响的代码。性能分析工具会提供有关的数据,说明执行时间是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。根据这些数据,确定哪些例程消耗大部分执行时间,从而可以决定如何优化软件,获得更好的时间性能。对于大多数应用来说,大部分执行时间用在相对少量的代码上,费时的代码估计占所有软件总量的5%~20%。性能分析工具不仅能指出哪些例程花费时间,而且与调试工具联合使用可以引导开发人员查看需要优化的特定函数,性能分析工具还可以引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。

覆盖分析工具:在进行白盒测试时,可以使用代码覆盖分析工具追踪哪些代码被执行过。分析过程可以通过插装来完成,插装可以是在测试环境中嵌入硬件.也可以是在可执行代码中加入软件,也可以是二者相结合。工具一般会提供有关功能覆盖、分支覆盖、条件覆盖的信息。对于嵌入式软件来说,代码覆盖分析工具可能侵入代码的执行,影响实时代码的运行过程。基于硬件的代码覆盖分析工具的侵入程度要小一些,但是价格一般比较昂贵,而且限制被测试代码的数量。

以上测试结果分析工具可根据测试偏重点的不同选用相应比较成熟的商业分析工具。软件测试报告的内容包括测试结果的统计信息,测试结果的分析、评判。我们可以用C语言中的fprintf函数实现测试报告的生成。

六、结束语

随着我国软件业的发展,作为软件质量保证的重要组成的软件测试已越来越受到重视,而软件测试自动化工具由于可以提高软件测试的有效性和效率,因此,软件测试自动化工具的开发已成为软件测试的一个重要研究领域。本文对实时嵌入式软件测试进行了研究和设计,介绍了开发实时嵌入式软件测试自动化中的一些关键技术的实现思想,该思想已成功地应用于公司的嵌入式操作系统软件平台测试,对该软件平台的质量和稳定性起到了很关键的作用。

参考文献:

[1]康一梅,张永革.嵌入式软件测试[M].机械工业出版社,2008,7

[2]于以序,何艳敏.实时嵌入式软件测试研究[J].中国测试技术,2004,9

[3]飞思科技产品研发中心.实用软件测试方法与应用[M].北京:电子工业出版社,2003