文档库 最新最全的文档下载
当前位置:文档库 › TCL语言基础资料

TCL语言基础资料

TCL语言基础资料
TCL语言基础资料

TCL语言基础资料

一脚本语言详细介绍

21世纪的高级编程语言

摘要:

Perl和Tcl等脚本语言代表一种与c或JavaTM 为代表的系统程序设计语言完全不同的编程形式。脚本语言为"胶着"应用程序而设计,它使用无类型方法来实现高级编程和比系统程序设计语言更快的发展应用。计算机速度的增长和混合应用的改变使脚本语言在今后的应用中越来越重要。

关键字:

组件框架,面向对象编程,脚本,强类型,系统编程

1.简介

在过去的十五年里,人们编写计算机程序的方法

发生了根本的转变。这种转变是从c或c++等系统程序设计语言到Perl或Tcl等脚本语言的过渡。虽然很多人参与了转变,却很少有人意识到它的发生,更不用说知道为什么会发生。这篇文章是我关于为什么在下个世纪脚本语言可以比系统程序设计语言更好的处理许多编程工作的一点看法。

与系统程序设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。系统程序设计语言起源于像内存字等最初期的计算机元素,它为建立数据结构和算法而创建。相反的,脚本语言为胶着而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件间的联系,并提供快速应用开发.

脚本语言和系统程序设计语言互为补充,并且二十世纪六十年代以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。然而,速度更快的机器,

更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展等发展趋势大大提高了脚本语言的应用。在今后的十年中,这种趋势将继续,而且越来越多的完全使用脚本语言和系统程序设计语言书写的应用程序将主要用来创建组件。

2.系统程序设计语言

为了理解脚本语言和系统程序设计语言的不同,最好先了解一下系统程序设计语言是如何发展的.系统程序设计语言是作为除汇编语言外的另一种选择而引入的.在汇编语言里,实际上机器的每一个细节都被反映在程序里.每个状态代表一个简单的机器指令,而程序员必须处理像寄存器分配和程序调用顺序等低层细节.因此,用汇编语言编写和维持大型程序是很困难的.

真的不掉线吗??、????????????

二十世纪五十年代后期像Lisp,Fortran和Algol等高层语言开始出现.这些语言里的状态和机器指令不再完全一致,编译程序把过程程序中的每个状

态翻译成一系列二进制指令.经过一段时间,一系列系统程序设计语言包括PL/1,Pascal,C,C++和Java由Algol发展而来.系统程序设计语言没有汇编语言的效率高,但他们使应用程序更快的发展起来,因此,系统程序设计语言在大型应用项目的发展中几乎完全取代了汇编语言.

系统程序设计语言与汇编语言在两个方面有所不同:它是高层语言并且是强类型."高层"意味着很多细节被自动处理以便编程人员可以写更少的代码而做同样的工作.例如:

★编译程序处理寄存器分配,所以编程人员不需要写代码来在寄存器和内存间转移数据

★自动设计程序调用顺序:编程人员不需要担心调用栈之间的参数转移

★编程人员可以使用像while和if等简单的关键字来控制结构,编译器执行所有的指令细节来完成控制结构

平均每行系统程序设计语言代码翻译成大约五条机器指令,与此相比,每行汇编语言代码翻译成一条机器指令(由5个不同的人写的8个c文件的非正式分析中,我发现这个比率为每行3到7条指令;Capers Jones从大量语言的研究中发现对于一个给定的工作,汇编语言需要的代码长度大约是系统程序设计语言代码长度的3-6倍)不管是什么语言,编程人员每年可以写大体上相同数量的代码行,因此,系统程序设计语言允许用比汇编语言快得多的语言写应用程序.

汇编语言和系统程序设计语言的第二个不同是类型设臵.我使用"类型"来说明信息的意义在它被使用前就被特殊化.在强类型语言中编程人员声明如何使用每条信息,并避免此信息被用于其他方式.在弱类型语言中信息应用是没有优先权限制:信息的意思完全由它的使用方法确定,而不是任何初始约定.

现代计算机基本上是无类型的:内存中的任何字对任何类型的值比如整型,浮点数,指针或结构体都是有效的.值的意思由它的使用方法确定:如果指向一个内存字,那么他就被认为是结构体;如果一个字涉及

一个整型加结构体,那么他就被认为是整型,如此等等.相同的字在不同的时间可用于不同的方法.

与此相反,现在的系统程序设计语言是强类型

定义的.例如:

★系统程序设计语言中的每个变量都必须被声明为整型或指针或字符串等特殊类型,并且必须用于适

合这种类型变量的方法

★数据与代码完全分离:创建新的代码很困难或根本

不可能.

★变量可以集中在结构体中或者定义好的子结构体和过程或方法的对象中以便于使用;一种类型的对象不

能用于期待其他类型对象处.

确定类型由几个好处.第一,声明变量如何使用使大型程序更易于管理并区分那些必须被分别对待的变量.第二,编译器可以利用类型信息来侦测某些类型的错误,比如,试图把一真的不掉线吗??、????????????

个浮点值作为一个指针.第三,定义类型能使编译器更好的执行特殊代码.例如,如果编译器知道一个变量总是对整型值有效,那么他就可以产生一个整型指

令来操纵这个变量;如果编译器不知道变量的类型,那么他就必须产生额外的指令在运行时检查变量类型.

总之,系统程序设计语言被设计来处理与汇

编语言相同的工作,即随机地产生请求.系统程序设计语言比汇编语言层次更高,类型更强.这就使请求产生更迅速并且处理更容易,除了在运行时有一点损失,图示1是汇编语言和其他几种系统程序设计语言的比较.

3.脚本语言

脚本语言,像Perl,Python,Rexx,Tcl,Visual Basic和Unix shells代表了与系统程序设计语言完全不同的编程.脚本语言假设已经存在了一系列由其他

语言写成的有用的组件.脚本语言不希望随机地产生

请求,他希望主要是把组件接在一起.例如,Tcl和Visual Basic可以被用于在屏幕上安排一系列用户图

形控制,而Unix shells scripts被用于把过滤程序集合入管道.脚本语言常用于扩展组件特性,但他们很少用于复杂的算法和数据结构;这些东西常由组件提供.脚本语言有时涉及胶着语言或系统整体语言.

