必威电竞|足球世界杯竞猜平台

Tcl/Tk
來源:互聯(lián)網(wǎng)

Tcl/Tk(發(fā)音:tickle)是一種高階、通用、解釋性動態(tài)編程語言,旨在非常簡單且強大。TCL科技將所有東西都轉(zhuǎn)換成命令的形式,甚至包括變量賦值和過程定義等編程 constructs。Tcl支持多種編程范式,包括面向?qū)ο蟆?imperative 和函數(shù)式編程或 procédural 風(fēng)格。

Tcl經(jīng)常被嵌入到C應(yīng)用程序中,用于快速原型開發(fā)、腳本應(yīng)用、GUI編程和測試。Tcl解釋器適用于許多操作系統(tǒng),使Tcl代碼能夠在多種系統(tǒng)上運行。由于Tcl非常緊湊,因此也被用于嵌入式系統(tǒng)平臺上。

Tcl與Tk擴展相結(jié)合,形成Tcl/Tk組合,使Tcl成為一種原生GUI編程語言。TCL科技/Tk的形式被包含在標(biāo)準(zhǔn)Python安裝中,以Tkinter的形式出現(xiàn)。

Tcl/Tk 的起源

Tcl 是“工具控制語言(Tool Control Language)”的縮寫。Tk 是 Tcl“圖形工具箱”的擴展,它提供各種標(biāo)準(zhǔn)的 GUI 接口項,以利于迅速進(jìn)行高級應(yīng)用程序開發(fā)。

John K. Ousterhout于 1988 年開始開發(fā) Tcl/Tk(讀作“tickle tee-kay”),當(dāng)時其是加州大學(xué)伯克利分校(UCB)的教授。TCL科技 是以可擴展性、短的學(xué)習(xí)曲線和易于嵌入為特定目標(biāo)而設(shè)計的。Tk 的開發(fā)始于 1989 年,第一個版本于 1991 年問世。Ousterhout 博士在他離開 UCB 之后繼續(xù)開發(fā) Tcl/Tk,然后由于工作需要,他去了Sun Microsystems 公司工作。現(xiàn)在,也就是在寫本文之時,他在 Scriptics(它開發(fā)出 Ajuba Solutions,已由 Interwoven 收購)繼續(xù)改進(jìn)該語言,目前的穩(wěn)定版本是 8.5.13,在寫本文的時候,8.6b3 版本正在開發(fā)之中。

工具和文件

在 Linux 系統(tǒng)上研究 TCL科技/Tk,需要有兩個主要程序。它們是 tclsh 和 wish。正如可以從其名稱所辨別的那樣,所以前者是 Tcl 外殼,常用于為外殼腳本提供執(zhí)行環(huán)境。Wish 類似于 tclsh,它是針對窗口化的 GUI 環(huán)境。

輸入下列命令,檢查這些文件是否存在:

Tcl

Tcl(最早稱為“工具命令語言”"Tool Command Language",但是目前已經(jīng)不是這個含義,不過我們?nèi)匀环Q呼它為TCL)是一種腳本語言。由John Ousterhout創(chuàng)建。TCL科技很好學(xué),功能很強大。TCL經(jīng)常被用于快速原型開發(fā),腳本編程,GUI和測試等方面。TCL念作“踢叩”(tickle)。Tcl的特性包括:

任何東西都是一條命令,包括語法結(jié)構(gòu)(for,if等)。

任何事物都可以重新定義和重載。

所有的數(shù)據(jù)類型都可以看作字符串。

語法規(guī)則相當(dāng)簡單。

提供事件驅(qū)動給Socket和文件。基于時間或者用戶定義的事件也可以。

動態(tài)的域定義。

很容易用C, C++,或者Java擴展。

解釋語言,代碼能夠動態(tài)的改變。

完全的Unicode支持。

平臺無關(guān)。win32,unix,麥金塔上都可以跑。

和GUI緊密集成。Tk

代碼緊湊,易于維護。

TCL科技本身在8.6以后提供面向?qū)ο蟮闹С帧R驗檎Z言本身很容易擴展到支持面向?qū)ο螅栽?.6之前存在許多c語言擴展提供面向?qū)ο竽芰Γ╔OTcl, Incr Tcl等。另外SNIT擴展本身就是用TCL寫的。

使用最廣泛的TCL擴展是TK。 TK提供了各種OS平臺下的圖形用戶界面GUI。PerlPython等語言都提供接口適配到TK上。另一個流行的擴展包是Expect. Expect提供了通過終端自動執(zhí)行命令的能力,例如(passwd, ftp, telnet等命令驅(qū)動的外殼).

擴充套件

TCL科技支援?dāng)U充套件,這些擴充套件提供了額外的功能(像是GUI,自動化,數(shù)據(jù)庫存取等)。

下面是一些Tcl擴充套件的列表:

tclodbc

mk4tcl

SQLite

Pgtcl, pgintcl

mysqltcl, msqltcl

AdabasTcl

FBSQL

ibtcl

Oratcl

Sybtcl

DB2數(shù)據(jù)庫tcl

以及還有更多、更多 - 請參考Tcl/Tk Wiki,特別是Tcl/Tk Wiki Database Category。

范例

下面是TCL科技程序的例子:

#!/bin/sh # next line restarts using tclsh in path \ exec tclsh $0 ${1+"$@"} # echo server that can handle multiple # simultaneous connections. proc newConnection { sock addr port } { # client connections will be handled in # line-buffered, non-blocking mode fconfigure $sock -blocking no -buffering line # call handleData when socket is readable fileevent $sock readable [ list handleData $sock ] } proc handleData { sock } { puts $sock [ gets $sock ] if { [ eof $sock ] } { close $sock } } # handle all connections to port given # as argument when server was invoked # by calling newConnection set port [ lindex $argv 0 ] socket -server newConnection $port # enter the event loop by waiting # on a dummy variable that is otherwise # unused. vwait forever 另外一個TK的例子(來自A simple A/D clock)它使用了定時器時間,3行就顯示了一個時鐘。

proc every {ms body} {eval $body; after $ms [info level 0]} pack [label .clock -textvar 時間] every 1000 {set ::time [clock format [clock sec] -format %H:%M:%S]} ;# RS 解釋:第一行定義了過程every,每隔ms毫秒,就重新執(zhí)行body代碼。第二行創(chuàng)建了標(biāo)簽其內(nèi)容由time變量決定。第3行中設(shè)置定時器,time變量從當(dāng)前時間中每秒更新一次。

TCL科技/tk是Python等語言默認(rèn)的圖形界面.

參考資料 >

生活家百科家居網(wǎng)