TCL的語言簡介
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寫的。
各種腳本語言,比如shell和tcl、perl有啥區別呢
tcl沒用過,就說說shell和perl吧。
shell類似于dos中的批處理,但很多shell也具備明顯的編程語言特征,變量、循環之類的都很完善。perl也是解釋性的腳本,相比shell已經是一個成熟而完整的語言,具備豐富的代碼庫。
由于絕大多數Unix/Linux實現都內置了perl,因此不需要考慮解釋執行環境的問題,如樓上所說,文本處理是perl的強項,其實perl可以做絕大多數應用,我用perl寫過聊天室、socket接口程序,簡單的http服務器,感覺確實非常方便,更重要的是perl執行效率遠遠高于shell,有的文本處理用shell腳本處理太慢的時候,用perl提升很大。一般情況下,可以把shell和perl結合起來用,比如對目錄下文件遍歷處理,perl可以做,但是不如shell簡單明了,文件本身處理則用perl來做,這樣往往可以取得性能和效率的平衡。
TCL語言的基本概念
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等命令驅動的外殼).
tcl 語言break和continue的區別
把100―200之間的的全部素數數輸出來。
# include "math.h"
main() { int m,k,r,n=0; for(m=101;m<=200;m=m+2;)
{if(n%10)printf("\n");
k=sqrt(m);
for(r=2;r<=1;r++)
if(m%r) break;
if(r>=k+1)
{printf("%d ",m);n=n+1;} } }
break和continue的區別是:
continue值結束本次循環,而不是中止整個循環的執行.而break語句則是結束整個循環過程,不再判斷循環條件是否成立.
TCL語言的具體例子
下面是TCL程序的例子:
#!/bin/sh
# next line restarts using tclsh in path \
exec tclsh ${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 whensocketis readable
fileevent $sock readable [ list handleData $sock ]
}
proc handleData {
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 {msbody} {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變量從當前時間中每秒更新一次。
Tcl被廣泛的用做script語言,大多數情況下,Tcl和Tk(“Tool Kit”)庫同時使用,Tk是一系列令Tcl易于編寫圖形用戶接口的命令和過程
Tcl的一個重要特性是它的擴展性。如果一個程序需要使用某些標準Tcl沒有提供的功能,可以使用c語言創造一些新的Tcl命令,并很容易的融合進去。正是由于Tcl易于擴展,很多人為它編寫了擴展包,并在網上共享。
Tcl和其他編程語言例如c不同,它是一種解釋語言而非編譯語言。Tcl程序由一系列Tcl命令組成,在運行時由Tcl解釋器解釋運行。解釋運行的一個優點是它可以自己為自己生成Tcl script。
TCL是什么意思
TCL集團股份有限公司創辦于1981年,總部位于中國南部的廣東省惠州市,在深圳和香港上市(深圳:TCL集團000100;香港:TCL國際1070)。
23年來,TCL集團發展的步伐迅速而穩健,特別是進入20世紀90年代以來,連續12年以年均42.65%的速度增長,是中國增長最快的工業制造企業之一。目前TCL集團主要從事彩電、手機、電話機、個人電腦、空調、冰箱、洗衣機、開關、插座、照明燈具等產品的研、產、銷和服務業務,其中彩電、手機、電話機、個人電腦等產品在國內市場具有領先優勢。
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變量從當前時間中每秒更新一次。