为了简化连接组件的工作,脚本语言被设计为无类型的:所有的东西无论是看起来还是使用起来都是完全一样的,因此他们可以互换.例如,在Tcl或Visual Basic中一个变量可以一会儿处理字符串,一会儿又处理整型.代码和数据也常可互换,因此,可以用一个程序写另一个程序,然后高速执行,脚本语言一般是面向字符的,因为它为许多不同的事物提供了一致的描述.

无类型语言使组件更容易连在一起.在使用时没有优先级限制,并且所有的组件及其值都用统一的方式描述.除此之外,任何组件和值都可以在任何情况下使用;为某一目的而设计的组件可以被用于设计者完全没有预见过的完全不同的目的.例如,在Unix shells中,所有的过滤程序从输入读入字节流,并把字

节组成的字符串写入输出;任何两个程序都可以通过

把一个的输出连到另一个的输入而把两者联系起来.

下面的shell命令把三个过滤堆在一起来计算选中区域中包含单词"scripting" 的行数:

select | grep scripting | wc

select程序读入当前显示选中的文本并把它输出;grep程序读取输入并把包含"scripting"的行输出;wc程序对输入的行数求和.其中的每个程序都可

以用于许多其他情况来做不同的工作.

系统程序设计语言的强类型本质上阻止重用.类型鼓励编程人员创建包含不相容接口的类型("接口很好,接口越多越好").每个接口需要特别类型的对象,而编译器不允许接口使真的不掉线吗??、????????????

用任何其他类型的对象,即使那样有用.为了使用

一个已经存在的接口的新的对象,就必须写转换代码

以便在对象的类型和接口期望的类型间进行翻译.这

反过来又需要重编译部分或全部分布式二进制形式的

应用程序,在普通情况下这是不可能的.

为了能看出无类型语言的优点,考虑下面的Tcl命令:

button .b -text Hello! -font {Times 16}

-command {puts hello}

这个命令创建了一个新的按钮来显示16点Times字体,当用户敲击控制键时显示一段小的信息.

它把六种不同的类型混合成一个单一的状态:一个命

令名(button),一个按钮控制(.b),所有权名字(-text, -font, 和-command),简单字符串(Hello! 和hello),包含铅字名(Times)及字点大小(16)的字体名(Times 16)和Tcl脚本(puts hello).Tcl代表所有这些非正式字符串.在这个例子中可以在任何一个命令中为属性

赋值,而未赋值的属性使用给定的缺省值.在这个例子中20个以上的属性是不特别赋值的.

同样的例子在Java中用两种方法执行时需要7行代码.使用C++和微软基本类(MFC)需要三个过程25行代码,在微软基本类中仅仅设臵字体就需要几行代码:

CFont *fontPtr = new CFont();

fontPtr->CreateFont(16, 0, 0,0,700, 0, 0, 0, ANSI_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,

DEFAULT_PITCH|FF_DONTCARE, "Times New Roman"); buttonPtr->SetFont(fontPtr);

大部分代码是由强类型造成的.为了设臵按钮字体,必须运用SetFont方法,但这个方法必须通过指针传给CFont对象,这反过来需要声明和初始化一个新的对象.为了初始化CFont对象必须唤醒它的CreateFont 方法,但CreateFont有一个需要14个特

殊化引数的固定接口.在Tcl中字体(Times铅字,16点)的基本特征不用声明或转换就可以立即使用.另

外,Tcl允许在创建按钮的命令中直接包含按钮行为,

而C++和Java中需要把它放在单独声明的方法中.

(实际上可以用隐藏基本语言的复杂性的图

形开发环境处理一个像这样的不重要的例子:用户在

表中输入合适的值,而开发环境输出代码.然而,在更

多复杂情况像按计划产生合适值或接口的条件任务中开发人员必须在基本语言下编写代码)

这可能看起来脚本语言的无类型特性不能发现错误,

但实际上脚本语言和系统程序设计语言一样安全.例

如在上面的按钮例子中如果字体大小被臵成非整型字符串,就像xyz,那么就会出现错误.不同的是当一个值被使用时脚本语言在最后一刻进行错误检查,而强类

型在编译时发现错误这就避免了运行时的检查.然而

提高效率的代价是限制信息如何使用:这导致了更多

的代码和更不易改变的程序.

脚本语言和系统程序设计语言的另一个重要不同是脚本语言是被解释而系统程序设计语言是被编译.

被解释的语言由于没有编译时间而提供快速的转换.通过允许用户运行时编真的不掉线吗??、????????????

写应用程序,解释器使.应用程序更加灵活,例如,许多整体线路的综合分析工具,包括Tcl解释器;程序用户编写Tcl 脚本来使他们的设计具体化并控制工具操作.通过快速设计代码解释器可以实现强大的功能.例如,一个基于Tcl的网页浏览器可以通过把网页中的HTML转换为使用一些常规表达替代物的Tcl脚本,从而从语法上分析网页然后执行脚本把页面翻译显示在屏幕上.

脚本语言不如系统程序设计语言效率高,部分是因为他们使用解释器而不是编译器,而且因为他们基本组件的选择标准是功能强大和易于使用而不是有效地对应基本硬件.例如,脚本语言经常使用长度可变的字符串,而同样的情况下系统程序设计语言使用对应一个机器字的二进制值;脚本语言经常使用哈希表,而系统程序设计语言使用变址阵列.

幸运的是,脚本语言的性能不经常是一个主要的问题.脚本语言应用程序通常比系统程序设计语言的应用程序要小,并且脚本应用程序的执行受组件执行的支配,而这些组件是系统程序设计语言提供的典型工具.

脚本语言比系统程序设计语言更高级,平均一个指令可以做更多的工作.一个典型的脚本语言指令执行成百上千条机器指令,而一个典型的系统程序设计语言指令执行大约五条机器指令(参图一).部分不同是因为脚本语言使用翻译器,这不如系统程序设计语言中被编译的代码.但是主要的不同是因为脚本语言的初期操作有更强大的功能.例如,Perl中唤醒一个常规表达替代和唤醒一个整型加法一样简单.在Tcl 中,变量会有与它相联系的图标,因此,设臵变量会导致侧面影响.例如,一个图标可能会被用于保持变量的值在屏幕上持续更新.

