The History of Tcl/Tk

http://blog.csdn.net/ganxingming/archive/2006/09/11/1210067.aspx


Tcl/Tk
进度声明

我所知道的就这么多了,大家可以尽情的批评了!感觉“最新动态”一节还需要进一步完善。
版权声明

Tcl/Tk发展史一节的译文参考了网络上的一篇译文,原译者为sunny_ring(未做确认,不过,无论如何都要感谢原来的译者),不过这里给出的译文和原译文还是有很大的出入,包括一些关键词语和一些语句的翻译,如果有什么出入,请及时联系我。
概述

Tcl 是一种简单易学但功能强大的语言。它的语法可以用仅仅一打规则就可以描述清楚,但它具备了在应用的几乎任何领域进行快速创建实用程序所有必须的特征,并且这些应用可以基于广泛使用的国际化平台。

Tk 是为Tcl 开发的一个图形工具包(graphical toolkit)。你可以使用它开发运行在Windwos,Linux,MacOSX和其它许多平台的图形应用程序。

无论你是出色的hacker、应用程序、系统管理员还是科研工作者,或者仅仅是学生,你都可以使用Tcl。

目前,应用Tcl比较成功的公司包括BitMover、TiVo Inc.、Motorala、IBM、Oracle等。具体可以参考:http://www.tcl.tk/about/audience.html
开源协议

I Have To Give Away My Tcl Programs?

Programs you write in Tcl are your intellectual property, and you may sell, license, or give them away as you want. Most Tcl programs are distributed in source-code form, but there are source filters and other tools to render your program unreadable by the casual pirate.

On the other hand, be certain that you check the license of any extensions, tools, or distributions that you use during development. Just because Tcl and Tk are free doesn't mean that everything in the community is free.

 

在网上没有找到Tcl/Tk具体遵循的协议,不过在这里(即上面的原文)也可以找到一些论述。Tcl/Tk是免费的,但不是说在该社区里什么都是免费的。你用Tcl编写的程序属于你的智力产品,你可以销、许可(license)或者放弃它们。许多Tcl程序是以开放源代码的形式发布的,但是存在源码过滤器和其它一些工具,在没有获得授权的情况下,它们可以令你的程序不可读。

 
Tcl/Tk发展史

John K. Ousterhout(Tcl/Tk的开创人)曾在网上写了一篇名为《HISTORY OF TCL》的文章,原文详见附件,全文如下:

 

人们常常问我这样的问题,设计Tcl的灵感是什么,为什么它会变得这么受欢迎。本文将重温一下当年产生设计Tcl和Tk的想法,回顾Tcl和Tk在过去十年间发展的过程,以及我从伯克利到sun到scriptics的人生经历。你将看到,起初Tcl是很简陋的;这个系统的成功令我很吃惊,其实我也是通过回顾它的历史才开始明白Tcl流行的原因是什么。

 Tcl的诞生

 Tcl脚本语言诞生于我的集成电路设计工具项目,当时我在加州大学伯克利分校,时间是80年代初。我和我的学生已经为IC设计写了几个交互工具,如Magic和Crystal。每个工具都需要一个命令语言(在那个年代,人们需要键入命令才能使用这些工具;图形用户界面还没有被广泛的使用)。不过,我们的兴趣重点是工具而不是它们的命令语言,所以我们没有在命令语言上投入太多的精力,结果最终语言方面变得很薄弱。更糟的是,每个工具的语言之间是互不相通的,以至于每个工具最终都伴随着一个糟糕的命令语言。一段时间后,情况变得更糟。

1987年秋,在DEC西部研究室的周期性休息日中,我有了设计一种嵌入式命令语言的想法。这个想法就是花费额外的精力去创建一种优秀的解释型语言,然后进一步把它做成一个能够在许多不同的应用程序中可重复利用的库包(library package)。语言的解释器要提供一系列相对通用的工具,如变量,控制结构,过程。每个使用这个语言的程序都可以以扩展的形式把自己的特性加到该语言中,达到用该语言控制程序的目的。Tcl(Tool Command Language)这个名字就源自这种需求。

