fbpx
维基百科

Tcl

Tcl(发音tickle)是一种脚本语言。由John Ousterhout英语John Ousterhout创建。TCL经常被用于快速原型开发 RAD、脚本编程、GUI编程和测试等方面。

Tcl
编程范型多泛型面向对象函数式过程式事件驱动指令式
設計者John Ousterhout英语John Ousterhout
實作者John Ousterhout、Tcl核心團隊
发行时间1988年
当前版本
  • 8.6.13 (2022年11月22日;穩定版本)[1]
型態系統动态类型、万物皆可视作字符串
文件扩展名.tcl
網站www.tcl.tk
主要實作產品
ActiveTcl
啟發語言
AWKLisp
影響語言
PowerShell[2]Tea英语Tea (programming language)

特性 编辑

Tcl 的特性包括:

  • 任何东西都是一条命令,包括语法结构(for、if等),以波兰表示法书写。
  • 命令通常可变。
  • 任何事物都可以重新定义和重载。
  • 所有的数据类型都可以看作字符串,包括源代码。
  • 拥有完全动态、基于类的对象系统 TclOO,支持包括元类、过滤器和mixin在内的高级功能。
  • 提供事件驱动套接字文件。基于时间或者用户定义的事件也可以。
  • 默认的变量作用域是词法作用域,但 uplevel 和 upvar 允许过程与封闭的函数作用域交互。
  • 所有的内置命令会在误用时产生错误消息。
  • 很容易用 C、C++ 或者 Java 扩展。
  • 解释语言,支持字节码
  • 完全的 Unicode (3.1)支持,1999 年首次发布。
  • 跨平台。支持 Win32UNIXLinuxMac 等。
  • 和GUI开发套件 Tk 紧密集成。
  • 代码紧凑,易于维护。
  • 存在多种发行版:
    • Batteries-Included 版本,如 ActiveState ActiveTcl
    • tclkit,一种单文件运行时环境,仅有 1 兆大小
    • starpack,脚本/程序的单文件的可执行文件,派生自 tclkit 技术
    • freewrapTCLSH[3] 将 Tcl 脚本打包为单个可执行二进制文件。
    • BSD licenses,自由可再发行的源代码。

旧版 Tcl 没有内置面向对象功能,因此许多 OO 库以扩展形式涌现出来,如 incr Tcl 和 XOTcl,甚至存在纯脚本编写的 OO 包,如 Snit 和 STOOOP(simple Tcl-only object-oriented programming),8.6 版本在内核中提供了 OO 功能[4]

Safe-Tcl 是功能受限的 Tcl 子集。文件系统访问受限,任意系统命令禁止执行。它使用双解释器模型,在“不可信解释器”中运行不可信脚本中的代码。由 Nathaniel Borenstein 和 Marshall Rose 设计,借以在电子邮件中包含活动信息,当支持 application/safe-tclmultipart-enabled-mail 时,Safe-Tcl 即可包含于电子邮件中。Safe-Tcl 功能已整合在标准 Tcl/Tk 发布中。[5][6]

扩展包 编辑

Tcl 支持扩展包,这些扩展包提供了附加功能(像是GUI,终端程序自动化,数据库访问等)。常用的扩展包有:

Tk
Tk 工具包是最流行的 Tcl 扩展,在多种操作系统上提供图形用户界面。每个 GUI 由一个或多个框架(framework)组成,每个框架内含布局管理器。
Expect
Expect是另外一种非常流行的 Tcl 扩展。早期,Expect 对 Tcl 在多种领域的流行居功甚伟,如在测试领域中,时至今日 Expect 依然被大量使用于 telnet、ssh 与串口会话的重复任务自动化,即对仅有终端交互接口的程序进行编程。Tcl 是运行 Expect 的唯一方式,因此 Tcl 在此类工业领域中十分流行。
Tile/Ttk
Tile/Ttk[7] 是风格和主题化控件集,可替代 Tk 中大多数控件,真正调用操作系统API 实现原生界面。这种方式提供的主题包括 Windows XP、Windows Classic、QtAqua(Mac OS X)。主题也可使用图片 pixmap 加上一定定义构造,避免调用系统 API。以这种方式创建的主题有 Classic Tk、Step、Alt/Revitalized、Plastik 和 Keramik。Tcl 8.4 中,此包称作 Tile,在 8.5 中以 Ttk 的名字进入 Tk 核心发布。
Tix
Tix(Tk Interface eXtension)是一套开源的、用于扩充 Tcl/Tk 和 Python 应用程序功能的用户界面组件。由 Tix Project Group 维护,以 BSD 风格许可发布。[8]
Itcl/IncrTcl
Itcl 是 Tcl 诸多对象系统中的一种,通常称为 [incr Tcl](递增 Tcl 之意,类似 C++ 之名)。
Tcllib
Tcllib 是一套纯脚本 Tcl 包,无需编译。
TclUDP
TclUDP[9] 提供简捷的方式支持 UDP 套接字。
数据库
Tcl 数据库互联(Tcl Database Connectivity,TDBC)是 Tcl 8.6 的一部分,为 Tcl 脚本提供常用数据库的访问接口,目前驱动器支持 MySQLODBCPostgreSQLSQLite 数据库。更多数据库已经有了计划。同样,也可使用许许多多数据库专用的扩展包访问数据库。[10]

