創(chuàng)建背景
現(xiàn)已創(chuàng)建了的很多交互工具,其中大部分都是用于集成電路設(shè)計钦购,問題在于對于每一個工具都需要某種類型的語言彰触,這會耗費大量時間去創(chuàng)建一些命令語言。而開發(fā)人員的關(guān)注點其實是在于工具本身的使用塞绿,而不是它的命令語言沟涨,并且麻煩的是一個工具的命令語言僅僅適用于它自己,并不適用于其他工具异吻。
于是裹赴,期待創(chuàng)建一種?可復(fù)用?的命令語言。設(shè)想若能創(chuàng)建一種普遍適用的腳本語言诀浪,如C語言的庫函數(shù)包一樣棋返,那其或許能夠用于很多領(lǐng)域。
同時希望這種語言是可擴展的雷猪,即有很好的擴展性睛竣。這可以方便不同的使用者向語言庫提供的內(nèi)核中加入一些自己需要的功能。
Tk概念源于1987年蘋果關(guān)于Hypercard的發(fā)布求摇,其功能以及腳本化很多功能的交互射沟。苦于沒有蘋果那么大開發(fā)隊伍与境,開發(fā)力量验夯,難以創(chuàng)建新型的交互軟件。
唯一的希望就是做到?組件化:不去創(chuàng)建幾十萬行代碼的應(yīng)用程序摔刁,而是找到一種能夠?qū)⑺璧膽?yīng)用程序分解為很多?較小的挥转、可復(fù)用的組件的方法。而每一個組件小到可以由一個小組就可以完成,這些組件最終實現(xiàn)所需的應(yīng)用程序绑谣。
這種基于組件的方法准潭,需要一種既強勁又堅韌的粘合劑,把組件結(jié)合在一起域仇, 共享腳本語言 就有可能成為這樣的粘合劑刑然。于是開發(fā)了Tk。
Tk接受的組件可以是 (1)獨立的用戶界面控件暇务,(2)完整的應(yīng)用程序泼掠。兩種情況下的組件都可以獨立開發(fā),然后使用Tcl來集成各個組件垦细,完成它們之間的通信择镇。
Tcl
Tcl:Tool Command Language,是一種?解釋執(zhí)行?的腳本語言括改。支持 變量腻豌、過程和控制結(jié)構(gòu)。同時Tcl還擁有功能強大的固有核心命令集嘱能。是一種用于?控制?和擴展?應(yīng)用程序的動態(tài)語言(腳本語言)吝梅。
庫
Tcl是需要解釋器的,其解釋器是一個用?C/C++語言的過程庫?實現(xiàn)的惹骂。故苏携,某種程度上也可以將Tcl看成一個C 庫。
擴展
任一個應(yīng)用程序可以通過? 增加命令?來擴展Tcl內(nèi)核的功能对粪。Tcl庫有豐富的 用于擴展TCL 命令的C /C++過程和函數(shù)右冻。這樣就可很容易地在C /C++的應(yīng)用程序中? 嵌入Tcl。Tcl最有用的一個擴展就是Tk著拭,這是一個用于開發(fā)圖形用戶界面(Graphical User Interface)應(yīng)用程序的工具集纱扭。
?用戶可以根據(jù)需要,針對某一特定領(lǐng)域?qū)cl語言的核心命令集進行擴展儡遮,加入適合自己應(yīng)用領(lǐng)域的擴展命令乳蛾。Tcl解釋器會將其當成像固有命令和固有結(jié)構(gòu)一樣同等看待。
Tcl良好的擴展性是的它能很好地適應(yīng)產(chǎn)品測試的需要峦萎,測試任務(wù)常會因設(shè)計和需求的改變而迅速改變屡久,這會讓設(shè)計人員難以應(yīng)付忆首。利用Tcl的可擴展性爱榔,測試人員能夠迅速地繼承多種新技術(shù),并針對產(chǎn)品新特點迅速推出擴展Tcl命令集糙及。
此外详幽,Tcl是一種比C/C++語言有著更高抽象層次的語言,使用Tcl可以在一種更高的層次上編寫程序,它屏蔽掉了C /C++程序必須涉及到的一些較為繁瑣的細節(jié)唇聘,從而提高開發(fā)測試的速度版姑。使用Tcl語言寫的測試例腳本,即使作了修改迟郎,也不需要重新編譯就可以調(diào)用 Tcl解釋器直接執(zhí)行剥险。這可以省去不少時間。
Tcl/Tk的好處
(1)快速開發(fā)
可以用Tcl完全編寫程序宪肖;
比C/C++或Java更高層次上開發(fā)表制;
Tk隱藏了C或Java程序元必須關(guān)注的很多細節(jié);
Tcl是解釋語言控乾,這是Tcl/Tk適用于快速開發(fā)的另一個語言么介。使用Tcl應(yīng)用程序可在運行中使用新腳本,無需重新編譯和重啟程序
正是因為Tcl是解釋語言蜕衡,因此運行速度比代碼編譯程序慢壤短,但是內(nèi)部的優(yōu)化(字節(jié)碼編譯)以及處理器性能的提高可以消除這個差距。
代碼和開發(fā)時間短慨仿。
(2)跨平臺
大多數(shù)情況下可以不加改動地運行在另一個平臺上久脯,如Linux的Tcl應(yīng)用跑在Windows上。
(3)擁有原生態(tài)Unicode支持的動態(tài)語言
可以處理幾乎所有的書面語言镰吆。無需擴展就可以處理Unicode支持的所有文本
(4)開源免費的軟件
(5)是個絕妙的“膠合語言”
1個Tcl應(yīng)用可包含很多不同的擴展桶现,每個擴展都分別提供一系列Tcl命令。?如Tk就是函數(shù)庫套件的例子鼎姊,應(yīng)用程序中Tcl腳本可以使用各套件提供的命令骡和。
(6)Tcl可以讓應(yīng)層程序很容易就擁有強大的腳本語言
Tcl不像其他語言,沒有確定的語法?解釋整個語言相寇,Tcl是由一個解釋器定義的慰于,這個解釋器解析單個Tcl命令,以及執(zhí)行許多個單個命令的過程集合唤衫。解釋器和它的替換規(guī)則是固定的?婆赠,但是新的命令可以隨時定義,并用來取代已經(jīng)存在的命令佳励。
控制流休里、過程以及表達式等功能都是通過命令實現(xiàn)的,它們并不能由Tcl解釋器直接理解赃承。