创建背景
现已创建了的很多交互工具,其中大部分都是用于集成电路设计,问题在于对于每一个工具都需要某种类型的语言,这会耗费大量时间去创建一些命令语言。而开发人员的关注点其实是在于工具本身的使用,而不是它的命令语言,并且麻烦的是一个工具的命令语言仅仅适用于它自己,并不适用于其他工具。
于是,期待创建一种 可复用 的命令语言。设想若能创建一种普遍适用的脚本语言,如C语言的库函数包一样,那其或许能够用于很多领域。
同时希望这种语言是可扩展的,即有很好的扩展性。这可以方便不同的使用者向语言库提供的内核中加入一些自己需要的功能。
Tk概念源于1987年苹果关于Hypercard的发布,其功能以及脚本化很多功能的交互。苦于没有苹果那么大开发队伍,开发力量,难以创建新型的交互软件。
唯一的希望就是做到 组件化:不去创建几十万行代码的应用程序,而是找到一种能够将所需的应用程序分解为很多 较小的、可复用的组件的方法。而每一个组件小到可以由一个小组就可以完成,这些组件最终实现所需的应用程序。
这种基于组件的方法,需要一种既强劲又坚韧的粘合剂,把组件结合在一起, 共享脚本语言 就有可能成为这样的粘合剂。于是开发了Tk。
Tk接受的组件可以是 (1)独立的用户界面控件,(2)完整的应用程序。两种情况下的组件都可以独立开发,然后使用Tcl来集成各个组件,完成它们之间的通信。
Tcl
Tcl:Tool Command Language,是一种 解释执行 的脚本语言。支持 变量、过程和控制结构。同时Tcl还拥有功能强大的固有核心命令集。是一种用于 控制 和扩展 应用程序的动态语言(脚本语言)。
库
Tcl是需要解释器的,其解释器是一个用 C/C++语言的过程库 实现的。故,某种程度上也可以将Tcl看成一个C 库。
扩展
任一个应用程序可以通过 增加命令 来扩展Tcl内核的功能。Tcl库有丰富的 用于扩展TCL 命令的C /C++过程和函数。这样就可很容易地在C /C++的应用程序中 嵌入Tcl。Tcl最有用的一个扩展就是Tk,这是一个用于开发图形用户界面(Graphical User Interface)应用程序的工具集。
用户可以根据需要,针对某一特定领域对Tcl语言的核心命令集进行扩展,加入适合自己应用领域的扩展命令。Tcl解释器会将其当成像固有命令和固有结构一样同等看待。
Tcl良好的扩展性是的它能很好地适应产品测试的需要,测试任务常会因设计和需求的改变而迅速改变,这会让设计人员难以应付。利用Tcl的可扩展性,测试人员能够迅速地继承多种新技术,并针对产品新特点迅速推出扩展Tcl命令集。
此外,Tcl是一种比C/C++语言有着更高抽象层次的语言,使用Tcl可以在一种更高的层次上编写程序,它屏蔽掉了C /C++程序必须涉及到的一些较为繁琐的细节,从而提高开发测试的速度。使用Tcl语言写的测试例脚本,即使作了修改,也不需要重新编译就可以调用 Tcl解释器直接执行。这可以省去不少时间。
Tcl/Tk的好处
(1)快速开发
可以用Tcl完全编写程序;
比C/C++或Java更高层次上开发;
Tk隐藏了C或Java程序元必须关注的很多细节;
Tcl是解释语言,这是Tcl/Tk适用于快速开发的另一个语言。使用Tcl应用程序可在运行中使用新脚本,无需重新编译和重启程序
正是因为Tcl是解释语言,因此运行速度比代码编译程序慢,但是内部的优化(字节码编译)以及处理器性能的提高可以消除这个差距。
代码和开发时间短。
(2)跨平台
大多数情况下可以不加改动地运行在另一个平台上,如Linux的Tcl应用跑在Windows上。
(3)拥有原生态Unicode支持的动态语言
可以处理几乎所有的书面语言。无需扩展就可以处理Unicode支持的所有文本
(4)开源免费的软件
(5)是个绝妙的“胶合语言”
1个Tcl应用可包含很多不同的扩展,每个扩展都分别提供一系列Tcl命令。 如Tk就是函数库套件的例子,应用程序中Tcl脚本可以使用各套件提供的命令。
(6)Tcl可以让应层程序很容易就拥有强大的脚本语言
![](https://img.haomeiwen.com/i18902314/9fe8c0e20cfea3c2.png)
Tcl不像其他语言,没有确定的语法 解释整个语言,Tcl是由一个解释器定义的,这个解释器解析单个Tcl命令,以及执行许多个单个命令的过程集合。解释器和它的替换规则是固定的 ,但是新的命令可以随时定义,并用来取代已经存在的命令。
控制流、过程以及表达式等功能都是通过命令实现的,它们并不能由Tcl解释器直接理解。
网友评论