表1.表的每行描述了被执行了两遍的应用程序,一遍使用系统程序设计语言,像C或Java,一遍使用脚本语言,像Tcl.代码率列给出了两个应用程序的代码行率(>1意味着系统编程语言需要更多的代码),作用率列给出了开发率.在大多数情况下两个版本由不同的开发者执行.表中的信息由https://www.wendangku.net/doc/6411443288.html,ng.tcl新闻组中对文章进行答复的不同人提供。.

由于上面描述的特性,脚本语言允许基于胶着的应用程序的快速发展.表1提供了有趣的支持.它描述了几个在系统程序设计语言下执行后又在脚本语言中重新执行的应用程序,或反过来也是一样的.

在每种情况下脚本版本都比系统编程版本需要更少的代码和更短的开发时间,不同点的变化从2到60.脚本语言第一次执行时好处不显著,这使人联想到任何在第一次执行经验上的重执行都会更好,而脚本和系统编程的真正不同相差5到10倍,而不是表中的极端点.脚本的好处同样依赖于应用程序.在表中的最后一个例子中,应用程序的图形用户界面部分是基于

胶着的,而模拟装臵部分却不是;这可能解释为什么脚本应用程序不如其他应用程序获益多.

真的不掉线吗??、????????????

总之,脚本语言被设计成胶着应用程序,他们提供比汇编或系统程序设计语言更高层的编程,比系

统程序设计语言更弱的类型,和解译后的开发环境.脚本语言牺牲执行速度来提高开发速度.

4.不同的任务,不同的工具

脚本语言不是系统程序设计语言的替代品,反过

来也一样.他们各自适合不同类型的工作.把胶着和系统合为一体,应用程序可以比脚本语言快5-10倍;系统程序设计语言将需要大量复本和转换代码来连接各块.而这直接使用脚本语言.对于复杂的算法和数据结构,系统程序设计语言的强类型使程序更易于管理.执行

速度是关键.系统程序设计语言可以比脚本语言运行

快10-20倍,因为它产生更少的运行时检查.

在决定是否使用脚本语言或系统程序设计语言处理一项特殊任务时考虑以下问题:

★应用程序的主要工作是否是把已经存在的组件联系起来

★应用程序是否要操纵不同种类类型的事物

★应用程序是否包含图形用户界面

★应用程序是否做大量字符串操作

★应用程序函数是否能快速解决问题

★应用程序是否需要可扩展

如果这些问题回答"是"就表明这个应用程序使用脚本语言会更好.另一方面,如果对下面的问题回答"是"就表明系统程序设计语言更适合这个应用程序:

★应用程序是否执行复杂的算法或数据结构

★应用程序是否操纵大量数据集(像图像中的所有像素)因而执行速度很重要

★应用程序的函数是否已经定义好,并且很少改动

在过去的30年中,大多数主要的计算机平台同时提供系统编程和脚本语言。例如,第一个脚本语言虽然粗糙,却是一个JCL(作业控制语言),它被用于在OS/360中把工作等级按顺序排好。个别工作等级由PL1,Fortran或汇编语言书写,那时是系统程序设计语言。在二十世纪八十年代时Unix机器上,c被用于系统编程而sh,csh等壳编程被用于脚本。在二十世纪九十年代的PC时代里,c和c++被用于系统编程e而Visual Basic用于脚本。在现在已基本成形的网络时代中,Java被用于系统编程而像JavaScript , Perl 和Tcl等语言被用于脚本。

脚本和系统编程是共生的,共同使用,他们能产生格外强大的编程环境:系统程序设计语言用于产生令人兴奋的组件,然后用脚本语言把他们组装起来。例如,Visual Basic的主要吸引力是系统编程者可以用c编写ActiveX组件,而不太老练的编程者可以在Visual Basic应用中使用这些组件。在Unix下编写用于唤醒用c编写的应用程序的壳脚本很容易。Tcl普及的一个原因是可以编写执行新命令的c代码来扩展该语言的能力。

5.脚本呈上升趋势

真的不掉线吗??、????????????

脚本语言已经存在了很长时间,但最近几年几个因素的综合结果使它的重要性提高了。最重要的因素是应用程序综合向胶着应用程序发展的变换。这种变换的三个实例是图形用户界面,因特网和组件框架。

图形用户界面出现于二十世纪八十年代早期,并在二十世纪八十年代晚期得以普及。在许多编程项目中图形用户界面占了一半甚至更多的比重。图形用户界面基于胶着应用:他的目标不是创建新的功能,而是把图形控制集合和应用程序内部函数联系起来。我不担心任何快速发展的环境因为图形用户界面基于系统程序设计语言,不论是Windows环

境,Macintosh Toolbox或Unix Mctif,图形用户界面基于c或c++等已被证明难以掌握,使用不灵活,生成结果不灵活的语言。一些这样的系统有很好的图形工具来设计屏幕输出并隐藏基本语言,而一旦设计者不得不编写代码时一切变得困难起来,像为接口元素提

供行为。所有好的快速开发图形用户界面环境都基于脚本语言:Visual Basic,Hyperlard和Tcl/tk,随着图形用户界面的普及,脚本语言也越来越流行。

因特网的增长也使脚本语言变得大众化。因特网只是一种胶着工具,它不创建任何新的计算结果或数据;它只是简单的把大量已经存在的事物联系起来。因特网编程工作的完美工作之一是让所有连接的组件在一起工作,像脚本语言。例如:Perl 因编写CGI 脚本而流行,JavaScript因编写网页而流行。

基于脚本的第三个例子是组件框架,像ActiveX,OpenDoc和JavaBeans。虽然系统程序设计语言可以很好的创建组件,但脚本更适合组装组件到应用程序中。没有一个好的脚本语言来操纵组件,组件框架的大部分功能就都没有了。这可以部分解释为什么组件框架在个人电脑上(Visual Basic提供了方便的脚本工具)比在像Unix/CORBA等组件框架中不包含脚本的平台上更成功.

Tcl语言基础教程

