Tcl/Tk漫谈〖摘要〗Tcl/Tk是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。本文介绍其成长历史,特点,优势及应用范围。〖关键词〗Tcl/Tk,组件,可移植性Tcl/Tk的发明人JohnOusterhout教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路CAD设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl(ToolCommandLanguage)语言的产生。Tcl最初的构想的是希望把编程按照基于组件的方法(componentapproach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的,具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然,这种语言还要有良好的扩展性,以便用户为其增添新的功能模块。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起,使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的Java不谋而合。终于在1988年的春天,这种强大灵活的胶水-Tcl语言被发明出来了。按照Ousterhout教授的定义,Tcl是一种可嵌入的命令脚本化语言(CommandScriptLanguage)。“可嵌入”是指把很多应用有效,无缝地集成在一起。“命令”是指每一条Tcl语句都可以理解成命令加参数的形式:命令[参数1][参数2][参数3][参数4]......[参数N]脚本化是指Tcl为特殊的,特定的任务所设计。但从现在角度看,可以说Tcl是一种集C语言灵活强大的功能与BASIC语言易学高效的风格于一身的通用程序设计语言。Tk(ToolKit)是基于Tcl的图形程序开发工具箱,是Tcl的重要扩展部分。Tk隐含许多C/C++程序员需要了解的程序设计细节,可快速地开发基于图形界面Windows的程序。据称,用Tcl/Tk开发一个简单的GUI应用程序只需几个小时,比用C/C++要提高效率十倍。需要指明的是这里所说的“窗口”是指Tcl定义的窗口,与X-Windows与MSWindows的定义有所不同,但它可完美地运行在以上两个系统上。下面看一下Tcl的总体结构图(注:图中的黑方块代表组件):Tcl语言的结构设计图下面就Tcl语言的特点分别加以介绍。一,“可信赖的”可移植性Tcl是一种高级程序设计语言。它将程序设计概念高度抽象,真正地把程序设计与操作系统底层结构隔开,因此不依赖于任何平台,具有良好的可移植性。相反,虽然C语言也是一种可移植性好的语言,但由于其设计时,保留对系统底层的操作,程序就有了“依赖性”,再加上其“开放”的策略,各个厂家“各自为政”,争先制定“标准”,结果造成版本众多,互不兼容。而Tcl却非常的“单纯”,“标准”也只有一个。是否100%的“纯”是程序设计语言可移植性的先决条件。“可信赖”是我给加的。笔者曾有过这样的经验,将一个上万行的,在SUN上用Tcl开发的GUI程序移植到NT平台,竟未改一行SourceCode。相反,笔者也曾将一个基于Java的几百行的一个搜索引擎程序移植到NT平台,结果发现涉及文件系统,汉字处理的模块必须做出一个NT版本才能正确执行。Tcl是用C语言开发的。它现在可运行在Unix,Windows和Macintosh等各种平台上。二,较高的执行效率Tcl常用的功能模块被编译生成C的库文件。因此,Tcl虽然是按解释方式执行的,但多数执行代码调用的是编译成机器语言的C库文件,因此其执行效率仍然很高。笔者曾分别用C++,Java和Tcl编写了grep串匹配查找程序,对一个六万行,长度为15MB的字典文件,用同一模板从文件首进行串查找,用时分别为C++(53s),Tcl(69s),Java(287s)。测试环境为:硬件:SUNSPARCWorkstaion5软件:SUNC++Compiler4.2,JDK1.15,Tcl/Tk7.6另外,由于Tcl是用解释方式执行的,其扩展和修改应用是在执行过程当中,比Microsoft的OLE的静态的对象嵌入连接更具灵活性。例如,一个电子表格程序每次执行时可动态的更新表格中来自被数据库应用程...