腳本語言 Tcl 介紹

openkk 12年前發布 | 49K 次閱讀 腳本/動態語言 C/C++

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本身在 8.6 以后提供面向對象的支持。因為語言本身很容易擴展到支持面向對象,所以在8.6之前存在許多C語言擴展提供面向對象能力,包括XOTcl, Incr Tcl 等。另外SNIT擴展本身就是用TCL寫的。

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

Tcl 支援擴充套件,這些擴充套件提供了額外的功能(像是 GUI,自動化,數據庫存取等)。

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

  • tclodbc
  • mk4tcl
  • sqlite
  • Pgtcl, pgintcl
  • mysqltcl, msqltcl
  • AdabasTcl
  • FBSQL
  • ibtcl
  • Oratcl
  • Sybtcl
  • db2tcl

示例代碼:

#!/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

項目主頁:http://www.baiduhome.net/lib/view/home/1325317352624

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!