浅谈TCL(Tool Command Language)语言
2019-10-21刘嘉明
刘嘉明
摘 要:关于TCL语言,想必很多人都没有听说过,在语言中被大家熟知的就是出名的C语言,C++,C#,java语言,还有最近很流行的python人工智能语言。但是本文就拿出一个算是很古老的T语言,其实T语言的应用很广,用于控制工具,在一些测试下经常用到,但是现在python的出现打破了T语言在其领域的地位。本文浅谈TCL语言及一些控件,都是本人在学习T语言和python中的一点拙见。
关键词:TCL;工具控制;TK控件
一、TCL的起源与发展
要谈论一个语言就要先知道这个语言的来历,就像我们学习C语言的时候,老师也会和我们说C语言的来源,演变过程,进化与完善。
Tcl 是“工具控制语言(Tool Command Language)”的缩写。Tk 是 Tcl“图形工具箱”的扩展,它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。
John K. Ousterhout于 1988 年开始开发 Tcl/Tk(读作“tickle tee-kay”),当时其是加州大学伯克利分校(UCB)的教授。Tcl 是以可扩展性、短的学习曲线和易于嵌入为特定目标而设计的。Tk 的开发始于 1989 年,第一个版本于 1991 年问世。
TCL语言简单易懂,功能强大,常用于快速原型的开发,GUI,脚本,和测试。从测试行业接触TCL,由于python的流行,发现tcl语言也在被取代。
就此说说我在TCL学习中的一些见解。探讨有没有学习TCL的必要性。
二、TCL语言到底是什么
TCL语言也常被称:脚本语言,TCL语言其实包括两部分:语言部分和库部分。
(1)TCL语言的脚本部分
脚本部分可以理解就是语言的命令部分:就比如:set a 10;puts $a;相当与c语言的
打印命令:int a 10;printf(“%d”,a);就是通过发表命令给一些交互程序或者是一些文本编辑器,shell还要调试器。就比如C语言可以用程序写文本文件,打开文本文件一样。
TCL的语法简易,和高可扩展性。
(2)TCL语言的库部分
库部分其实可以理解为库函数包,而tcl的库中含有一个脚本分析器来执行脚本命令过程,也可以通过脚本解析创建新的过程,用于扩充函数。这个库能被嵌套应用程序,该程序可以产生脚本命令并执行过程。
(3)TCL交互界面
脚本命令可由用户输入,或者用户接口中读取,或者应用程序产生。实现多交互。内搭的脚本界面有tclsh和wish两种界面,tclsh只支持tcl命令,wish能支持tcl和tk命令。
通过这些脚本交互界面可以直观的了解语法的运行。逐一执行和得到结果,在创建过程时不打印结果。
(4)TCL/TK控件
TCL内置TK(toolkit)图形工具,和python的可视化库中含有的TK类似,能直观的显示出来,并且便于开发者开发一些新的交互界面使用。我们可以通过tk控件进行脚本的控制,也可以用输入界面控制tk控件。
三、浅谈TCL的语法
认识完tcl语言以后就来简单说说语法。
每一种语言都有特定的语法规则,就比如英语有英语语法,数学有计算公式,计算机语言少不了的就是语法了,然而很多比如简单的c语言有C语言语法,难的语法有java语法。当然tcl也不例外,也有属于自己的语法。
(1)TCL编程语法和格式
Tcl语言语法简单,因为tcl只有一种数据类型:字符串。在脚本编译里只识别成字符串,并且用与存储值。减少了变量类型的干扰。简单的理解一下,要是学过C语言就知道,变量是一个缺少不了的东西,而在使用变量我们要先定义。比如说是:int var 100;定义了一个整形的var,在tcl里我们也需要先对用到的变量进行变量声明和初始化,但是tcl里的变量没有类型区分,因为它只有一个类型——字符串。所有的变量我们都可以用set 来定义,就像:set var 100;这里的100是字符串,但是你通过解析器运算的话,自动识别成整形,浮点等,就比如:expr $var+100;结果200。在这里注意$符,在tcl里运用普遍就是相当于传参的东西。具体的语法还是要求从手册里学习。里面很多符号运算的规则,但是理解起来很方便。
TCL编程有固定的编程格式,就比如c语言也有格式一样,分号,反斜杠,这一类符号分运用也有特殊规定。
(2)TK编程
TK图像工具用起来方便简洁,安装wish内置TK控件库。能够直观地方便的使用控件,不同于python的函数库配置,而且python相对于难理解。
学习TCL的时候的感悟就是用起来很方便,但是功能却一般。易上手难精通。
四、在学习中的一些体会
如果感觉有兴趣不妨下载个wish85试试。在学习中偶尔一些大胆的想法,但是却很难实现。
邓拓说过:任何科学的结论都不应该永恒不变的。
语言的精妙之处在于它的可开发性,可它的可用性。现在的语言种类繁多,但是离不开共同的特点就是语言的语法精髓,在学习 TCL发现语法类似C语言,而python是C语言的进化。这几种语言都有其共通之处。
大学刚开始学c语言的时候,觉得printf打印字符都很厉害,但是接触语言以后发现语言并不只是这样,就和学习TCL一样的,最开是的历程总是叫我们打印一串字符。
在c语言中指针相对来说比较难的,因为涉及到的是变量的传输,指针指向。但是学习TCL的时候没有发现指针这东西了,这对于刚学习语言的人来说很不错。Tcl的参数传输都是考字符串的,变量总是在字符串上,所以就有参数的传输问题,早段时间在学习html的时候也遇到类似的参数传输问题,但是传输方式不一样。
我的体会就是:在tcl里面区分好全局变量和局部变量就差不多了,但是还有个上一个全局值与当前全局取值的问题,我在学习的时候在这吃到了不少苦头。总是取到上一个计算值。我觉得这是初学者应该考虑的问题。我的办法就是通过局部变量释放全局的上一个值。
学习一种语言没有可以少走的路。
五、总结
TCL脚本语言简单方便,也容易学习入手,但是精通的确要花时间。但是在慢慢落后的语言我觉得也值得去学习。毕竟开发的没有限度,在论坛上,博客上,网页上找到关于tcl的都是熟悉的电视机品牌。Wish也在更新,要是劈开利益,单看学习还是很值得去探索一下的,弄一个脚本论坛,脚本比拼。这种学术交流也能提高自己的思维和发现其他语言的思路。但是在应用上还是要跟潮流,毕竟python的流行也不是凭空产生的。语言都有自己的优点。
要是觉得自己有时间还是可以接触一下每种语言,比较一下语言的特点。
在博客上的大佬们都是掌握多种语言的,c,c#,c++,java,python,html,js……或者不全會至少了解。
正所谓:金无足赤,人无完人。学多者多学,不学者无术。
Eg: set learning_is_happy “学习是件快乐的事”
Button .button –text “$learning_is_happy”-command [list learn .button]
Proc learn .button {
Global learning_is_happy
Puts $learning_is_happy
}
Grid .button
Console show
##按钮显示###(复杂写法可以演变)
参考文献:
[1]TCL编程初步.pdf.
[2]Tcl/tk入门经典.