可嵌入性是Tcl的特色之一,为了实现这个想法,我准备在以下三个方面进行着手:

l         这个语言必须是可扩展的:它应该能够让每个应用程序可以很方便的把自己的特色加到语言的基本功能中,并且这种具体的应用程序的特色要看起来非常自然,就好像一开始这些特色就被设计到了这个语言中。

l         这个语言必须非常的简单通用,能很方便的与许多不同的应用程序配合工作,并且不会限制应用程序所能提供的功能。

l         由于大部分出色的功能都来自于应用程序,所以这个语言的首要目的就是将扩展部件集成或“胶合”在一起。因此这种语言必须要有很好的集成特性。

1988年初,假期一结束,我开始研究Tcl,1988年春天的时候,我开始在一个图形化的文本编辑器中使用第一版的Tcl。那时我已经暂停了IC设计工具的研究工作,所以有关Tcl的实验大部分还在理论研究阶段:我当时认为除了我,没有人会对一种嵌入式命令语言感兴趣。

 Tk的诞生

 那时,我的另一个爱好就是图形用户界面。80年代图形用户界面逐渐流行的时候,我注意到交互式软件的复杂性正在迅速的增长。最有趣的是新的开发似乎需要巨额投资的大型工程项目的支持。作为一名只具有有限资源的教授,这令我担心:象我的研究小组一样的小团队是不是不再可能构建出创新型交互系统?

我得出的结论是,我们的唯一希望就是减少创建大型系统时除可重用组件以外的部分对资源的需求。如果一个系统的复杂性大部分在组件里,并且我们可以在系统间进行移植,也许我们就可以以小团队的规模来创建强大的系统。这要求花费很多精力去开发这些组件,但是,经过一段时间这项工作是可以逐渐完成的,或许几个小团队一起合作完成。

我同时深信,对集成这些组件而言,除非有一种强大并具有弹性的机制,否则,基于组件的设计不会成功。这些想法在我一开始考虑做Tcl的时候就产生了,我觉得像Tcl这样的嵌入式命令语言作为脚本语言对集成组件也会有用。我决定创建一个GUI组件集合作为对Tcl的扩展并且使用Tcl把这些组件集成到图形用户界面,从而来验证我的这个理论。这个扩展就成为了Tk。

我1988年末才开始做Tk,这只是一个兼职的项目,所以花费了大概两年的时间才使Tk具有了足够的实用功能。

 发布初期

 我已经记不清把Tcl介绍给大家的确切时间了。截止到1989年,我已经在几个工程中使用了Tcl,我记得我在伯克利工业联络会议(Berkeley Industrial Liaison Conference)期间做了一个关于Tcl的报告,那时,几百位来自工业界的人士来到伯克利听我们系的研究成果。,我又在对Tcl感兴趣的几家公司做了相关的Tcl报告来招待他们,在这几次报告中,一些人询问了他们是否可以得到Tcl的拷贝。无论如何,我在1989年把几份拷贝给了最早的好奇者。

1990年1月,我在USENIX会议上宣读了一篇关于Tcl的论文。参会的有几百人,并且他们对Tcl产生了浓厚的兴趣,许多人开始向我要Tcl的拷贝。大约在那个时候,我决定在伯克利的FTP站点上免费发放Tcl的源代码。从此,通过因特网,Tcl的用户开始与日俱增。

