Tcl Tk Introduction
eryar@163.com
摘要Abstract:Tcl/Tck腳本可以很容易實(shí)現(xiàn)用戶自定義的命令,方便的創(chuàng)建圖形化的用戶界面GUI,所以Tcl和Tk的應(yīng)用領(lǐng)域幾乎覆蓋了圖形和工程應(yīng)用的全部范圍,包括計(jì)算機(jī)輔助設(shè)計(jì)、軟件開發(fā)、測(cè)試、儀器控制、科學(xué)可視化及多媒體方面。即可以使用Tcl/Tk實(shí)現(xiàn)AVEVA中的PML類似的功能,允許用戶自己編寫簡(jiǎn)單程序?qū)崿F(xiàn)程序的二次開發(fā)。
關(guān)鍵字Key Words:AVEVA, PDMS, PML, Tcl/Tk, Script Modeling
一、PML of AVEVA
看到AVEVA的解決方案中有一個(gè)方便靈活的用戶自定義語(yǔ)言PML(the AVEVA Programmable Macro Language),通過(guò)PML可以根據(jù)不同的用戶需求來(lái)對(duì)程序進(jìn)行擴(kuò)展,而AVEVA則可以專注于核心模塊的開發(fā)與完善。這對(duì)軟件開發(fā)而言,是很有益處的,可以在滿足各種用戶多變的需求的情況下保證軟件的質(zhì)量。使用PML實(shí)現(xiàn)一個(gè)簡(jiǎn)單的窗口代碼及效果如下圖所示:
Figure 1.1 Hello World Form code of PML
Figure 1.2 A simple Form of PML
二、Tcl/Tk
Tcl表示“Tool Command Language”。在學(xué)習(xí)OpenCascade的過(guò)程中,看到OpenCascade的一個(gè)測(cè)試工具Draw Test Harness就是使用了Tcl/Tk來(lái)實(shí)現(xiàn)自定義的命令。通過(guò)自定義的命令,即可以對(duì)一些功能進(jìn)行測(cè)試,如下圖所示,使用簡(jiǎn)單命令,即可以生成圖形:
Figure 2.1 Draw Test Harness with Tcl/Tk
Netgen是一個(gè)用于網(wǎng)格剖分的程序,它的用戶界面也是用Tcl/Tk來(lái)實(shí)現(xiàn)的,效果也不錯(cuò),如下圖所示:
Figure 2.2 Pipe Model in Netgen
三、結(jié)論 Conclusion
Tcl和Tk一起為應(yīng)用程序開發(fā)者和使用者提供了很多好處。首先是快速開發(fā)。很多有意思的應(yīng)用程序完全可以用Tcl腳本編寫。這樣就可以在比C/C++或Java更高的層次上進(jìn)行開發(fā),Tk隱藏了C或Java程序員必須關(guān)注的很多細(xì)節(jié)。與低級(jí)工具相比,要使用Tcl和Tk所需要學(xué)習(xí)的知識(shí)更少,需要編寫的代碼更少。通過(guò)幾個(gè)小時(shí)的學(xué)習(xí),Tcl/Tk新手用戶就可以創(chuàng)建有意思的用戶界面,很多開發(fā)人員從其他工具集轉(zhuǎn)而使用Tcl和Tk工具集后,應(yīng)用程序開發(fā)所需要的代碼數(shù)量和開發(fā)時(shí)間都減少了90%。
Tcl和Tk適于快速開發(fā)的另一個(gè)原因在于Tcl是解釋語(yǔ)言,使用Tcl應(yīng)用程序時(shí),可以在運(yùn)行中生成和使用新腳本,而無(wú)需重新編譯和重啟應(yīng)用程序。
Tcl可以跨平臺(tái),這意味著在一個(gè)平臺(tái)如Linux上開發(fā)的程序,在大多數(shù)情況下可以不加改動(dòng)的在另一個(gè)平臺(tái)上運(yùn)行,如在Windows上或Macintosh上運(yùn)行。
Tcl還是第一種擁有原生Unicode支持的動(dòng)態(tài)語(yǔ)言。因此,Tcl可以處理這個(gè)世界上幾乎所有的書面語(yǔ)言。
使用Tcl的另一個(gè)顯著優(yōu)點(diǎn)在于它和它的大多數(shù)擴(kuò)展都是免費(fèi)的開源軟件,允許所有人免費(fèi)下載、查看、修改及再發(fā)布。
另外,Tcl還可以讓應(yīng)用程序很容易地?fù)碛袕?qiáng)大的腳本功能。例如為要一個(gè)已經(jīng)存在的程序添加腳本功能,您只需要實(shí)現(xiàn)幾條新的Tcl命令,用來(lái)為應(yīng)用程序提供相應(yīng)的基本功能。然后,把您的新命令和Tcl庫(kù)鏈接起來(lái)生成全功能的腳本語(yǔ)言,該語(yǔ)言就包含了Tcl提供的命令和您編寫的那些命令。
Tcl還為用戶提供了方便。一旦學(xué)習(xí)了Tcl/Tk就能為任何Tcl和Tk應(yīng)用程序編寫腳本,只需要學(xué)習(xí)該應(yīng)用程序特有的少數(shù)幾條命令即可。這使得更多的用戶有能力對(duì)應(yīng)用程序進(jìn)行個(gè)性化改造和強(qiáng)化。
如果不借助別的軟件自己來(lái)實(shí)現(xiàn)一個(gè)AVEVA中的PML類似的功能,可能要涉及很多知識(shí),如編譯原理,計(jì)算機(jī)系統(tǒng)等很多很多,編寫出來(lái)的程序即使能用,可能質(zhì)量也不好。正如荀子所言:“君子性非異也,善假于物也”;牛頓也說(shuō)“我不知道在別人看來(lái),我是什么樣的人;但在我自己看來(lái),我不過(guò)就像是一個(gè)在海濱玩耍的小孩,為不時(shí)發(fā)現(xiàn)比尋常更為光滑的一塊卵石或比尋常更為美麗的一片貝殼而沾沾自喜,而對(duì)于展現(xiàn)在我面前的浩瀚的真理的海洋,卻全然沒有發(fā)現(xiàn)。如果說(shuō)我比別人看得更遠(yuǎn)些,那是因?yàn)槲艺驹诹司奕说募缟稀?#8221;如果借助于巨人的力量,使用Tcl就可以方便的實(shí)現(xiàn)PML類似的功能,現(xiàn)在需要做的就是對(duì)前人知識(shí)的學(xué)習(xí)與使用。