Tcl语言参考 Tcl("Tool Command Language",即工具命令语言;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些交互程序如文本编辑器、调试器和shell。它有一个简单 的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充 (定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读 取(按钮或菜单等)。 Tcl和其他编程语言例如C不同,它是一种解释语言而非编译语言。Tcl程序由一系列Tcl 命令组成,在运行时由Tcl解释 器解释运行。 Tcl有大量的用C/C++编写的扩展用于提供Tcl本身不具有的功能。其中使用最广泛的扩展是TK,TK提供了各种OS平台下 的图形用户界面GUI(连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上)。另一个流行的扩展包是Exp- ect,它提供了通过终端自动执行命令的能力,例如passwd, ftp, telnet等命令驱动的外壳。

一、Tcl程序基本结构 1、基本语法 Tcl有类似于shell的语法,一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个 域(field)的集合,域使用空白(空格或TAB)分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。 Tcl解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,Tcl 解释器运用规则识别出命令并把命令分 成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,Tcl 解释器会把第一个单词当作命令名,并查看这 个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过 程进行处理。 Tcl的命令名可以是内建的命令也可以是用户建的新命令,在应用程序中可用函数Tcl_CreateCommand来创建新的命令。 所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。 另外关于Tcl的注释有一个特殊的要求:'#'必须出现在Tcl解释器期望命令的第一个字符出现的地方,才被当作注释。 例如: set a 100 # Not a comment

TCL语言及其文件的认识、理解和编辑

TCL语言及其文件的认识、理解和编辑 欢迎大家指正和补充。 Tcl语法简介 Tcl是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命令,和(c)一个C 接口,工具通过它用特定于工具的命令增加内置命令。Tcl在与窗口组件库整合的时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制 作为一种脚本语言,Tcl具有简单的语法 Tcl/Tk 的发明人John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl (Tool Command Language) 语言的产生。 Tcl最初的构想的是希望把编程按照基于组件的方法(component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的Java 不谋而合。终于在1988 年的春天, 这种强大灵活的胶水- Tcl语言被发明出来了。 按照Ousterhout 教授的定义,Tcl是一种可嵌入的命令脚本化语言(Command Script Language)。“可嵌入”是指把很多应用有效,无缝地集成在一起。“命令”是指每一条Tcl 语句都可以理解成命令加参数的形式: 命令[参数1] [参数2] [参数3] [参数4] ...... [参数N] 脚本化是指Tcl为特殊的,特定的任务所设计。但从现在角度看,可以说Tcl是一种集C 语言灵活强大的功能与BASIC 语言易学高效的风格于一身的通用程序设计语言。 Tk (Tool Kit) 是基于Tcl的图形程序开发工具箱, 是Tcl的重要扩展部分。Tk 隐含许多C/C++ 程序员需要了解的程序设计细节, 可快速地开发基于图形界面Windows 的程序。据称, 用Tcl/Tk 开发一个简单的GUI 应用程序只需几个小时, 比用C/C++ 要提高效率十倍。需要指明的是这里所说的“窗口”是指Tcl定义的窗口,与X-Windows 与MS Windows 的定义有所不同,但它可完美地运行在以上两个系统上。 Tcl代表了“tool command language - 工具命令语言”。它由一个库包组成,程序可以把它用作自己的命令语言的基础。Tcl的开发由两项观察所推动。第一项观察是,通用可编程命令语言通过允许用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中最众所周知的例子是UNIX shell[5] 和Emacs 编辑器[8]。在各自情况下,出现的有着不同寻常能力的计算环境,在很大程度上是因为能获得可编程的命令语言。第二个促成它的观察是交互式应用正在增长。在1970 年代晚期和1980 年代早期的分时环境中,几乎所有的程序都是面向批处理的。典型的使用交互式的命令shell 来调用它们。

3D脚本maxscript入门教程

3D 脚本maxscript 入门教程 maxscript 入门教程 内容图文并茂,语言高度概括,文采形象生动,思路清晰可见;指出要害,抓住关键,透彻理解那些难懂的编程概念;不用担心数学基础很差,无需害怕英文单词不懂,只需初中数学知识,把英文单词作图形符号看待,拿脚本编程当文字游戏把玩。 能够提高解决问题的能力,可以降低学习脚本的门槛。 不用费力看英文帮助,何需辛苦找编程资料,减轻学习负担,节省宝贵时间!发挥自己的聪明 才智,运用科学的学习方法,首先认真学好入门教程,然后虚心 请教各位高手, 脚本编程从此不再难! 入门教程内容结构 本教程内容分为五个部分,用几个具体的例子讲解大多数的脚本操作和语法知识。一、 MAXScript 简介 1、说明什么是 MAXScript 以及它有什么功能,能给用户带来什么好处。 2、访问脚本,认识脚 本访问的界面。 二、基本操作:创建和修改简单的对象,给对象赋材质,从而引出下面的概念构造器:创建对 象的语法称为构造器; 路径名; 数据类型:它们是数字,字符串,数组。对象和类(层级树);属性和方法; 变换;函数和方法的联系;通用属性和动态属性;显示属性的函数;一些常用的方法; 三、创建和操作具有复杂关系的对象,从而引出下面的概念变量,变量和属性的关系;对象引 用:引用另外一个对象的属性值作为自己的值;数组和集合等:数组,数组和变量的关系;运 算符和表达式; 表达式:求值的规则。流程控制:选择和循环,条件选择。制作简单的动画: "at time" , 动画控制器。 四、换一角度——从大家熟悉的操作流程来学习脚本这是对前面知识的总结,前面是对语法基本概念的学习,现在是从大家操作流程的角度来学习,一纵一横,让我们对脚本有个相对全面的了解,理论和实际相互联系。有了前面的基础才好学下面的内容。 第一步:创建物体一些常用物体的创建方法。 第二步:选择物体 select 路径名,变量名引用条件选择用类和集合选择物体组 Group : 是一个虚拟对象,不是集合。

TCL脚本实例解读

TCL脚本实例解读 作者:杨帆、老卢 前言 Sigma的这段日子在技术方面感觉提高的方面可能就是脚本的编写吧,我感觉写一个可用的脚本,并不一定非的在于你对脚本有了多了解之后,然后再去实现一个切合实际的脚本,最主要是思路,当你对所需要使用的脚本工具有一定的理解(如:TCL),在一个实际环境,首先能有个明确的想法,想实现个具体的什么东西,怎么样的思路可以实现,大脑里具备了这些条件,就可以尝试去写一些脚本。当然了,在实现的过程中肯定会遇到这样或者那样的问题,但一般来说,基本都是一些对脚本语法以及命令不熟悉的原因造成,这些问题很好解决,可以跟熟悉脚本的同事讨论,来帮你解决当时的问题,所以,千万不要因为还没有开始,就将脚本看得非常困难,导致自己一直无法迈出第一步,其实有些东西还是比较容易实现的。所以在此将我写的几个脚本在此解读解读。 文档目的 这篇文档中所附带的脚本,主要是根据Sigma这边搭建的系统测试环境而撰写出来的,脚本内容可能与今后Sigma公司为我们所开发的系统测试脚本无关,当撰写完这几个脚本之后,各人感觉有些东西还是比较有价值的,因此本人将此脚本撰写为文档,将这些东西共享出来供大家分享、借鉴、参考,相信看完这篇文档,因该会提供很多切合实际测试的一些脚本开发思路。还有,这篇文档并非一篇解释TCL命令的文档,有许多脚本中的相关命令不熟悉的地方需要查找其它资料,部分命令只做了解释或者介绍。 感谢!:) 这些脚本的撰写过程中感谢小康同学与小井同学的帮助(很多地方错误的查找、以及提供了一些解决关键问题的命令,如果没有他们的帮助,这个脚本完成的难度就大了,有很多也是他们的功劳) 环境介绍 这里提到的环境主要介绍的是系统测试的物理网络TOP环境与逻辑网络TOP环境,因为脚本里面的内容跟这个具体环境有关: 物理网络TOP,物理网络TOP所描述的实际是所有测试PC与DUT连接的物理

TCL语言.

TCL语言 Tcl(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种脚本语言。由John Ousterhout创建。TCL很好学,功能很强大。TCL经常被用于快速原型开发,脚本编程,GUI 和测试等方面。TCL念作“踢叩” "tickle". Tcl的特性包括: * 任何东西都是一条命令,包括语法结构(for, if等)。 * 任何事物都可以重新定义和重载。 * 所有的数据类型都可以看作字符串。 * 语法规则相当简单 * 提供事件驱动给Socket和文件。基于时间或者用户定义的事件也可以。 * 动态的域定义。 * 很容易用C, C++,或者Java扩展。 * 解释语言,代码能够动态的改变。 * 完全的Unicode支持。 * 平台无关。Win32, UNIX, Mac上都可以跑。 * 和Windows的GUI紧密集成。Tk * 代码紧凑,易于维护。 TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。 使用最广泛的TCL扩展是TK。TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(pass wd, ftp, telnet等命令驱动的外壳). 下面是TCL程序的例子: #!/bin/sh # next line restarts using tclsh in path \ exec tclsh ${1+"$@"} # echo server that can handle multiple # simultaneous connections. proc newConnection { sock addr port } { # client connections will be handled in # line-buffered, non-blocking mode fconfigure $sock -blocking no -buffering line # call handleData when socket is readable fileevent $sock readable [ list handleData $sock ] } proc handleData {

Tcl简介(一):Tcl 语法

Tcl简介(一):Tcl 语法 Tcl 语法 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对Tcl有很好的描述和说明。如果你看起来很吃力,那是因为Tcl与一般的语言有一些不同之处,刚开始可能有一些不理解,但很快就会掌握的。请坚持一下,我能坚持写完,你至少也应该坚持读一遍吧! Tcl Overview 这篇文章里包含了几乎Tcl 的全部。文章的作者是Tcl的缔造者John Ousterhout,对Tcl的诠释非常清楚。Introduction 简介 Tcl 代表"tool command language" 发音为"tickle." 。它实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并

执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。 应用程序使用Tcl作为它的命令语言有三个好处: 1 Tcl提供了标准语法,一旦用户掌握了Tcl就可以很容易的发布命令给基于Tcl的程序。 2 Tcl实现了很多的功能,使你的工作变得很方便。 3 TCl可作为程序间通信的接口。 Tcl Interpreters 解释器 在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了 一套命令,一组变量和一些用于描述状态的东西。每一个Tcl 命令是在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。 Tcl Data Types 数据类型 Tcl只支持一种数据结构:字符串(string)。所有的命令, 命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 然而字符串的实际解释是依赖于上下文或命令的。它有三种形式:命令(command), 表达式(expresion)和表(list)。下面 会讨论细节。 Basic Command Syntax 基本语法

TCL脚本基本语法

TCL基本语法 1语言简介 TCL缩短工具命令语言的形式。由加州大学伯克利分校的约翰Ousterhout设计它。它是一种脚本语言,由其自身的解释器,它被嵌入到开发应用程序的组合。 TCL最初在Unix平台中。后来移植到Windows,DOS,OS/2和Mac OSX。TCL非常类似于其他UNIX的shell语言,类似Bourne Shell (Sh), the C Shell (csh), the Korn Shell (sh), 和Perl。 它的目的是提供程序与其他程序,也是作为一个可嵌入的翻译相互作用的能力。虽然原来的目的是为了使程序能够进行交互,可以找到由Tcl/Tk 编写的完全成熟的应用。 1.1TCL特性 TCL的特点如下: 1、减少开发时间。 2、功能强大和简单的用户界面工具包整合传统知识。 3、一次编写,随处运行。它可以运行在Windows,Mac OS X和几乎所有的Unix平台。 4、有经验的程序员很容易上手,因为语言就是这么简单,可以在几个小时或几天学习Tcl就可以搞定。 5、可以轻松地用Tcl扩展现有的应用程序。另外,也可以包括Tcl的用C,C++或Java 来扩展Tcl,或反之亦然。 6、有一组功能强大的网络功能。 7、最后,它的开源,免费的,可以用于其他无任何限制商业应用。 2基本语法 2.1命令结构 commandName空格arguments。每条命令之间通过换行或者;隔开。例如: #设置变量foo为0 set foo 0 set bar 1;puts $bar; #设置(set 为一个Tcl命令)变量bar为1,输出(puts也是一个Tcl命令)bar 2.2注释 使用#注释,不过要注意的是下面的注释是错误的: set foo 0 #设置变量foo为0,这种注释是错误的 因为tcl解析器总是认为一条命令应该以换行或者分号结束,其他的在同一行中都认为是参数。所以正确的应该是: set foo 0 #设置变量foo为0,这种注释是正确的 set foo 0; #设置变量foo为0,这种注释是正确的

tcl脚本进行二次开发

HyperMesh中利用Tcl脚本进行二次开发 杨国雄 上海世科嘉车辆技术有限公司

HyperMesh中利用Tcl脚本进行二次开发 Further Develop by Tcl Script Based on HyperMesh 杨国雄 (上海世科嘉车辆技术有限公司) 摘要:当代企业发展的关键是创新,本文通过对HyperMesh软件进来二次开发的两个实例—频响分析流程订制和通过Comps名自动定义单元属性,研讨了通过HyperMesh软件对企业CAE分析流程进行简化,标准化,人性化的可能性。 关键字:Tcl,二次开发,HyperMesh Abstract:Innovation is the key of contemporary enterprise's development. In this paper, 2 examples(customized frequency analysis process and automatic definition of element properties via comps name)were made by further developed of HyperMesh. The possibility of CAE analysis process be simplified, standardized and humanized with HyperMesh software was also discussed. Keyword:Tcl, Further Develop,HyperMesh 1 概述 随着各个行业对CAE技术应用的深入,企业对规范化分析流程,简化前处理等各个方面提出了需求。HyperMesh是一款功能强大的有限元前处理软件,同时还具有丰富的二次开发能力。通过二次开发为企业更好的利用HyperMesh软件提供了可能性。 2 HyperMesh二次开发简介 HyperMesh二次开发主要包括了2个层次的内容——宏命令和Tcl/Tk脚本。宏命令主要功能是定义面板按钮及对Tcl脚本的调用。Tcl/Tk脚本命令可以自定义各类窗口,程序的流程化控制,宏命令、Tcl脚本和C语言程序的关系如图1所示。本文主要讨论Tcl脚本的编写。

Tcl:一个可嵌入的命令语言

Tcl:一个可嵌入的命令语言 :
Tcl 是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器 等)中的一个库包组成。Tcl 提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命 令,和(c)一个 C 接口,工具通过它用特定于工具的命令增加内置命令。Tcl 在与窗口组件库整合的 时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户 编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制。 本文出现于 1990 Winter USENIX Conference Proceedings
1. 介绍 Tcl 代表了“tool command language - 工具命令语言”。它由一个库包组成,程序可以把它用作自己 的命令语言的基础。Tcl 的开发由两项观察所推动。第一项观察是,通用可编程命令语言通过允许 用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中最 众所周知的例子是 UNIX shell[5] 和 Emacs 编辑器[8]。在各自情况下,出现的有着不同寻常能力的 计算环境,在很大程度上是因为能获得可编程的命令语言。 第二个促成它的观察是交互式应用正在增长。在 1970 年代晚期和 1980 年代早期的分时环境中, 几乎所有的程序都是面向批处理的。典型的使用交互式的命令 shell 来调用它们。除了 shell 之 外,只有少数其他的程序是交互式的,比如编辑器和邮件器。正好相反,今天使用的个人工作站, 带有它们自己的光栅显示器和鼠标,鼓励了一种不同的系统结构,在这里大量的程序是交互式的, 并且最常见的交互方式是直接用鼠标操纵单独的应用。此外,今天能获得的大显示器使很多交互式 的应用立即活跃起来成为可能,而对于在十年前很小的屏幕这是不实际的。 不幸的是,很少的今天的交互式程序拥有 shell 或 Emacs 命令语言的能力。在这里好的命令语言 是存在着的,它们趋向与特定的程序捆绑在一起。每个新的交互式程序都要求开发一个新的命令语 言。在多数情况下,应用程序员没有时间或爱好去实现一个通用设施(特别是在应用自身很简单的 时候),所以结果的命令语言趋向于带有不充分的功能和笨拙的语法。 Tcl 是一个独立于应用的命令语言。它作为一个 C 库包存在,可以用于很多不同的程序中。Tcl 库 提供了用于简单但完全可编程的命令语言的一个分析器。这个库还实现了提供了通用的编程构造的 一组内置命令,比如变量、列表、表达式、条件、循环和过程。单个的应用程序可以用特定于应用 的命令来扩展基本的 Tcl 语言。Tcl 库还提供一组实用工具例程来简化特定于工具的命令的实现。 我相信 Tcl 在窗口环境中是特别有用的,它提供了两项优势。首先,它可以用做编制应用的界面的 一个通用机制。如果一个工具基于 Tcl,则应当相对容易的去修改应用的用户界面,并使用新命令 来扩展这个界面。其次和更重要的是,Tcl 为工具之间通信提供一种统一的框架。如果在所有的工 具中统一使用了它,Tcl 将使工具在一起工作得比今天的状况更加优雅。 本文余下部分组织如下:第 2 节描述用户见到的 Tcl 语言。第 3 节讨论在应用程序中如何使用 Tcl,包括在应用程序和 Tcl 库之间的 C 语言接口。第 4 节描述在窗口环境中如何使用 Tcl 来定制 界面动作和外观。第 5 节展示如何使用 Tcl 作为进程间通信的媒介,和为什么这很重要。第 6 表述 Tcl 实现的状态和一些初步的性能测量。第 7 节把 Tcl 与 Lisp、Emacs 和 NeWS 做对比,第 8 节 总结本文。 2. Tcl 语言

TCL语言基础

TCL语言基础 变量置换:它是由一个$符号标记,变量置换会导致变量的值插入一个单词符号中。 set x 10 例如:set y $x+100 //y的值是10 + 100 如果主要想得到值110,还必须用命令置换。 命令置换:命令置换是由[]括起来的TCL命令及其参数,命令置换会导致一个命令的所有或部分单词符号被另一个命令的结果所代替 例如:set y [expr $x + 100] //y的值是110 set y [expr $x + 100 ; set b 300 ] //y的值为300,因为了的值为300 反斜杠置换:类似于C中反斜杠的用法,主要用于在单词符号中插入诸如换行符、空格、[、$等被TCL解析器当作特殊符号对待的字符。 例如:set msg multiple\space //这里最后两个单词间的空格不是分隔符,msg的值为:multiple space set msg money \ \$3333\ \nArray\ a\[2] //这个命令的执行结果为:money $3333 Array a[2] 将一个变量赋值给一个变量时,需用$符号 如:set EndUser000 …8613000000000? set EndUser $ EndUser000 相关命令 unser这个命从解析器中删除变理,后面可以有任意个参数,每个参数是一个变量名,删除数组的例子: %put $day(Monday) %put $day(Tuesday) 2 %unset day %put $day(Tuesday) append命令把文本加到一个变量的后面 例如: %set txt hello hello %append txt …! How are you? hello ! How are you. Incr命令把一个变量值加上一个整数。Incr要求变量原来的值和新加的值都必须是整数

TCL语言基础资料

TCL语言基础资料 一脚本语言详细介绍 21世纪的高级编程语言 摘要: Perl和Tcl等脚本语言代表一种与c或JavaTM 为代表的系统程序设计语言完全不同的编程形式。脚本语言为"胶着"应用程序而设计,它使用无类型方法来实现高级编程和比系统程序设计语言更快的发展应用。计算机速度的增长和混合应用的改变使脚本语言在今后的应用中越来越重要。 关键字: 组件框架,面向对象编程,脚本,强类型,系统编程 1.简介 在过去的十五年里,人们编写计算机程序的方法

发生了根本的转变。这种转变是从c或c++等系统程序设计语言到Perl或Tcl等脚本语言的过渡。虽然很多人参与了转变,却很少有人意识到它的发生,更不用说知道为什么会发生。这篇文章是我关于为什么在下个世纪脚本语言可以比系统程序设计语言更好的处理许多编程工作的一点看法。 与系统程序设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。系统程序设计语言起源于像内存字等最初期的计算机元素,它为建立数据结构和算法而创建。相反的,脚本语言为胶着而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件间的联系,并提供快速应用开发. 脚本语言和系统程序设计语言互为补充,并且二十世纪六十年代以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。然而,速度更快的机器,

更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展等发展趋势大大提高了脚本语言的应用。在今后的十年中,这种趋势将继续,而且越来越多的完全使用脚本语言和系统程序设计语言书写的应用程序将主要用来创建组件。 2.系统程序设计语言 为了理解脚本语言和系统程序设计语言的不同,最好先了解一下系统程序设计语言是如何发展的.系统程序设计语言是作为除汇编语言外的另一种选择而引入的.在汇编语言里,实际上机器的每一个细节都被反映在程序里.每个状态代表一个简单的机器指令,而程序员必须处理像寄存器分配和程序调用顺序等低层细节.因此,用汇编语言编写和维持大型程序是很困难的. 真的不掉线吗??、???????????? 二十世纪五十年代后期像Lisp,Fortran和Algol等高层语言开始出现.这些语言里的状态和机器指令不再完全一致,编译程序把过程程序中的每个状

Tcl脚本语言教程

Tcl教程 TCL语法 ■脚本、命令和单词符号 (2) ■置换(substitution) (2) ■注释 (5) 变量 ■简单变量 (5) ■数组 (6) ■相关命令 (6) 表达式 ■操作数 (7) ■运算符和优先级 (7) ■数学函数 (8) List ■list命令 (10) ■concat命令 (10) ■lindex命令 (11) ■llength命令 (11) ■linsert命令 (11) ■lreplace命令 (11) ■lrange 命令 (11) ■lappend命令 (12) ■lsearch 命令 (12) ■lsort命令 (13) ■split命令 (13) ■join命令 (13) 控制流 ■if命令 (13) ■循环命令:while 、for、foreach (14) ■eval命令 (15) ■source命令 (16) 过程(procedure) ■过程定义和返回值 (16) ■局部变量和全局变量 (17) ■缺省参数和可变个数参数 (17) ■引用:upvar (18) 字符串操作 ■format命令 (19) ■scan命令 (20) 1

■regexp命令 ■regsub命令 ■string命令 文件访问 ■文件名 ■基本文件输入输出命令 ■随机文件访问 ■当前工作目录 ■文件操作和获取文件信息 错误和异常 ■错误 ■从TCL脚本中产生错误 ■使用catch捕获错误 ■其他异常 深入TCL ■查询数组中的元素 ■info命令 TCL语法> 脚本、命令和单词符号 一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。 TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 TCL语法> 置换(substitution) 注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: 2

tcl脚本

#无线节点参数 set val(chan) Channel/WirelessChannel ;#无线信道 set val(prop) Propagation/TwoRayGround ;#无线传输模型是TwoRayGround set val(netif) Phy/WirelessPhy ;#网络接口类型是无线物理层 set val(mac) Mac/802_11 ;#MAC层协议采用802.11 set val(ifq) Queue/DropTail/PriQueue ;#接口队列类型是IFQ队列 set val(ll) LL ;#逻辑链路层类型LL层 set val(ant) Antenna/OmniAntenna ;#天线类型是全向天线 set val(ifqlen) 50 ;#网络接口队列的大小是50 set val(rp) AODV ;#无线路由协议是AODV协议set val(x) 600 ;#设定拓扑范围——长度,600m set val(y) 200 ;#设定拓扑范围——宽度,200m set val(stop) 10.0 ;#设定模拟时间,10s set val(nn) 3 ;#节点数,3个 #建立一个模拟实例 set ns [new Simulator] #开启Trace跟踪文件和NAM显示文件 set tracefd [open wireless.tr w] set namtrace [open wireless.nam w] $ns trace-all $tracefd $ns namtrace-all-wireless $namtrace $val(x) $val(y) #建立一个拓扑对象,记录节点的移动情况 set topo [new Topography] $topo load_flatgrid $val(x) $val(y) #创建God(General Operations Diretor)对象,存储网络状态以及节点间连接信息 create-god $val(nn) #创建物理信道对象 set chan_1_ [new $val(chan)] #配置无线节点(包括使用何种路由协议,何种MAC协议,无线信道模型等) $ns node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channel $chan_1_ \

TCL脚本-序言、工具安装

TCL、Python和软件测试自动化

Credits About Author

前言 当前,作为软件质量保证的一个有效过程,软件测试技术引起了越来越多人和公司的注意,并且获得了长足的进展。在这个领域里面各种思想、方法和工具层出不穷。并且与软件测试相关的咨询、测试工具也形成了一个较大的产业。在业界就有不少的公司提供了许许多多的软件测试工具,这些工具都提供了脚本,用户可以编写脚本来使测试工作自动化,它们的出现一定程度上提高了软件测试的效率。但是很多时候,这些工具并不能够完全满足我们的要求,更多的时候,我们需要开发自己的测试工具,编写自己的自动化测试脚本,来提高测试效率,特别是在针对嵌入式开发的领域。 脚本语言,是不需要编译就能够解释执行的语言。具有语言层次高,开发迅速,易于扩充,方便移植等特点,正是因为这些特点,在软件测试领域里面获得了广泛的应用。基本上现在商用工具都支持某种脚本语言: 表格0-1商业工具支持的脚本 工具名称厂家支持脚本 QARun WinRunner Robot SmartBits 自己实现测试工具,编写自动化脚本是一项非常具有挑战性的,但是非常有意义的工作。选择哪些脚本作为我们测试工具的脚本语言,是需要仔细考虑的事情。而TCL脚本作为软件测试领域里面最经典的语言,在业界已经获得了广泛的应用。并且TCL和其他语言相比,有如下几个重要特点: 1)简单易学。TCL脚本基于命令和替换的语法结构,对于有C/C++编程经验或者C Shell 编 程经验的而言,非常容易掌握。 2)功能强大,极易扩充。使用TCL脚本可以完成很多的事情,包括网络Socket编程、GUI 图形界面程序开发、数据库应用程序、实现简单的WebServer和FtpServer、实现COM自 动化服务器等。我们只需要极少量的TCL代码就能够完成需要数十倍C代码才能完成的功 能。并且该语言的扩展性非常好,你甚至可以扩充出你自己的语言控制结构!比如实现你 自己的switch结构。 3)面向对象的完美支持。TCL本身不支持面向对象,但是可以通过程序包的形式来扩展,并 且这些扩展包还非常多。不过最好用的就是ITcl。这个扩展包在TCL脚本上实现了对面向 对象编程的完美支持。 4)可以非常方便的嵌入其他应用程序。我们可以非常方便的将TCL解释器嵌入到我们自己的 应用程序中,使我们的程序具有通过脚本来被用户控制的功能。 5)可移植性良好。TCL发源于Unix,但是现在几乎在所有的操作系统上都实现了这个脚本解 释器,包括Windows和MAC。所以你写的TCL脚本基本上不用修改就能够在这些环境上 运行。