範例 编辑

下面是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 的例子(来自)它使用了定时器时间,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变量从当前时间中每秒更新一次。

参考资料 编辑

  1. ^ https://sourceforge.net/p/tcl/mailman/message/37738603/.
  2. ^ PowerShell and WPF: WTF. [2022-03-06]. (原始内容于2008-12-25). 
  3. ^ freewrapTCLSH(页面存档备份,存于互联网档案馆
  4. ^ 8.6 版本在内核中提供了 OO 功能(页面存档备份,存于互联网档案馆
  5. ^ Brown, Lawrie. Mobile Code Security. Terry Bossomaier, Lucy Chubb (编). Proceedings, 2nd Joint Conference, AUUG '96 and Asia-Pacific WWW '96. Melbourne, Australia: 50. September 18–20, 1996 [2011-03-22]. (原始内容于2011-05-11). 
  6. ^ Welch, Brent B.; Jones, Ken; Hobbs, Jeffrey. Practical programming in Tcl and Tk 1 4th. Prentice Hall PTR. 2003: 291. ISBN 0-13-038560-3. 
  7. ^ . ActiveTcl. [August 7, 2012]. (原始内容存档于2014-07-13). 
  8. ^ Tix License. Sourceforge. [August 7, 2012]. (原始内容于2013-03-22). 
  9. ^ TCL UDP. Tcl'ers Wiki. [August 7, 2012]. (原始内容于2015-01-04). 
  10. ^ TDBC. Tcl'ers Wiki. [August 7, 2012]. (原始内容于2009-05-29). 

外部链接 编辑

此条目的主題是一种编程语言, 关于与, 標題相近或相同的条目, 請見, 发音tickle, 是一种脚本语言, 由john, ousterhout, 英语, john, ousterhout, 创建, tcl经常被用于快速原型开发, 脚本编程, gui编程和测试等方面, 编程范型多泛型, 面向对象, 函数式, 过程式, 事件驱动, 指令式設計者john, ousterhout, 英语, john, ousterhout, 實作者john, ousterhout, 核心團隊发行时间1988年当前版本8, 2022年11. 此条目的主題是一种编程语言 关于与 Tcl 標題相近或相同的条目 請見 TCL Tcl 发音tickle 是一种脚本语言 由John Ousterhout 英语 John Ousterhout 创建 TCL经常被用于快速原型开发 RAD 脚本编程 GUI编程和测试等方面 Tcl编程范型多泛型 面向对象 函数式 过程式 事件驱动 指令式設計者John Ousterhout 英语 John Ousterhout 實作者John Ousterhout Tcl核心團隊发行时间1988年当前版本8 6 13 2022年11月22日 穩定版本 1 型態系統动态类型 万物皆可视作字符串文件扩展名 tcl網站www tcl tk主要實作產品ActiveTcl啟發語言AWK Lisp影響語言PowerShell 2 Tea 英语 Tea programming language 目录 1 特性 2 扩展包 3 範例 4 参考资料 5 外部链接特性 编辑Tcl 的特性包括 任何东西都是一条命令 包括语法结构 for if等 以波兰表示法书写 命令通常可变 任何事物都可以重新定义和重载 所有的数据类型都可以看作字符串 包括源代码 拥有完全动态 基于类的对象系统 TclOO 支持包括元类 过滤器和mixin在内的高级功能 提供事件驱动给套接字和文件 基于时间或者用户定义的事件也可以 默认的变量作用域是词法作用域 但 uplevel 和 upvar 允许过程与封闭的函数作用域交互 所有的内置命令会在误用时产生错误消息 很容易用 C C 或者 Java 扩展 解释语言 支持字节码 完全的 Unicode 3 1 支持 1999 年首次发布 跨平台 支持 Win32 UNIX Linux Mac 等 和GUI开发套件 Tk 紧密集成 代码紧凑 易于维护 存在多种发行版 Batteries Included 版本 如 ActiveState ActiveTcl tclkit 一种单文件运行时环境 仅有 1 兆大小 starpack 脚本 程序的单文件的可执行文件 派生自 tclkit 技术 freewrapTCLSH 3 将 Tcl 脚本打包为单个可执行二进制文件 BSD licenses 自由可再发行的源代码 旧版 Tcl 没有内置面向对象功能 因此许多 OO 库以扩展形式涌现出来 如 incr Tcl 和 XOTcl 甚至存在纯脚本编写的 OO 包 如 Snit 和 STOOOP simple Tcl only object oriented programming 8 6 版本在内核中提供了 OO 功能 4 Safe Tcl 是功能受限的 Tcl 子集 文件系统访问受限 任意系统命令禁止执行 它使用双解释器模型 在 不可信解释器 中运行不可信脚本中的代码 由 Nathaniel Borenstein 和 Marshall Rose 设计 借以在电子邮件中包含活动信息 当支持 application safe tcl 与 multipart enabled mail 时 Safe Tcl 即可包含于电子邮件中 Safe Tcl 功能已整合在标准 Tcl Tk 发布中 5 6 扩展包 编辑Tcl 支持扩展包 这些扩展包提供了附加功能 像是GUI 终端程序自动化 数据库访问等 常用的扩展包有 Tk Tk 工具包是最流行的 Tcl 扩展 在多种操作系统上提供图形用户界面 每个 GUI 由一个或多个框架 framework 组成 每个框架内含布局管理器 Expect Expect是另外一种非常流行的 Tcl 扩展 早期 Expect 对 Tcl 在多种领域的流行居功甚伟 如在测试领域中 时至今日 Expect 依然被大量使用于 telnet ssh 与串口会话的重复任务自动化 即对仅有终端交互接口的程序进行编程 Tcl 是运行 Expect 的唯一方式 因此 Tcl 在此类工业领域中十分流行 Tile Ttk Tile Ttk 7 是风格和主题化控件集 可替代 Tk 中大多数控件 真正调用操作系统的 API 实现原生界面 这种方式提供的主题包括 Windows XP Windows Classic Qt 和 Aqua Mac OS X 主题也可使用图片 pixmap 加上一定定义构造 避免调用系统 API 以这种方式创建的主题有 Classic Tk Step Alt Revitalized Plastik 和 Keramik Tcl 8 4 中 此包称作 Tile 在 8 5 中以 Ttk 的名字进入 Tk 核心发布 Tix Tix Tk Interface eXtension 是一套开源的 用于扩充 Tcl Tk 和 Python 应用程序功能的用户界面组件 由 Tix Project Group 维护 以 BSD 风格许可发布 8 Itcl IncrTcl Itcl 是 Tcl 诸多对象系统中的一种 通常称为 incr Tcl 递增 Tcl 之意 类似 C 之名 Tcllib Tcllib 是一套纯脚本 Tcl 包 无需编译 TclUDP TclUDP 9 提供简捷的方式支持 UDP 套接字 数据库 Tcl 数据库互联 Tcl Database Connectivity TDBC 是 Tcl 8 6 的一部分 为 Tcl 脚本提供常用数据库的访问接口 目前驱动器支持 MySQL ODBC PostgreSQL 和 SQLite 数据库 更多数据库已经有了计划 同样 也可使用许许多多数据库专用的扩展包访问数据库 10 範例 编辑下面是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 time every 1000 set time clock format clock sec format H M S RS 解释 第一行定义了过程every 每隔ms毫秒 就重新执行body代码 第二行创建了标签其内容由time变量决定 第3行中设置定时器 time变量从当前时间中每秒更新一次 参考资料 编辑 https sourceforge net p tcl mailman message 37738603 PowerShell and WPF WTF 2022 03 06 原始内容存档于2008 12 25 freewrapTCLSH 页面存档备份 存于互联网档案馆 8 6 版本在内核中提供了 OO 功能 页面存档备份 存于互联网档案馆 Brown Lawrie Mobile Code Security Terry Bossomaier Lucy Chubb 编 Proceedings 2nd Joint Conference AUUG 96 and Asia Pacific WWW 96 Melbourne Australia 50 September 18 20 1996 2011 03 22 原始内容存档于2011 05 11 Welch Brent B Jones Ken Hobbs Jeffrey Practical programming in Tcl and Tk 1 4th Prentice Hall PTR 2003 291 ISBN 0 13 038560 3 TK Table Sourceforge Project ActiveTcl August 7 2012 原始内容存档于2014 07 13 Tix License Sourceforge August 7 2012 原始内容存档于2013 03 22 TCL UDP Tcl ers Wiki August 7 2012 原始内容存档于2015 01 04 TDBC Tcl ers Wiki August 7 2012 原始内容存档于2009 05 29 外部链接 编辑維基教科書中的相關電子教程 Tcl 编程维基共享资源中相关的多媒体资源 Tcl官方网站 nbsp Tcl Sources 页面存档备份 存于互联网档案馆 main Tcl and Tk source code download website Tcler s Wiki 页面存档备份 存于互联网档案馆 TkDocs 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Tcl amp oldid 77666054, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。