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

合集下载

Tcl语言基础教程

Tcl语言基础教程

1

1

2

2

110

1

110 110

2

110 3

4

1

2

3 1

10

10

0.

-1

2

-1 3

3.1 3.2

10 3.3

1 2

1

2

1 2

1 2

3

1

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有类似于shell和lisp的语法,当然也有许多的不同。一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。例如:set a 22 //相当于C中的 a=22 a是一个变量这条命令分为三个域:1: set 2: a 3: 22set使用于设置变量的值的命令

Tcl脚本语言教程

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脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的:

tcl语言中string trim的使用

tcl语言中string trim的使用

tcl语言中string trim的使用

Tcl (Tool Command Language) 是一种解释性的脚本语言,广泛应用于自动化测试、网络编程和系统管理等领域。本文将以Tcl 语言中的`string trim` 命令为主题,详细介绍其用法、参数及示例,并探讨在实际开发过程中的应用场景。

什么是`string trim` 命令?

`string trim` 是Tcl 语言中内置的一个字符串处理命令,用于移除字符串两端的指定字符。其语法如下:

string trim ?-characters chars? string

其中,`-characters` 是可选的参数,用于指定需要移除的字符集合,`string` 是需要处理的字符串。

`string trim` 的参数说明

- `?-characters chars?`: 这是可选的参数,用于指定需要移除的字符集合。`chars` 是一个字符串,代表需要被移除的字符。如果没有指定该参数,则默认移除字符串两端的空白字符(空格、制表符、换行符等)。

- `string`: 这是需要处理的字符串。

`string trim` 的用法举例

为了更好地理解和掌握`string trim` 命令的用法,我们来看几个示例:

示例一:移除字符串两端的空白字符

tcl

set str " Hello World! "

set result [string trim str]

puts "Result: result"

上述示例中,我们定义了一个字符串`str`,其两端都包含有空白字符。通过调用`string trim` 命令,我们移除了两端的空白字符,并将结果存储在`result` 变量中。最后,我们通过`puts` 命令打印出结果。

2024版年度TCL培训教程笔记

2024版年度TCL培训教程笔记

目录•TCL基础概念与特点•TCL基本语法与数据结构•TCL过程与函数定义调用•TCL扩展功能库使用指南•TCL界面编程技术实践•TCL网络编程应用实例•TCL测试与调试技巧分享

TCL基础概念与特点

01TCL(Tool Command Language)是一种广泛应用的嵌入式脚本语言。

02发展历程:起源于20世纪80年代,由John Ousterhout教授创建,至今仍在不断更新和发展。

03

主要应用于快速原型开发、自动化测试、GUI应用程序等领域。

TCL定义及发展历程

TCL语言特性与优势

01

语言特性

简单易学、动态类型、面向对象、可扩展性强。

02

优势

跨平台兼容性好,易于与C/C等语言集成,提供

丰富的库函数和工具。

应用领域及案例分析

应用领域

自动化测试、网络编程、嵌入式系统开发等。

案例分析

如使用TCL进行自动化测试脚本编写,提高测试效率;在嵌入式系统中利用TCL实现动态配置和功能扩展。

开发环境与工具介绍

开发环境

支持多种操作系统,如Windows、Linux、macOS等。

工具介绍

常用的开发工具有Tclsh、Tk、Expect等,分别用于命令行交互、GUI开发和自动化控制。

TCL基本语法与数据结构

变量、数据类型与运算符01变量声明与赋值

TCL中变量无需事先声明,直接使用`set`命令进行

赋值,例如`set x10`。

02数据类型

TCL支持多种数据类型,包括整数、浮点数、字符

串等。数据类型之间可以自动转换。

03运算符

TCL支持常见的算术运算符(如+、-、*、/)、

比较运算符(如==、!=、<、>)和逻辑运算符

tcl语言eval用法

tcl语言eval用法

TCL语言eval用法

1.简介

T C L(To ol Co mm an dL a ng ua ge)是一种简单、高效、可移植的解释性脚本语言。它被广泛应用于各种领域,如软件开发、自动化测试和网络编程等。在TC L语言中,ev al是一个非常强大的命令,它允许动态执行

