語言簡介
TCL (最早稱為“工具命令語言”"Tool Command Language",,但是現在已經不是這個含義,不過我們仍然稱呼它為TCL)是一種 腳本語言。 由John Ousterhout創建。 TCL很好學,功能很強大。TCL經常被用於快速原型開發,腳本編程, GUI和測試等方面。TCL念作“踢叩” "tickle"。Tcl的特性包括:
* 任何東西都是一條命令,包括語法結構(for, if等)。
* 任何事物都可以重新定義和重載。
* 所有的數據類型都可以看作字元串。
* 語法規則相當簡單
* 提供事件驅動給Socket和檔案。基於時間或者用戶定義的事件也可以。
* 動態的域定義。
* 很容易用C, C++,或者Java擴展。
* 解釋語言,代碼能夠動態的改變。
* 完全的Unicode支持。
* 平台無關。Win32, UNIX, Mac上都可以跑。
* 和Windows的GUI緊密集成。 Tk
* 代碼緊湊,易於維護。
TCL本身不提供面向對象的支持。但是語言本身很容易擴展到支持面向對象。許多C語言擴展都提供面向對象能力,包括XOTcl, Incr Tcl等。另外SNIT擴展本身就是用TCL寫的。
語言擴展
使用最廣泛的TCL擴展是TK。 TK提供了各種OS平台下的圖形用戶界面GUI。連強大的Python語言都不單獨提供自己的GUI,而是提供接口適配到TK上。另一個流行的擴展包是Expect. Expect提供了通過終端自動執行命令的能力,例如(passwd, ftp, telnet等命令驅動的外殼).
另外一個TK的例子 (來自 A simple A/D clock) 它使用了定時器時間,3行就顯示了一個時鐘。
proc every {ms body} {eval $body; after $ms [info level 0]}
pack [label .clock -textvar time]
every 1000 {set ::time [clock format [clock sec] -format %H:%M:%S]} ;# RS
解釋:第一行定義了過程every, 每隔ms毫秒,就重新執行body代碼。第二行創建了標籤起內容由time變數決定。第3行中設定定時器,time變數從當前時間中每秒更新一次。