TCL脚本语言-14-输入输出系统

输入输出系统 输入和输出相比大家都不陌生。说起它,我就想起来大学第一次写Pascal程序的时候,总要写出这样的代码: Program Test(input,output); Begin Write(‘Hello,World!’); End. 老实说,第一行的input和output两个参数让我迷惑了很久,一直都不明白它们的用途。后来才慢慢的知道它们叫做输入和输出。 输入和输出总是和文件系统紧密相连。现代操作系统中,所有的设备几乎都被抽象成文件系统。但是不同操作系统下文件系统格式不同,例如Unix和Windows、MAC的目录等都有一定的差异。好在TCL语言比较好的解决了这个问题。本章节我们会详细的介绍如何在TCL中操作文件系统以及读写文件。 操作文件系统 TCL中能够非常方便的操作文件、目录。包括:查询和设置文件属性、复制、删除以及路径名字的操作等。所有这些都是通过一个file命令来完成,其语法都非常简单,所以我们这里只是按照分类,列举出该命令的各种用法: 文件属性操作 命令用法描述 file atime name ?time? 返回文件name最后被读取的时间;该命令在FAT文 件系统上无效(返回数据可能不正确); file mtime name ?time? 设置或者修改文件name的最后被修改时间。time参 数表示1970/1/1到现在的秒。设置最后修改时间,和 那个著名的touch命令完成类似的功能; file attributes name file attributes name ?opt? file attributes name ?opt vla? ?opt val?... 查询或者设置文件的属性。第一个命令查询所有的属性;第二个命令查询指定的属性;第三个设置属性的值。 file executable name 看看这个文件是否是可执行的,是就返回1;