T C L代码。本文将介绍e va l命令的基本用法和一些常见应用场景。

2. ev al命令的基本用法

e v al命令用于执行T C L代码,并将执行的结果作为字符串返回。

e v al命令的基本语法如下:

```T CL

e v al sc ri pt

```

其中,s cr ip t参数是包含T CL代码的字符串。ev al命令会将

s c ri pt参数作为TC L代码进行解析和执行,并返回执行结果。下面是一个简单的示例:

```T CL

e v al{p ut s"He ll o,W o rl d!"}

```

上述代码会输出"Hel l o,Wo rl d!",ev al命令将字符串

"{pu ts"H el lo,W orl d!"}"解析为T CL代码并执行。

3. ev al命令的常见应用场景

3.1动态生成变量和命令

e v al命令可以在运行时动态生成变量和命令。例如,我们可以使用

e v al命令实现一个简单的计数器:

f o r{se ti1}{$i<=5}{in cr i}{

s e tv ar na me"c ou nt$i"

s e t$va rn am e$i

p u ts"c ou nt$i=$$va r na me"

EDA技术工具命令语言TCL介绍PPT课件

EDA技术工具命令语言TCL介绍PPT课件
3
ASIC设计中心
TCL简介
EDA技术实验
TCL的全称是:Tool Command Language,工具 命令语言。由加州大学伯克利分校的John Ousterhout 教授开发.
TCL具有语法简明,处理高效,可移植性好的特点. TCL编程基于组件的方法.每个组件实现小的应用程 序功能,并能重复使用. TCL是当今EDA软件系统中普遍采用的一种脚本语 言,如Synopsys DC中的dc_shell-t>和Synopsys PrimeTime中的pt_shell>就是基于这种脚本的,实际 上TCL已经成为了一种工业标准。
命令 [参数 1] [参数 2] [参数 3] [参数 4] ...... [参数 N] 命令和参数间用空格或TAB键隔开。
27.07.2020
5
ASIC设计中心
TCL语法
EDA技术实验
TCL命令处理过程
TCL 是一种解释性的语言,TCL 命令语句由TCL解 释器分析执行. TCL解释器对命令语句的处理过程分为两部分:分 析和执行。
27.07.2020
6
ASIC设计中心
EDA技术实验
TCL语法
TCL解释器在分析命令时,把所有的命令参数都当作字符串看待。
dc_shell-t> set x 10
//定义变量x,并把x的值赋为10

TCL培训教程(全)

TCL培训教程(全)

项目需求分析与设计思路
具备可扩展性,方便后续功能添加。
设计思路
使用TCL的socket编程实现HTTP服务器的基本框 架。
项目需求分析与设计思路
实现HTTP协议的基础功能,包括请 求解析和响应生成。
集成CGI支持,通过调用外部程序生成 动态内容。
实现HTTP协议基础功能
01
创建监听套接字
02
使用`socket`命令创建TCP套接字。
发展历程
TCL起源于20世纪80年代末期,由John Ousterhout教授在 加州大学伯克利分校开发。随着互联网的普及和嵌入式系统 的发展,TCL逐渐在各个领域得到广泛应用,并不断发展和完 善。
TCL语言特点与优势
语言特点
TCL语言具有简单易学、语法清晰、功能强大和可扩展性强等特点。它支持过 程式编程、面向对象编程和事件驱动编程等多种编程范式,可以轻松地处理文 本、文件和网络等操作。
01
```
02
如果一切顺利,您将在终端中看 到输出`Hello, World!`。
变量、数据类型和运算符
• 变量:TCL中的变量不需要事先声明,可以直接赋值。变量名 可以以字母或下划线开头,后面可以跟字母、数字或下划线。 例如
变量、数据类型和运算符
```tcl
set myVar "Hello"

tcl点板原理和技巧

tcl点板原理和技巧

tcl点板原理和技巧

TCL点板原理和技巧

TCL(Tool Command Language)点板是一种常用的编程语言,它具有简单易学、功能强大的特点。在编写TCL脚本时,掌握点板的原理和技巧是非常重要的。本文将介绍TCL点板的原理和一些常用的技巧。

一、TCL点板的原理

TCL点板的原理可以简单地理解为将一系列命令按照特定的顺序组织起来,形成一个可以重复使用的模板。当需要执行某个功能时,只需调用该点板即可。点板的原理主要包括以下几个要点:

1. 命令组织:点板是由多个命令组成的,每个命令都有特定的功能。这些命令可以按照特定的顺序排列,形成一个完整的点板。

2. 参数传递:点板可以接受参数,通过参数的传递可以使点板具有更强的灵活性。参数可以是字符串、数值等各种类型,具体根据点板的功能而定。

3. 循环结构:点板可以包含循环结构,使得某些命令可以重复执行。循环结构可以根据条件进行判断,从而决定是否继续执行。

4. 条件判断:点板可以包含条件判断结构,根据条件的不同执行不

同的命令。条件判断可以使点板具有更强的适应性和灵活性。

二、TCL点板的技巧

除了了解点板的原理,掌握一些常用的技巧也是非常重要的。下面介绍几个常用的TCL点板技巧:

1. 参数传递技巧:在调用点板时,可以传递不同的参数,从而实现不同的功能。参数的传递可以通过点板的定义来实现,也可以通过外部变量的方式来传递。

2. 循环技巧:循环结构是点板中常用的技巧之一。通过使用循环结构,可以重复执行某个命令或一组命令。循环结构可以使用for循环、while循环等方式实现。

TCL语言学习入门

TCL语言学习入门
switch控制流:
基本语法:
1
2
3
4
5
6
switch $x{
数值1 { 操作1 ;}
数值2 { 操作2 ;}
}
9.循环
tcl提供三种循环命令,分别为:for,foreach,while。此外tcl还提供两个循环控制命令。注意:这个三个命令中的程序块的开始花括号必须要和三个命令同一行。
while基本语法:
3.数据类型:
tcl不支持.net中的形如int , double ,char等等类型,唯一支持的就是string类型。也就是说一个变量可以在不同的时刻理解为不同的类型。
4.变量
tcl可以定义两种类型的变量:变量和数组。
变量:在tcl变量不需要声明就可以直接赋值。给变量赋值的例子:
1
2
set ba 1;
1
parray qian;#将打印出qian数组的所有信息
5.字符串操作
string命令基本语法如下(这里的string1,string2可以是字符串也可以是变量,option是下列选项之一)
1
string option string1 string2;
option的操作选项:
compare按照字典的排序方式进行比较。根据string1 <,=,>string2分别返回-1,0,1

tcl的三级结构

tcl的三级结构

tcl的三级结构

【原创版】

目录

1.TCL 的三级结构概述

2.TCL 的三级结构组成部分

3.TCL 的三级结构的应用领域

4.TCL 的三级结构的优缺点

5.总结

正文

1.TCL 的三级结构概述

TCL(Tool Command Language)是一种轻量级的脚本语言,广泛应用于嵌入式系统、测试自动化、网络设备配置等领域。TCL 的三级结构是指TCL 语言的语法结构,它包括了命令(Command)、表达式(Expression)和语句(Statement)三个层次。这种结构清晰、简洁,使得 TCL 语言易于学习、使用和扩展。

2.TCL 的三级结构组成部分

(1)命令:命令是 TCL 语言的基本构成单位,用于完成特定的操作。TCL 提供了丰富的命令,如控制结构、变量赋值、流程控制等。

(2)表达式:表达式是 TCL 语言中用于表示值的一种抽象概念。表达式可以是一个变量、一个常量或者一个计算结果。在 TCL 中,表达式通常用于赋值命令的右侧,或者作为其他命令的参数。

(3)语句:语句是 TCL 语言中用于表示程序执行流程的一种结构。语句可以是一个命令,也可以是一个表达式。在 TCL 中,语句通常由多个命令和表达式组成,用于实现复杂的逻辑控制。

3.TCL 的三级结构的应用领域

TCL 的三级结构在许多领域都有广泛的应用,例如:

(1)嵌入式系统:TCL 语言可以用于编写嵌入式系统的脚本,实现对硬件设备的控制和通信功能。

(2)测试自动化:TCL 语言可以用于编写测试脚本,实现对软件产品的自动化测试。

(3)网络设备配置:TCL 语言可以用于编写网络设备的配置文件,实现对网络设备的管理和维护。

TCL编程高级教程

TCL编程高级教程

TCL编程高级教程

本教程将介绍一些TCL编程的高级概念和技巧,以帮助读者更好地理

解和应用TCL语言。

1. 过程(Procedure)和命名空间(Namespace):TCL中的过程类

似于其他编程语言中的函数,用于封装一段特定的逻辑。过程可以接受参数,并返回结果。命名空间用于隔离变量和过程,以避免命名冲突。

2. 错误处理:TCL提供了异常处理机制,可以在代码中捕获和处理

错误。使用catch命令可以捕获异常,并使用error命令主动抛出异常。

3.文件操作:TCL提供了一组用于文件操作的命令,包括打开、读取、写入和关闭文件等。可以使用文件操作命令来读取和写入文本文件,进行

文件系统的管理和文件的复制等操作。

4.正则表达式:TCL支持使用正则表达式进行字符串匹配和替换。正

则表达式提供了一种强大的模式匹配工具,可以用于解析文本、过滤数据

和提取信息等操作。

5. 并发编程:TCL提供了一些并发编程的工具,可以启动多个线程

并进行并行计算。使用thread命令可以创建和管理线程,使用事件循环

来处理线程之间的同步和通信。

6. 扩展和集成:TCL支持通过扩展库来增加语言的功能。可以使用load命令加载扩展库,并使用扩展库提供的命令和函数来进行更复杂的

编程任务。

7. 调试和性能优化:TCL提供了一些调试工具,可以用于跟踪和调

试代码的执行过程。可以使用puts命令来打印调试信息,使用trace命

令来对变量和过程的修改进行追踪。此外,可以使用一些性能优化技巧,如缓存变量、避免重复计算、使用原生命令等,来提高代码的执行效率。

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

TCL脚本语言-14-输入输出系统
TCL、Python 和软件测试自动化
167
输入输出系统
输入和输出相比大家都不陌生。说起它,我就想起来大学第一次写 Pascal 程序的时候, 总要写出这样的代码:
Program Test(input,output); Begin
Write(‘Hello,World!’); End. 老实说,第一行的 input 和 output 两个参数让我迷惑了很久,一直都不明白它们的用途。 后来才慢慢的知道它们叫做输入和输出。 输入和输出总是和文件系统紧密相连。现代操作系统中,所有的设备几乎都被抽象成文 件系统。但是不同ຫໍສະໝຸດ Baidu作系统下文件系统格式不同,例如 Unix 和 Windows、MAC 的目录等都 有一定的差异。好在 TCL 语言比较好的解决了这个问题。本章节我们会详细的介绍如何在 TCL 中操作文件系统以及读写文件。
看看这个文件是否是可执行的,是就返回 1;
作者:雷雨后
Email: leiyuhou010@gmail.com
TCL、Python 和软件测试自动化
168
file readable name
返回文件 name 是否是可读的。
file writable name
返回文件是否是可写的。
file exits name
172
和刚才命令相比,少了-tails 选项,那么结果中就会多出目录名,如下:

UG后处理tcl语言解释(2)

UG后处理tcl语言解释(2)

exec tclsh ${1+"$@"}

# echo server‎that can handle‎multip‎l e

# simult‎a neous‎connec‎t ions.

proc newCon‎n ectio‎n { sock addr port } {

# client‎connec‎t ions will be handle‎d in

# line-buffer‎e d, non-blocki‎n g mode

fconfi‎g ure $sock -blocki‎n g no -buffer‎i ng line

# call handle‎D ata when socket‎is readab‎l e

fileev‎e nt $sock readab‎l e [ list handle‎D ata $sock ]

}

proc handle‎D ata {

puts $sock [ gets $sock ]

if { [ eof $sock ] } {

close $sock

}

}

# handle‎all connec‎t ions to port given

# as argume‎n t when server‎was invoke‎d

# by callin‎g newCon‎n ectio‎n

set port [ lindex‎$argv 0 ]

socket‎-server‎newCon‎n ectio‎n $port

# enter the event loop by waitin‎g

tool control language,tcl 编译-概述说明以及解释

tool control language,tcl 编译-概述说明以及解释

tool control language,tcl 编译-概述说明以及解

1.引言

1.1 概述

概述部分的内容可以在以下方向展开:

TCL(Tool Control Language)编译是一种常用的编程语言,特别适用于用于自动化脚本和软件开发中。本文将对TCL编译进行深入的研究和探讨。

TCL编译是将TCL语言代码转换为可执行的机器码或字节码的过程。通过编译,可以使TCL代码在执行时更高效、更快速地运行。TCL编译器将TCL程序转化为机器码或字节码,以便在不同的计算机平台上执行。

本文将首先介绍TCL编译的基本定义和原理。我们将探讨TCL编译的实现方式,包括语法分析、语义分析和代码生成等步骤。通过深入理解TCL 编译的原理,我们可以更好地利用该编程语言的特性和优势。

其次,本文将详细讨论TCL编译的应用领域。TCL编译广泛应用于自动化脚本编写、软件开发和系统管理等领域。我们将针对不同应用场景,介绍TCL编译的具体应用案例和实践经验。

最后,我们将总结TCL编译的重要性、优势和局限性。TCL编译能够提高代码执行效率,加快程序运行速度,提升开发效率。但同时,TCL编译也存在一定的局限性,例如对于大规模和复杂程序的编译支持相对较弱。我们还将对未来TCL编译的发展进行展望,探讨可能的技术改进和应用拓展。

通过本文的研究,读者可以深入了解TCL编译的概念、原理及其应用领域。同时,读者也可以更好地理解TCL编译的优势和局限性,并对未来TCL编译的发展方向有所展望。

1.2 文章结构

文章结构简要说明了整篇文章的分章节和每个章节的内容概述。通过清晰的结构,读者可以更好地理解和掌握文章的主题和逻辑。

EDA技术工具命令语言TCL介绍PPT课件

EDA技术工具命令语言TCL介绍PPT课件
命令 [参数 1] [参数 2] [参数 3] [参数 4] ...... [参数 N] 命令和参数间用空格或TAB键隔开。
27.07.2020
5
ASIC设计中心
TCL语法
EDA技术实验
TCL命令处理过程
TCL 是一种解释性的语言,TCL 命令语句由TCL解 释器分析执行. TCL解释器对命令语句的处理过程分为两部分:分 析和执行。
27.07.2020
8
ASIC设计中心
TCL语法
EDA技术实验
命令置换
命令置换是由[]括起来的TCL命令及其参数,命令置换会导致 某一个命令的所有或部分单词被另一个命令的结果所代替。例 如: dc_shell-t> set y [expr $x+100] 110
有了命令置换,实际上就表示命令之间是可以嵌套的, 即一个命令的结果可以作为别的命令的参数。
变量置换 命令置换 反斜杠置换
27.07.2020
7
ASIC设计中心
TCL语法
EDA技术实验
变量置换
变量置换由一个$符号标记,变量置换会导致变量 的值插入一个单词中。例如:
dc_shell-t> set y $x+100 //y的值是10+100,这里x被置换成 它的值10 10+100 这时,y的值还不是我们想要的值110,而是10+100,因 为TCL解释器把10+100看成是一个字符串而不是表达式, y要想得到值110,还必须用命令置换,使得TCL会把 10+100看成一个表达式并求值。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 来调用它们。

除了shell 之外,只有少数其他的程序是交互式的,比如编辑器和邮件器。正好相反,今天使用的个人工作站,带有它们自己的光栅显示器和鼠标,鼓励了一种不同的系统结构,在这里大量的程序是交互式的,并且最常见的交互方式是直接用鼠标操纵单独的应用。此外,今天能获得的大显示器使很多交互式的应用立即活跃起来成为可能,而对于在十年前很小的屏幕这是不实际的。

不幸的是,很少的今天的交互式程序拥有shell 或Emacs 命令语言的能力。在这里好的命令语言是存在着的,它们趋向与特定的程序捆绑在一起。每个新的交互式程序都要求开发一个新的命令语言。在多数情况下,应用程序员没有时间或爱好去实现一个通用设施(特别是在应用自身很简单的时候),所以结果的命令语言趋向于带有不充分的功能和笨拙的语法。Tcl是一个独立于应用的命令语言。它作为一个C 库包存在,可以用于很多不同的程序中。Tcl库提供了用于简单但完全可编程的命令语言的一个分析器。这个库还实现了提供了通用的编程构造的一组内置命令,比如变量、列表、表达式、条件、循环和过程。单个的应用程序可以用特定于应用的命令来扩展基本的Tcl语言。Tcl库还提供一组实用工具例程来简化特定于工具的命令的实现。

我相信Tcl在窗口环境中是特别有用的,它提供了两项优势。首先,它可以用做编制应用的界面的一个通用机制。如果一个工具基于Tcl,则应当相对容易的去修改应用的用户界面,并使用新命令来扩展这个界面。其次和更重要的是,Tcl为工具之间通信提供一种统一的框架。如果在所有的工具中统一使用了它,Tcl将使工具在一起工作得比今天的状况更加优雅。Tcl是不寻常的因为它提供两种不同的接口: 给用户发起Tcl命令的一个文本接口,和给它所嵌入的应用的一个过程接口。这些接口的每个都必须是简单的、强力的和高效的。在语言设计中有四个主要的因素:

[1] 语言用于命令。几乎所有Tcl“程序”都是短小的,很多只有一行长。多数程序将是键入的,执行一次或者几次,接着就丢弃了。这提示了这门语言应当有一个简单的语法,以便于键入命令。多数现存的编程语言都有复杂的语法;在写长程序的时候有益,但如果用做命令语言就笨拙了。

[2] 语言必须是可编程的。它应当包含通用编程构造,比如变量、过程、条件和循环,这样用户可以通过写Tcl过程来扩展内置的命令。可扩展性也要求简单的语法:这使Tcl程序生成其他Tcl程序变得容易了。

[3] 语言必须允许一个简单而高效的解释器。由于Tcl库要包含到许多小程序中,特别是在没有共享库的机器上,解释器必须不占用太多的内存。用来解释Tcl命令的机制必须足够快,可用于每秒发生上百次的事件,比如鼠标移动。

[4] 语言必须允许对C 应用的一个简单接口。它必须易于让C 应用调用这个解释器,并易于让它们用特定于应用的命令来扩展内置的命令。这个因素是我决定不使用Lisp 作为命令语言的原因之一:Lisp 的基本数据类型和存储管理机制与C 实在是不同,很难在它们之间建立清晰而简单的接口。对Tcl我使用了对于C 最自然的数据类型(字符串)。

Tcl的基本语法类似于UNIX shell:命令由用空格或TAB 分隔的一个或多个字段组成。第一个字段是命令的名字,它可以是内置命令、特定于应用的命令、或者是由一系列的Tcl命令组成的过程。在第一个后面的字段都作为参数传递给命令。如同在UNIX shell 中那样,换行字符用做命令分隔符,分号也可用来分隔在同一行上的命令。不同于UNIX shell,每个Tcl命令返回一个字符串结果,或者是空串,如果不适宜返回值的话。

在Tcl中有四个补充的语法构造,它们给予语言一种类似Lisp 的风格。使用花括号来组合复杂的参数;它们充当可嵌套的引用字符。如果参数的第一个字符是左花括号,则这个参数不以空白终结。转而,它终结于相匹配的右花括号。传递给这个命令的参数由在花括号中间的所有东西组成,并剥除围绕的花括号。例如,命令

相关文档
最新文档