<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Tcl</id>
	<title>Tcl - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Tcl"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Tcl&amp;action=history"/>
	<updated>2026-07-16T22:28:29Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Tcl&amp;diff=12960&amp;oldid=prev</id>
		<title>imported&gt;Upojzsb：​使用DisamAssist清理消歧义链接：MAC（链接至MacOS）。</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Tcl&amp;diff=12960&amp;oldid=prev"/>
		<updated>2023-06-13T11:10:19Z</updated>

		<summary type="html">&lt;p&gt;使用&lt;a href=&quot;/index.php?title=User:%E6%9A%81%E6%9C%88%E5%87%9B%E5%A5%88/DisamAssist&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:暁月凛奈/DisamAssist（页面不存在）&quot;&gt;DisamAssist&lt;/a&gt;清理&lt;a href=&quot;https://en.wikipedia.org/wiki/%E6%B6%88%E6%AD%A7%E4%B9%89&quot; class=&quot;extiw&quot; title=&quot;wikipedia:消歧义&quot;&gt;消歧义&lt;/a&gt;链接：&lt;a href=&quot;/wiki/MAC&quot; title=&quot;MAC&quot;&gt;MAC&lt;/a&gt;（链接至&lt;a href=&quot;/wiki/MacOS&quot; title=&quot;MacOS&quot;&gt;MacOS&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA|G1=IT}}&lt;br /&gt;
{{Other uses|subject=一种编程语言|TCL}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
| name                   = Tcl&lt;br /&gt;
|logo                    = File:Tcl-powered.svg&lt;br /&gt;
|logo size               = 100px&lt;br /&gt;
| paradigm               = [[多泛型]]、[[面向对象程序设计|面向对象]]、[[函数式编程|函数式]]、[[过程式编程|过程式]]、[[事件驱动程式设计|事件驱动]]、[[指令式编程|指令式]]&lt;br /&gt;
| released               = 1988年&lt;br /&gt;
| designer               = {{le|John Ousterhout}}&lt;br /&gt;
| developer              = John Ousterhout、Tcl核心團隊&lt;br /&gt;
| latest_release_version = 8.6.13&lt;br /&gt;
| latest_release_date    = {{Start date and age|2022|11|21}}&lt;br /&gt;
| latest preview version = 8.7a5&lt;br /&gt;
| latest preview date    = {{Start date and age|2021|06|14}}&lt;br /&gt;
| typing                 = [[动态类型]]、万物皆可视作[[字符串]]&lt;br /&gt;
| implementations        = ActiveTcl&lt;br /&gt;
| dialects               = &lt;br /&gt;
| influenced_by          = [[AWK]]、[[Lisp]]&lt;br /&gt;
| influenced             = [[Windows PowerShell|PowerShell]]&amp;lt;ref&amp;gt;{{Cite web |url=https://devblogs.microsoft.com/powershell/powershell-and-wpf-wtf/ |title=PowerShell and WPF: WTF |accessdate=2022-03-06 |archive-date=2008-12-25 |archive-url=https://web.archive.org/web/20081225093003/http://blogs.msdn.com/powershell/archive/2008/05/25/powershell-and-wpf-wtf.aspx |dead-url=no }}&amp;lt;/ref&amp;gt;、{{tsl|en|Tea (programming language)|Tea}}&lt;br /&gt;
| website                = [http://www.tcl.tk www.tcl.tk]&lt;br /&gt;
| file_ext               = .tcl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tcl&amp;#039;&amp;#039;&amp;#039;（发音tickle）是一种[[脚本语言]]。由{{le|John Ousterhout}}创建。TCL经常被用于快速原型开发 [[快速應用程式開發|RAD]]、脚本编程、GUI编程和测试等方面。&lt;br /&gt;
&lt;br /&gt;
==特性==&lt;br /&gt;
&lt;br /&gt;
Tcl 的特性包括：&lt;br /&gt;
&lt;br /&gt;
*任何东西都是一条命令，包括语法结构（for、if等），以[[波兰表示法]]书写。&lt;br /&gt;
*命令通常可变。&lt;br /&gt;
*任何事物都可以重新定义和重载。&lt;br /&gt;
*所有的数据类型都可以看作字符串，包括源代码。&lt;br /&gt;
*拥有完全动态、基于类的对象系统 TclOO，支持包括元类、过滤器和[[mixin]]在内的高级功能。&lt;br /&gt;
*提供[[事件驱动]]给[[套接字]]和[[文件]]。基于时间或者用户定义的事件也可以。&lt;br /&gt;
*默认的变量作用域是词法作用域，但 [[uplevel]] 和 [[upvar]] 允许过程与封闭的函数作用域交互。&lt;br /&gt;
*所有的内置命令会在误用时产生错误消息。&lt;br /&gt;
*很容易用 C、C++ 或者 Java 扩展。&lt;br /&gt;
*解释语言，支持[[字节码]]。&lt;br /&gt;
*完全的 [[Unicode]] （3.1）支持，1999 年首次发布。&lt;br /&gt;
*跨平台。支持 [[Win32]]、[[UNIX]]、[[Linux]]、[[MacOS|Mac]] 等。&lt;br /&gt;
*和GUI开发套件 [[Tk]] 紧密集成。&lt;br /&gt;
*代码紧凑，易于维护。&lt;br /&gt;
*存在多种发行版：&lt;br /&gt;
**Batteries-Included 版本，如 ActiveState ActiveTcl&lt;br /&gt;
**tclkit，一种单文件运行时环境，仅有 1 兆大小&lt;br /&gt;
**starpack，脚本/程序的单文件的可执行文件，派生自 tclkit 技术&lt;br /&gt;
**freewrapTCLSH&amp;lt;ref&amp;gt;[http://freewrap.sourceforge.net/ freewrapTCLSH]{{Wayback|url=http://freewrap.sourceforge.net/ |date=20140629070854 }}&amp;lt;/ref&amp;gt; 将 Tcl 脚本打包为单个可执行二进制文件。&lt;br /&gt;
**[[BSD licenses]]，自由可再发行的源代码。&lt;br /&gt;
&lt;br /&gt;
旧版 Tcl 没有内置[[面向对象编程|面向对象]]功能，因此许多 OO 库以扩展形式涌现出来，如 [[incr Tcl]] 和 [[XOTcl]]，甚至存在纯脚本编写的 OO 包，如 [[Snit]] 和 [[STOOOP]]（simple Tcl-only object-oriented programming），8.6 版本在内核中提供了 OO 功能&amp;lt;ref&amp;gt;[http://www.tcl.tk/man/tcl8.6/TclCmd/class.htm#M13 8.6 版本在内核中提供了 OO 功能]{{Wayback|url=http://www.tcl.tk/man/tcl8.6/TclCmd/class.htm#M13 |date=20140420133114 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Safe-Tcl 是功能受限的 Tcl 子集。文件系统访问受限，任意系统命令禁止执行。它使用双解释器模型，在“不可信解释器”中运行不可信脚本中的代码。由 [[Nathaniel Borenstein]] 和 [[Marshall Rose]] 设计，借以在电子邮件中包含活动信息，当支持 &amp;#039;&amp;#039;application/safe-tcl&amp;#039;&amp;#039; 与 &amp;#039;&amp;#039;multipart-enabled-mail&amp;#039;&amp;#039; 时，Safe-Tcl 即可包含于电子邮件中。Safe-Tcl 功能已整合在标准 Tcl/Tk 发布中。&amp;lt;ref&amp;gt;{{cite conference | first=Lawrie | last=Brown | date=September 18–20, 1996 | page=50 | editors=Terry Bossomaier, Lucy Chubb | title=Mobile Code Security | location=Melbourne, Australia | booktitle=Proceedings, 2nd Joint Conference, AUUG &amp;#039;96 and Asia-Pacific WWW &amp;#039;96 | url=http://books.google.com/books?id=LP5CKyrp9WsC&amp;amp;pg=PA50 | accessdate=2011-03-22 | archive-date=2011-05-11 | archive-url=https://web.archive.org/web/20110511122746/http://books.google.com/books?id=LP5CKyrp9WsC&amp;amp;pg=PA50 | dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite book | author=Welch, Brent B.; Jones, Ken; Hobbs, Jeffrey | year=2003 | page=291 | title=Practical programming in Tcl and Tk | volume=1 | edition=4th | publisher=Prentice Hall PTR | isbn=0-13-038560-3 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 扩展包 ==&lt;br /&gt;
Tcl 支持扩展包，这些扩展包提供了附加功能（像是GUI，终端程序自动化，数据库访问等）。常用的扩展包有：&lt;br /&gt;
&lt;br /&gt;
; Tk: [[Tk]] 工具包是最流行的 Tcl 扩展，在多种[[操作系统]]上提供[[图形用户界面]]。每个 GUI 由一个或多个&amp;#039;&amp;#039;框架&amp;#039;&amp;#039;(framework)组成，每个&amp;#039;&amp;#039;框架&amp;#039;&amp;#039;内含布局管理器。&lt;br /&gt;
; Expect: [[Expect]]是另外一种非常流行的 Tcl 扩展。早期，Expect 对 Tcl 在多种领域的流行居功甚伟，如在测试领域中，时至今日 Expect 依然被大量使用于 telnet、ssh 与串口会话的重复任务自动化，即对仅有终端交互接口的程序进行编程。Tcl 是运行 Expect 的唯一方式，因此 Tcl 在此类工业领域中十分流行。&lt;br /&gt;
; Tile/Ttk: Tile/Ttk&amp;lt;ref name=&amp;quot;tktable1208&amp;quot;&amp;gt;{{cite web | url=http://tktable.sourceforge.net/ | title=TK Table Sourceforge Project | publisher=ActiveTcl | accessdate=August 7, 2012 | archive-date=2014-07-13 | archive-url=https://web.archive.org/web/20140713143733/http://tktable.sourceforge.net/ | dead-url=yes }}&amp;lt;/ref&amp;gt; 是风格和主题化控件集，可替代 Tk 中大多数控件，真正调用[[操作系统]]的 [[API]] 实现原生界面。这种方式提供的主题包括 [[Windows XP]]、Windows Classic、[[Qt (toolkit)|Qt]] 和 [[Aqua]]（Mac OS X）。主题也可使用图片 [[pixmap]] 加上一定定义构造，避免调用系统 API。以这种方式创建的主题有 Classic Tk、Step、Alt/Revitalized、Plastik 和 Keramik。Tcl 8.4 中，此包称作 Tile，在 8.5 中以 Ttk 的名字进入 Tk 核心发布。&lt;br /&gt;
; Tix: Tix（Tk Interface eXtension）是一套开源的、用于扩充 Tcl/Tk 和 Python 应用程序功能的用户界面组件。由 Tix Project Group 维护，以 BSD 风格许可发布。&amp;lt;ref name=&amp;quot;tixlic96&amp;quot;&amp;gt;{{cite web|url=http://tix.sourceforge.net/license.terms|title=Tix License|publisher=Sourceforge|accessdate=August 7, 2012|archive-date=2013-03-22|archive-url=https://web.archive.org/web/20130322231457/http://tix.sourceforge.net/license.terms|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; Itcl/IncrTcl: [[Itcl]] 是 Tcl 诸多对象系统中的一种，通常称为 [incr Tcl]（递增 Tcl 之意，类似 C++ 之名）。&lt;br /&gt;
; Tcllib: [[Tcllib]] 是一套纯脚本 Tcl 包，无需编译。&lt;br /&gt;
; TclUDP: TclUDP&amp;lt;ref name=&amp;quot;tcludp1109&amp;quot;&amp;gt;{{cite web | url=http://wiki.tcl.tk/8493 | title=TCL UDP | publisher=Tcl&amp;#039;ers Wiki | accessdate=August 7, 2012 | archive-date=2015-01-04 | archive-url=https://web.archive.org/web/20150104224943/http://wiki.tcl.tk/8493 | dead-url=no }}&amp;lt;/ref&amp;gt; 提供简捷的方式支持 [[用户数据报协议|UDP]] 套接字。&lt;br /&gt;
; 数据库: Tcl 数据库互联（Tcl Database Connectivity，TDBC）是 Tcl 8.6 的一部分，为 Tcl 脚本提供常用数据库的访问接口，目前驱动器支持 [[MySQL]]、[[ODBC]]、[[PostgreSQL]] 和 [[SQLite]] 数据库。更多数据库已经有了计划。同样，也可使用许许多多数据库专用的扩展包访问数据库。&amp;lt;ref name=&amp;quot;tdbc1202&amp;quot;&amp;gt;{{cite web|url=http://wiki.tcl.tk/20343|title=TDBC|publisher=Tcl&amp;#039;ers Wiki|accessdate=August 7, 2012|archive-date=2009-05-29|archive-url=https://web.archive.org/web/20090529121837/http://wiki.tcl.tk/20343|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 範例 ==&lt;br /&gt;
下面是TCL程序的例子：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Tcl&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# next line restarts using tclsh in path \&lt;br /&gt;
exec tclsh $0 ${1+&amp;quot;$@&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
# echo server that can handle multiple&lt;br /&gt;
# simultaneous connections.&lt;br /&gt;
&lt;br /&gt;
proc newConnection { sock addr port } {&lt;br /&gt;
&lt;br /&gt;
     # client connections will be handled in&lt;br /&gt;
     # line-buffered, non-blocking mode&lt;br /&gt;
     fconfigure $sock -blocking no -buffering line&lt;br /&gt;
&lt;br /&gt;
     # call handleData when socket is readable&lt;br /&gt;
     fileevent $sock readable [ list handleData $sock ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
proc handleData { sock } {&lt;br /&gt;
     puts $sock [ gets $sock ]&lt;br /&gt;
     if { [ eof $sock ] } {&lt;br /&gt;
        close $sock&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# handle all connections to port given&lt;br /&gt;
# as argument when server was invoked&lt;br /&gt;
# by calling newConnection&lt;br /&gt;
set port [ lindex $argv 0 ]&lt;br /&gt;
socket -server newConnection $port&lt;br /&gt;
&lt;br /&gt;
# enter the event loop by waiting&lt;br /&gt;
# on a dummy variable that is otherwise&lt;br /&gt;
# unused.&lt;br /&gt;
vwait forever&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一个 Tk 的例子（来自[https://web.archive.org/web/20020302153228/http://mini.net/tcl/2563.html A simple A/D clock]）它使用了定时器时间，3行就显示了一个时钟。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Tcl&amp;quot;&amp;gt;&lt;br /&gt;
 proc every {ms body} {eval $body; after $ms [info level 0]}&lt;br /&gt;
 pack [label .clock -textvar time]&lt;br /&gt;
 every 1000 {set ::time [clock format [clock sec] -format %H:%M:%S]} ;# RS&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
解释：第一行定义了过程every， 每隔ms毫秒，就重新执行body代码。第二行创建了标签其内容由time变量决定。第3行中设置定时器，time变量从当前时间中每秒更新一次。&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
{{wikibooks|Tcl 编程}}&lt;br /&gt;
{{commons category|Tcl programming language family}}&lt;br /&gt;
* {{Official website}}&lt;br /&gt;
* [http://core.tcl.tk/ Tcl Sources]{{Wayback|url=http://core.tcl.tk/ |date=20170505151934 }}, main Tcl and Tk source code download website&lt;br /&gt;
* [http://wiki.tcl.tk/ Tcler&amp;#039;s Wiki]{{Wayback|url=http://wiki.tcl.tk/ |date=20061219202818 }}&lt;br /&gt;
* [http://www.tkdocs.com/ TkDocs]{{Wayback|url=http://www.tkdocs.com/ |date=20170512012343 }}&lt;br /&gt;
&lt;br /&gt;
{{程序设计语言|Tcl}}&lt;br /&gt;
{{FOSS}}&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:美国发明]]&lt;br /&gt;
[[Category:跨平台軟體]]&lt;br /&gt;
[[Category:动态类型编程语言]]&lt;br /&gt;
[[Category:自由編譯器與直譯器]]&lt;br /&gt;
[[Category:面向对象的编程语言]]&lt;br /&gt;
[[Category:过程式编程语言]]&lt;br /&gt;
[[Category:面向文本编程语言]]&lt;br /&gt;
[[Category:同像性编程语言]]&lt;br /&gt;
[[Category:脚本语言]]&lt;br /&gt;
[[Category:Tcl编程语言家族]]&lt;br /&gt;
[[Category:1988年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Upojzsb</name></author>
	</entry>
</feed>