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