出席USENIX会议的其中一个人是国家标准和技术协会的Don Libes。一段时间以来Don想编写一个程序,这个程序能够自动的操作交互的UNIX应用程序,但这需要一种优秀的命令语言,而Don没有时间自己编写这样的一个语言,于是这个项目只能搁置在一边。听了我的演讲后,Don立即跑回家,下载了Tcl,编写了一个叫做Expect的非常优秀的程序,并且赶在下一次USENIX会议提交论文的最后期限之前完成了一篇关于它的论文。整个过程只用了三个星期。Don在1990年夏发表了他的论文之后,把Expect免费的提供给人们使用,于是在系统管理员界立即引起了一场不小的震动。Expect不仅是第一个广泛发布的Tcl应用程序,而且多年来一直也是最流行的。许多早期的Tcl用户都是通过使用Expect来学习Tcl。

在1990年末,可以使用Tk的基本功,1991年1月,我同时在USENIX会议和X大会上发表了一篇关于Tk的论文。这两次会议期间的几个星期中,我发布了Tk的第一个网络版本。Tk的第一版缺少许多重要的组件(比如,没有多行文本框组件),不过到了1992年夏天的时候,我就把文本框组件和一个强大的画布组件加了进去。这时Tk的用户开始迅速增长。

 开始流行

 Tcl/Tk的用户在90年代初每年都在迅速增加,从1989年的几个使用者到1993年的几万使用者。这种迅速增长的原因主要有两个方面。

Tcl/Tk使用者增加的第一个原因是:它提供了最简单的在UNIX(那时Tcl只能在UNIX系统下运行)下开发图形用户界面的方法。Tk的GUI工具既简单又强大;可以完全由Tcl而不用写一句C代码来编写感兴趣的应用程序。换成基于C的工具来开发比如Motif工具包则要变得复杂得多,而且功能也比较少。人们很快就认识到,用Tcl来开发GUI比用Motif可以少投入5到10倍的精力。这也证明了在工业界有许多人和我一样很关心开发交互式应用程序的高开支问题。

Tcl流行的第二个原因是它的可嵌入特性。在我开始做Tcl的时候,我猜想除了我没有人会关心可嵌入式的命令语言,但是我错了。包括Don Libes在内的许多人都想要编写脚本式的可扩展的应用程序,但却没有时间自己来创建这么一种语言。正因为可嵌入式的特性,Tcl为他们提供了一个完美的解决方案。因而,Tcl最终被广泛的用于股票交易,科学观测,生产自动化等许多领域。

在Tcl用户社区每一两年都会有对Tcl和Tk的使用的讨论。许多Tcl的使用者认为Tk是他们使用Tcl的唯一原因。他们中的一些甚至不喜欢Tcl语言,而希望Tk能够和其他的脚本语言结合。(实际上,已经有人这么做了,如Tkperl和Python)。而另一部分人认为Tcl正是他们的需求所在,他们把它作为可嵌入式的脚本语言来使用,并且正是因为能够达到这个目的才让他们喜欢上了这个语言的小道具(afreez注:指Tk)。从某种意义上说,这两部分人都没错。

 Tcl社区

 90年代初随着Tcl使用者的增加,人们在网上建立了一个关于这门语言的社区,目的是让大家发布功能强大的扩展和为新的用户提供帮助。Mark Diekhans和Karl Lehenbauer是早期开创者中的两位。他们编写了Tclx,最早免费可用的Tcl扩展之一。Tclx提供了对文件的访问,时间和日期控制,以及许多其它有用的功能。随着时间的推移,Tclx的功能被证明是非常重要的,以至于其中的许多功能已经被整合到了Tcl的基本功能中。

许多早期的Tcl倡导者编写了高质量的扩展并使这些扩展能够免费的使用。比如Michael Mclennan编写的[incr Tcl],一种在Tcl内部提供面向对象编程的扩展。George Howlett编写的BLT,为Tk加进了几个重要的组件。Tom Poindexter编写的Sybtcl和Oratcl,提供了对主流数据库的访问。Brian Smith和Lary Rowe编写的TclDP,提供了Socket访问及一些分布式编程特性。还有许多贡献者我已经记不太清了,在此我只能表示歉意。