TCL培训教程(全)

. Tcl编程简介(一) 简介 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”,实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。 其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。 下面简单介绍以下tcl的语法规则: 解释器 在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是在特定的 Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。 Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。 数据类型 Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。这是它比较有特点的方面字符串有三种形式:命令(command), 表达式(expresion)和表(list)。 Basic Command Syntax 基本语法 Tcl有类似于shell和lisp的语法,当然也有许多的不同。一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它

DDL,DML,DCL,TCL四种语言的简介

DDL,DML,DCL,TCL四种语言的简介 1.DDL(Data Definition Language)数据库定义语言 statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一。 用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束 DDL不需要commit. CREATE ALTER DROP TRUNCATE COMMENT RENAME 2.DML(Data Manipulation Language)数据操纵语言 statements are used for managing data within schema objects. 由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。 DML分成交互型DML和嵌入型DML两类。 依据语言的级别,DML又可分成过程性DML和非过程性DML两种。 需要commit. SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE 3.DCL(Data Control Language)数据库控制语言授权,角色控制等GRANT 授权 REVOKE 取消授权 4.TCL(Transaction Control Language)事务控制语言 SAVEPOINT 设置保存点 ROLLBACK 回滚 SET TRANSACTION SQL主要分成四部分: (1)数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。 (2)数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

Tcl用法详述

T C L用法祥述 一TCL语法 1 脚本、命令和单词符号 一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的: set a 1 set b 2 或 set a 1;set b 2 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。 TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。 2 置换(substitution) 注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。 TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: %set x 10 //定义变量x,并把x的值赋为10 10 %set y x+100 //y的值是x+100,而不是我们期望的110 x+100 上例的第二个命令中,x被看作字符串x+100的一部分,如果我们想使用x的值'10' ,就必须告诉TCL解释器:我们在这里期望的是变量x的值,而非字符'x'。怎么告诉TCL解释器呢,这就要用到TCL语言中提供的置换功能。 TCL提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。 1) 变量置换(variable subtitution)

相关文档