社区中其它的论坛在这个时期也在发展。我起初为社区中的用户建立了一个邮件列表,但是短短几年里,这个列表变得相当冗长,以至于后来无法控制。在Tcl社区的帮助下,我们建立了comp.lang.tcl新闻组来代替原来的邮件列表;从此,它就成为了信息交流和讨论Tcl新功能的绝佳论坛。

1993年Larry Rowe意识到社区中的人们需要面对面的交流,于是他在伯克利组织了第一届Tcl专题讨论会。大约有60人参加,由于这次大会开得非常成功,所以成为了年会。1995年,USENIX协会开始对这个讨论会进行资助;从此,它就变为了一个有几百人参加的,发表大量论文、教程,开展众多活动的全方位的大会。Tcl大会也是世界上最大的参加者上身着装统一的大会之一,每年要分发5-10种不同设计图案的T-shirt来区别不同的扩展和活动等。

在这段时间里,我大约每6到10个月发布一次Tcl/Tk的新版本。大部分新的功能都是采用的Tcl社区的建议;有时,使用者甚至直接给我提供新功能的原型代码(prototype code),然后,我再把它集成到核心软件中。典型的新版本发布流程是,开始大家开始讨论一段时间,同时我提供一份新功能的候选列表,然后在社区中由大家投票选出他们认为最重要的功能。我尽可能优先考虑得票最多的功能。

 Ouster-投票

 后来Tcl的发布周期就慢慢趋向于和Tcl大会保持一致。新版本发布的时间大概和大会的时间相当,大会上我会利用一个专门的议程去讨论下一个版本的新特征并取得反馈信息。我经常让与会者即兴的举手表决,统计一下听众对一些问题的想法,然后对举手的人数做个大概的统计(“10,20,30,…,看起来我大约得了35票”)。这些票数被大家称之为“ouster-投票”,得票数的正确性也常常被大家讨论的话题。一些爱说笑的人也含沙射影说我这个投票方法也不怎么太客观….

 在sun公司的日子

 1994年我决定离开伯克利投身工业界。过去我就一直想在工业界做兼职工作,在学术界干了14年,现在我看时机已经成熟了。在考虑了多方面的因素后,我决定接受sun公司的邀请。Eric Schmidt,sun公司的首席技术官,和Bert Sutherland,sun实验室的领导者,给我提供了一个机会,在sun实验室创立一个小组,将Tcl开发成因特网上通用的脚本语言。

我一直觉得Tcl最终需要进行商业赢利才能在长远的开发中生存下来,sun公司为Tcl向更高性能的发展提供了很好的机会。

我在1994年5月加入sun公司,然后组建了一个Tcl开发小组。在以后的3年里,sun的Tcl小组成员发展到了12人。以前基本上Tcl/tk的每一行代码都有我亲自来编写,但是从那以后,编写Tcl代码的工作就移交给Tcl小组的其他成员来完成了。

Sun公司提供的许多帮助使我们对Tcl/Tk的性能进行了大规模的提升。Scott Stanton 和Ray Johnson将Tcl/Tk移植到了Windows和Macintosh,于是Tcl就成了一个出色的跨平台的开发环境;当前,超过2/3下载Tcl的用户是用于Windows开发。Jacob Levy和Scott Stanton仔细测试了输入输出系统并加进了对Socket的支持,于是Tcl可以被广泛的用于网络应用程序。Brian Lewis为Tcl脚本创建了一个字节码(bytecode)编译器,这使它的运行速度提升了10倍。Jacob Levy开发了Safe-Tcl,一个强大的安全模型,使非信任的脚本能更安全的执行。Jacob Levy和Laurent Demailly创建了一个Tcl插件,使Tcl脚本可以在web浏览器中运行,我们创建了Jacl和TclBlend,使Tcl和Java可以紧密的工作在一起。我们还进行了一些小的改进,如动态加载,名称空间,时间和日期支持,二进制I/O,额外的文件操作命令,和一个改进的字体机制。

当我加盟sun后,许多人担心Tcl是否会变成一个私有的语言,当时在comp.lang.tcl上出现了许多热烈的讨论。幸运的是,sun公司同意在源代码论坛中继续发放Tcl/Tk的核心代码库,并且sun一直信守诺言。随着性能不断提升的新版本的出现,事实证明,Sun对Tcl的支持是不容质疑的,它使得比该语言的发展速度超过以前任何时候。起初那些担心逐渐被开发新功能的热情所代替。

这些年,Tcl的使用者继续地爆炸式增长。到1997年已经有了数十万的Tcl开发者;sun公司的FTP站点的Tcl下载率由1995年底的2000人每星期上升到1998年初的超过10000人每星期。很明显,Tcl对我是一个巨大的商业机会。Tcl开放源代码的发展满足不了Tcl社区中的许多要求。比如,几乎没有开发Tcl的工具,像培训和技术支持这样的专业服务也仅仅是零散进行的。许多重要的扩展,如对ActiveX和CORBA的支持还没有编写出来。

 Scriptics(afreez注:公司的名字)

 1997年底,为了更好的发展Tcl,我决定离开sun创建一个完全关注于Tcl的公司。1998年1月,我和Sarah Daniels创建了Scriptics(即今天的 Tcl),由Sarah负责市场和营销。一个月内,sun公司Tcl小组的约一半成员都跳槽加入了我们公司,我们开始开发TclPro,一套包括我们最初产品的开发工具。TclPro 1.0 于1998年9月完成。它在市场上的成功为公司的发展注入了强大的动力。

Scriptics已经取代了sun公司在开发Tcl核心工具上的角色,并且它将继续像sun公司那样免费的发布它。1998年,Scriptics为Tcl8.0做了一些改进,修复了一些错误并加进了一些小的功能,比如可以更好的支持[Incr Tcl]扩展。1999年4月,Tcl发布了第一个最重要的开放源码的版本,Tcl/Tk8.1。这个版本加进了对Unicode的支持(国际化),线性安全(用于多线程服务程序)和一个由Henry Spencer开发的全新的规则表达式包,该包包含了许多新的特性,也支持Unicode。Tcl成为第一个满足企业中关键程序各方面要求的脚本语言。

Tcl:获过大奖的软件

  1998年春, 我听到了令人振奋的消息,Tcl获得了两项大奖。一个是ACM软件系统大奖,奖给每年的“具有长远影响的软件系统”。以往这个奖项的获得者包括许多重要的系统如TCP/IP协议,第一个线性表,第一个电子制表软件,第一个关系数据库,万维网,Unix系统,PostScript,Smalltalk。另一个是USENIX软件工具用户组织(STUG)大奖,这个奖项奖给年度优秀的软件工具。

Tcl核心团队的成立

 这一部分由Jeff Hobbs和其他人添加

 Scriptics于2000年5月更名为Ajuba解决方案(Ajuba Solutions),反映了公司的发展重点放在了一系列的基于Tcl的XML技术。Ajuba创建了基于Tcl的企业版的XML类服务器软件,从这个方面来说,由于Tcl的成功,Ajuba也成为了牺牲品,之所以这么说是因为这个原因,后来它被Interwoven于2000年10月收购。不过Interwoven对开放源码的软件不感兴趣,他们只关注XML和服务器技术。

在2000年的七月到十月期间,核心开发的“所属权”发生了转变,它从一个单独的组织中脱离出来,属于了一个广泛的团队而不再属于任何一个单独的组织,并被广为传播。Tcl核心团队(Tcl Core Team)成立了,并建立了它的基本运行程序。

有关Tcl的教程也得益于包含它的许多公司。一个典型的例子就是,Jeff Hobbs,前Tcl Scriptics/Tcl的代理人,跳槽到ActiveState(以发布Perl的产品和开发闻名)来领导他们的Tcl技术部,他的工作不仅在开源Tcl核心上,而且也推进了许多由Scriptics开创的商业开发工具的发展。

  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值