The History of Tcl/Tk
生活随笔
收集整理的這篇文章主要介紹了
The History of Tcl/Tk
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://blog.csdn.net/ganxingming/archive/2006/09/11/1210067.aspx
Tcl/Tk
進(jìn)度聲明
我所知道的就這么多了,大家可以盡情的批評(píng)了!感覺(jué)“最新動(dòng)態(tài)”一節(jié)還需要進(jìn)一步完善。
版權(quán)聲明
Tcl/Tk發(fā)展史一節(jié)的譯文參考了網(wǎng)絡(luò)上的一篇譯文,原譯者為sunny_ring(未做確認(rèn),不過(guò),無(wú)論如何都要感謝原來(lái)的譯者),不過(guò)這里給出的譯文和原譯文還是有很大的出入,包括一些關(guān)鍵詞語(yǔ)和一些語(yǔ)句的翻譯,如果有什么出入,請(qǐng)及時(shí)聯(lián)系我。
概述
Tcl 是一種簡(jiǎn)單易學(xué)但功能強(qiáng)大的語(yǔ)言。它的語(yǔ)法可以用僅僅一打規(guī)則就可以描述清楚,但它具備了在應(yīng)用的幾乎任何領(lǐng)域進(jìn)行快速創(chuàng)建實(shí)用程序所有必須的特征,并且這些應(yīng)用可以基于廣泛使用的國(guó)際化平臺(tái)。
Tk 是為T(mén)cl 開(kāi)發(fā)的一個(gè)圖形工具包(graphical toolkit)。你可以使用它開(kāi)發(fā)運(yùn)行在Windwos,Linux,MacOSX和其它許多平臺(tái)的圖形應(yīng)用程序。
無(wú)論你是出色的hacker、應(yīng)用程序、系統(tǒng)管理員還是科研工作者,或者僅僅是學(xué)生,你都可以使用Tcl。
目前,應(yīng)用Tcl比較成功的公司包括BitMover、TiVo Inc.、Motorala、IBM、Oracle等。具體可以參考:http://www.tcl.tk/about/audience.html
開(kāi)源協(xié)議
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.
?
在網(wǎng)上沒(méi)有找到Tcl/Tk具體遵循的協(xié)議,不過(guò)在這里(即上面的原文)也可以找到一些論述。Tcl/Tk是免費(fèi)的,但不是說(shuō)在該社區(qū)里什么都是免費(fèi)的。你用Tcl編寫(xiě)的程序?qū)儆谀愕闹橇Ξa(chǎn)品,你可以銷(xiāo)、許可(license)或者放棄它們。許多Tcl程序是以開(kāi)放源代碼的形式發(fā)布的,但是存在源碼過(guò)濾器和其它一些工具,在沒(méi)有獲得授權(quán)的情況下,它們可以令你的程序不可讀。
?
Tcl/Tk發(fā)展史
John K. Ousterhout(Tcl/Tk的開(kāi)創(chuàng)人)曾在網(wǎng)上寫(xiě)了一篇名為《HISTORY OF TCL》的文章,原文詳見(jiàn)附件,全文如下:
?
人們常常問(wèn)我這樣的問(wèn)題,設(shè)計(jì)Tcl的靈感是什么,為什么它會(huì)變得這么受歡迎。本文將重溫一下當(dāng)年產(chǎn)生設(shè)計(jì)Tcl和Tk的想法,回顧Tcl和Tk在過(guò)去十年間發(fā)展的過(guò)程,以及我從伯克利到sun到scriptics的人生經(jīng)歷。你將看到,起初Tcl是很簡(jiǎn)陋的;這個(gè)系統(tǒng)的成功令我很吃驚,其實(shí)我也是通過(guò)回顧它的歷史才開(kāi)始明白Tcl流行的原因是什么。
?Tcl的誕生
?Tcl腳本語(yǔ)言誕生于我的集成電路設(shè)計(jì)工具項(xiàng)目,當(dāng)時(shí)我在加州大學(xué)伯克利分校,時(shí)間是80年代初。我和我的學(xué)生已經(jīng)為IC設(shè)計(jì)寫(xiě)了幾個(gè)交互工具,如Magic和Crystal。每個(gè)工具都需要一個(gè)命令語(yǔ)言(在那個(gè)年代,人們需要鍵入命令才能使用這些工具;圖形用戶界面還沒(méi)有被廣泛的使用)。不過(guò),我們的興趣重點(diǎn)是工具而不是它們的命令語(yǔ)言,所以我們沒(méi)有在命令語(yǔ)言上投入太多的精力,結(jié)果最終語(yǔ)言方面變得很薄弱。更糟的是,每個(gè)工具的語(yǔ)言之間是互不相通的,以至于每個(gè)工具最終都伴隨著一個(gè)糟糕的命令語(yǔ)言。一段時(shí)間后,情況變得更糟。
1987年秋,在DEC西部研究室的周期性休息日中,我有了設(shè)計(jì)一種嵌入式命令語(yǔ)言的想法。這個(gè)想法就是花費(fèi)額外的精力去創(chuàng)建一種優(yōu)秀的解釋型語(yǔ)言,然后進(jìn)一步把它做成一個(gè)能夠在許多不同的應(yīng)用程序中可重復(fù)利用的庫(kù)包(library package)。語(yǔ)言的解釋器要提供一系列相對(duì)通用的工具,如變量,控制結(jié)構(gòu),過(guò)程。每個(gè)使用這個(gè)語(yǔ)言的程序都可以以擴(kuò)展的形式把自己的特性加到該語(yǔ)言中,達(dá)到用該語(yǔ)言控制程序的目的。Tcl(Tool Command Language)這個(gè)名字就源自這種需求。
可嵌入性是Tcl的特色之一,為了實(shí)現(xiàn)這個(gè)想法,我準(zhǔn)備在以下三個(gè)方面進(jìn)行著手:
l???????? 這個(gè)語(yǔ)言必須是可擴(kuò)展的:它應(yīng)該能夠讓每個(gè)應(yīng)用程序可以很方便的把自己的特色加到語(yǔ)言的基本功能中,并且這種具體的應(yīng)用程序的特色要看起來(lái)非常自然,就好像一開(kāi)始這些特色就被設(shè)計(jì)到了這個(gè)語(yǔ)言中。
l???????? 這個(gè)語(yǔ)言必須非常的簡(jiǎn)單通用,能很方便的與許多不同的應(yīng)用程序配合工作,并且不會(huì)限制應(yīng)用程序所能提供的功能。
l???????? 由于大部分出色的功能都來(lái)自于應(yīng)用程序,所以這個(gè)語(yǔ)言的首要目的就是將擴(kuò)展部件集成或“膠合”在一起。因此這種語(yǔ)言必須要有很好的集成特性。
1988年初,假期一結(jié)束,我開(kāi)始研究Tcl,1988年春天的時(shí)候,我開(kāi)始在一個(gè)圖形化的文本編輯器中使用第一版的Tcl。那時(shí)我已經(jīng)暫停了IC設(shè)計(jì)工具的研究工作,所以有關(guān)Tcl的實(shí)驗(yàn)大部分還在理論研究階段:我當(dāng)時(shí)認(rèn)為除了我,沒(méi)有人會(huì)對(duì)一種嵌入式命令語(yǔ)言感興趣。
?Tk的誕生
?那時(shí),我的另一個(gè)愛(ài)好就是圖形用戶界面。80年代圖形用戶界面逐漸流行的時(shí)候,我注意到交互式軟件的復(fù)雜性正在迅速的增長(zhǎng)。最有趣的是新的開(kāi)發(fā)似乎需要巨額投資的大型工程項(xiàng)目的支持。作為一名只具有有限資源的教授,這令我擔(dān)心:象我的研究小組一樣的小團(tuán)隊(duì)是不是不再可能構(gòu)建出創(chuàng)新型交互系統(tǒng)?
我得出的結(jié)論是,我們的唯一希望就是減少創(chuàng)建大型系統(tǒng)時(shí)除可重用組件以外的部分對(duì)資源的需求。如果一個(gè)系統(tǒng)的復(fù)雜性大部分在組件里,并且我們可以在系統(tǒng)間進(jìn)行移植,也許我們就可以以小團(tuán)隊(duì)的規(guī)模來(lái)創(chuàng)建強(qiáng)大的系統(tǒng)。這要求花費(fèi)很多精力去開(kāi)發(fā)這些組件,但是,經(jīng)過(guò)一段時(shí)間這項(xiàng)工作是可以逐漸完成的,或許幾個(gè)小團(tuán)隊(duì)一起合作完成。
我同時(shí)深信,對(duì)集成這些組件而言,除非有一種強(qiáng)大并具有彈性的機(jī)制,否則,基于組件的設(shè)計(jì)不會(huì)成功。這些想法在我一開(kāi)始考慮做Tcl的時(shí)候就產(chǎn)生了,我覺(jué)得像Tcl這樣的嵌入式命令語(yǔ)言作為腳本語(yǔ)言對(duì)集成組件也會(huì)有用。我決定創(chuàng)建一個(gè)GUI組件集合作為對(duì)Tcl的擴(kuò)展并且使用Tcl把這些組件集成到圖形用戶界面,從而來(lái)驗(yàn)證我的這個(gè)理論。這個(gè)擴(kuò)展就成為了Tk。
我1988年末才開(kāi)始做Tk,這只是一個(gè)兼職的項(xiàng)目,所以花費(fèi)了大概兩年的時(shí)間才使Tk具有了足夠的實(shí)用功能。
?發(fā)布初期
?我已經(jīng)記不清把Tcl介紹給大家的確切時(shí)間了。截止到1989年,我已經(jīng)在幾個(gè)工程中使用了Tcl,我記得我在伯克利工業(yè)聯(lián)絡(luò)會(huì)議(Berkeley Industrial Liaison Conference)期間做了一個(gè)關(guān)于Tcl的報(bào)告,那時(shí),幾百位來(lái)自工業(yè)界的人士來(lái)到伯克利聽(tīng)我們系的研究成果。,我又在對(duì)Tcl感興趣的幾家公司做了相關(guān)的Tcl報(bào)告來(lái)招待他們,在這幾次報(bào)告中,一些人詢問(wèn)了他們是否可以得到Tcl的拷貝。無(wú)論如何,我在1989年把幾份拷貝給了最早的好奇者。
1990年1月,我在USENIX會(huì)議上宣讀了一篇關(guān)于Tcl的論文。參會(huì)的有幾百人,并且他們對(duì)Tcl產(chǎn)生了濃厚的興趣,許多人開(kāi)始向我要Tcl的拷貝。大約在那個(gè)時(shí)候,我決定在伯克利的FTP站點(diǎn)上免費(fèi)發(fā)放Tcl的源代碼。從此,通過(guò)因特網(wǎng),Tcl的用戶開(kāi)始與日俱增。
出席USENIX會(huì)議的其中一個(gè)人是國(guó)家標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)的Don Libes。一段時(shí)間以來(lái)Don想編寫(xiě)一個(gè)程序,這個(gè)程序能夠自動(dòng)的操作交互的UNIX應(yīng)用程序,但這需要一種優(yōu)秀的命令語(yǔ)言,而Don沒(méi)有時(shí)間自己編寫(xiě)這樣的一個(gè)語(yǔ)言,于是這個(gè)項(xiàng)目只能擱置在一邊。聽(tīng)了我的演講后,Don立即跑回家,下載了Tcl,編寫(xiě)了一個(gè)叫做Expect的非常優(yōu)秀的程序,并且趕在下一次USENIX會(huì)議提交論文的最后期限之前完成了一篇關(guān)于它的論文。整個(gè)過(guò)程只用了三個(gè)星期。Don在1990年夏發(fā)表了他的論文之后,把Expect免費(fèi)的提供給人們使用,于是在系統(tǒng)管理員界立即引起了一場(chǎng)不小的震動(dòng)。Expect不僅是第一個(gè)廣泛發(fā)布的Tcl應(yīng)用程序,而且多年來(lái)一直也是最流行的。許多早期的Tcl用戶都是通過(guò)使用Expect來(lái)學(xué)習(xí)Tcl。
在1990年末,可以使用Tk的基本功,1991年1月,我同時(shí)在USENIX會(huì)議和X大會(huì)上發(fā)表了一篇關(guān)于Tk的論文。這兩次會(huì)議期間的幾個(gè)星期中,我發(fā)布了Tk的第一個(gè)網(wǎng)絡(luò)版本。Tk的第一版缺少許多重要的組件(比如,沒(méi)有多行文本框組件),不過(guò)到了1992年夏天的時(shí)候,我就把文本框組件和一個(gè)強(qiáng)大的畫(huà)布組件加了進(jìn)去。這時(shí)Tk的用戶開(kāi)始迅速增長(zhǎng)。
?開(kāi)始流行
?Tcl/Tk的用戶在90年代初每年都在迅速增加,從1989年的幾個(gè)使用者到1993年的幾萬(wàn)使用者。這種迅速增長(zhǎng)的原因主要有兩個(gè)方面。
Tcl/Tk使用者增加的第一個(gè)原因是:它提供了最簡(jiǎn)單的在UNIX(那時(shí)Tcl只能在UNIX系統(tǒng)下運(yùn)行)下開(kāi)發(fā)圖形用戶界面的方法。Tk的GUI工具既簡(jiǎn)單又強(qiáng)大;可以完全由Tcl而不用寫(xiě)一句C代碼來(lái)編寫(xiě)感興趣的應(yīng)用程序。換成基于C的工具來(lái)開(kāi)發(fā)比如Motif工具包則要變得復(fù)雜得多,而且功能也比較少。人們很快就認(rèn)識(shí)到,用Tcl來(lái)開(kāi)發(fā)GUI比用Motif可以少投入5到10倍的精力。這也證明了在工業(yè)界有許多人和我一樣很關(guān)心開(kāi)發(fā)交互式應(yīng)用程序的高開(kāi)支問(wèn)題。
Tcl流行的第二個(gè)原因是它的可嵌入特性。在我開(kāi)始做Tcl的時(shí)候,我猜想除了我沒(méi)有人會(huì)關(guān)心可嵌入式的命令語(yǔ)言,但是我錯(cuò)了。包括Don Libes在內(nèi)的許多人都想要編寫(xiě)腳本式的可擴(kuò)展的應(yīng)用程序,但卻沒(méi)有時(shí)間自己來(lái)創(chuàng)建這么一種語(yǔ)言。正因?yàn)榭汕度胧降奶匦?#xff0c;Tcl為他們提供了一個(gè)完美的解決方案。因而,Tcl最終被廣泛的用于股票交易,科學(xué)觀測(cè),生產(chǎn)自動(dòng)化等許多領(lǐng)域。
在Tcl用戶社區(qū)每一兩年都會(huì)有對(duì)Tcl和Tk的使用的討論。許多Tcl的使用者認(rèn)為T(mén)k是他們使用Tcl的唯一原因。他們中的一些甚至不喜歡Tcl語(yǔ)言,而希望Tk能夠和其他的腳本語(yǔ)言結(jié)合。(實(shí)際上,已經(jīng)有人這么做了,如Tkperl和Python)。而另一部分人認(rèn)為T(mén)cl正是他們的需求所在,他們把它作為可嵌入式的腳本語(yǔ)言來(lái)使用,并且正是因?yàn)槟軌蜻_(dá)到這個(gè)目的才讓他們喜歡上了這個(gè)語(yǔ)言的小道具(afreez注:指Tk)。從某種意義上說(shuō),這兩部分人都沒(méi)錯(cuò)。
?Tcl社區(qū)
?90年代初隨著Tcl使用者的增加,人們?cè)诰W(wǎng)上建立了一個(gè)關(guān)于這門(mén)語(yǔ)言的社區(qū),目的是讓大家發(fā)布功能強(qiáng)大的擴(kuò)展和為新的用戶提供幫助。Mark Diekhans和Karl Lehenbauer是早期開(kāi)創(chuàng)者中的兩位。他們編寫(xiě)了Tclx,最早免費(fèi)可用的Tcl擴(kuò)展之一。Tclx提供了對(duì)文件的訪問(wèn),時(shí)間和日期控制,以及許多其它有用的功能。隨著時(shí)間的推移,Tclx的功能被證明是非常重要的,以至于其中的許多功能已經(jīng)被整合到了Tcl的基本功能中。
許多早期的Tcl倡導(dǎo)者編寫(xiě)了高質(zhì)量的擴(kuò)展并使這些擴(kuò)展能夠免費(fèi)的使用。比如Michael Mclennan編寫(xiě)的[incr Tcl],一種在Tcl內(nèi)部提供面向?qū)ο缶幊痰臄U(kuò)展。George Howlett編寫(xiě)的BLT,為T(mén)k加進(jìn)了幾個(gè)重要的組件。Tom Poindexter編寫(xiě)的Sybtcl和Oratcl,提供了對(duì)主流數(shù)據(jù)庫(kù)的訪問(wèn)。Brian Smith和Lary Rowe編寫(xiě)的TclDP,提供了Socket訪問(wèn)及一些分布式編程特性。還有許多貢獻(xiàn)者我已經(jīng)記不太清了,在此我只能表示歉意。
社區(qū)中其它的論壇在這個(gè)時(shí)期也在發(fā)展。我起初為社區(qū)中的用戶建立了一個(gè)郵件列表,但是短短幾年里,這個(gè)列表變得相當(dāng)冗長(zhǎng),以至于后來(lái)無(wú)法控制。在Tcl社區(qū)的幫助下,我們建立了comp.lang.tcl新聞組來(lái)代替原來(lái)的郵件列表;從此,它就成為了信息交流和討論Tcl新功能的絕佳論壇。
1993年Larry Rowe意識(shí)到社區(qū)中的人們需要面對(duì)面的交流,于是他在伯克利組織了第一屆Tcl專題討論會(huì)。大約有60人參加,由于這次大會(huì)開(kāi)得非常成功,所以成為了年會(huì)。1995年,USENIX協(xié)會(huì)開(kāi)始對(duì)這個(gè)討論會(huì)進(jìn)行資助;從此,它就變?yōu)榱艘粋€(gè)有幾百人參加的,發(fā)表大量論文、教程,開(kāi)展眾多活動(dòng)的全方位的大會(huì)。Tcl大會(huì)也是世界上最大的參加者上身著裝統(tǒng)一的大會(huì)之一,每年要分發(fā)5-10種不同設(shè)計(jì)圖案的T-shirt來(lái)區(qū)別不同的擴(kuò)展和活動(dòng)等。
在這段時(shí)間里,我大約每6到10個(gè)月發(fā)布一次Tcl/Tk的新版本。大部分新的功能都是采用的Tcl社區(qū)的建議;有時(shí),使用者甚至直接給我提供新功能的原型代碼(prototype code),然后,我再把它集成到核心軟件中。典型的新版本發(fā)布流程是,開(kāi)始大家開(kāi)始討論一段時(shí)間,同時(shí)我提供一份新功能的候選列表,然后在社區(qū)中由大家投票選出他們認(rèn)為最重要的功能。我盡可能優(yōu)先考慮得票最多的功能。
?Ouster-投票
?后來(lái)Tcl的發(fā)布周期就慢慢趨向于和Tcl大會(huì)保持一致。新版本發(fā)布的時(shí)間大概和大會(huì)的時(shí)間相當(dāng),大會(huì)上我會(huì)利用一個(gè)專門(mén)的議程去討論下一個(gè)版本的新特征并取得反饋信息。我經(jīng)常讓與會(huì)者即興的舉手表決,統(tǒng)計(jì)一下聽(tīng)眾對(duì)一些問(wèn)題的想法,然后對(duì)舉手的人數(shù)做個(gè)大概的統(tǒng)計(jì)(“10,20,30,…,看起來(lái)我大約得了35票”)。這些票數(shù)被大家稱之為“ouster-投票”,得票數(shù)的正確性也常常被大家討論的話題。一些愛(ài)說(shuō)笑的人也含沙射影說(shuō)我這個(gè)投票方法也不怎么太客觀….
?在sun公司的日子
?1994年我決定離開(kāi)伯克利投身工業(yè)界。過(guò)去我就一直想在工業(yè)界做兼職工作,在學(xué)術(shù)界干了14年,現(xiàn)在我看時(shí)機(jī)已經(jīng)成熟了。在考慮了多方面的因素后,我決定接受sun公司的邀請(qǐng)。Eric Schmidt,sun公司的首席技術(shù)官,和Bert Sutherland,sun實(shí)驗(yàn)室的領(lǐng)導(dǎo)者,給我提供了一個(gè)機(jī)會(huì),在sun實(shí)驗(yàn)室創(chuàng)立一個(gè)小組,將Tcl開(kāi)發(fā)成因特網(wǎng)上通用的腳本語(yǔ)言。
我一直覺(jué)得Tcl最終需要進(jìn)行商業(yè)贏利才能在長(zhǎng)遠(yuǎn)的開(kāi)發(fā)中生存下來(lái),sun公司為T(mén)cl向更高性能的發(fā)展提供了很好的機(jī)會(huì)。
我在1994年5月加入sun公司,然后組建了一個(gè)Tcl開(kāi)發(fā)小組。在以后的3年里,sun的Tcl小組成員發(fā)展到了12人。以前基本上Tcl/tk的每一行代碼都有我親自來(lái)編寫(xiě),但是從那以后,編寫(xiě)Tcl代碼的工作就移交給Tcl小組的其他成員來(lái)完成了。
Sun公司提供的許多幫助使我們對(duì)Tcl/Tk的性能進(jìn)行了大規(guī)模的提升。Scott Stanton 和Ray Johnson將Tcl/Tk移植到了Windows和Macintosh,于是Tcl就成了一個(gè)出色的跨平臺(tái)的開(kāi)發(fā)環(huán)境;當(dāng)前,超過(guò)2/3下載Tcl的用戶是用于Windows開(kāi)發(fā)。Jacob Levy和Scott Stanton仔細(xì)測(cè)試了輸入輸出系統(tǒng)并加進(jìn)了對(duì)Socket的支持,于是Tcl可以被廣泛的用于網(wǎng)絡(luò)應(yīng)用程序。Brian Lewis為T(mén)cl腳本創(chuàng)建了一個(gè)字節(jié)碼(bytecode)編譯器,這使它的運(yùn)行速度提升了10倍。Jacob Levy開(kāi)發(fā)了Safe-Tcl,一個(gè)強(qiáng)大的安全模型,使非信任的腳本能更安全的執(zhí)行。Jacob Levy和Laurent Demailly創(chuàng)建了一個(gè)Tcl插件,使Tcl腳本可以在web瀏覽器中運(yùn)行,我們創(chuàng)建了Jacl和TclBlend,使Tcl和Java可以緊密的工作在一起。我們還進(jìn)行了一些小的改進(jìn),如動(dòng)態(tài)加載,名稱空間,時(shí)間和日期支持,二進(jìn)制I/O,額外的文件操作命令,和一個(gè)改進(jìn)的字體機(jī)制。
當(dāng)我加盟sun后,許多人擔(dān)心Tcl是否會(huì)變成一個(gè)私有的語(yǔ)言,當(dāng)時(shí)在comp.lang.tcl上出現(xiàn)了許多熱烈的討論。幸運(yùn)的是,sun公司同意在源代碼論壇中繼續(xù)發(fā)放Tcl/Tk的核心代碼庫(kù),并且sun一直信守諾言。隨著性能不斷提升的新版本的出現(xiàn),事實(shí)證明,Sun對(duì)Tcl的支持是不容質(zhì)疑的,它使得比該語(yǔ)言的發(fā)展速度超過(guò)以前任何時(shí)候。起初那些擔(dān)心逐漸被開(kāi)發(fā)新功能的熱情所代替。
這些年,Tcl的使用者繼續(xù)地爆炸式增長(zhǎng)。到1997年已經(jīng)有了數(shù)十萬(wàn)的Tcl開(kāi)發(fā)者;sun公司的FTP站點(diǎn)的Tcl下載率由1995年底的2000人每星期上升到1998年初的超過(guò)10000人每星期。很明顯,Tcl對(duì)我是一個(gè)巨大的商業(yè)機(jī)會(huì)。Tcl開(kāi)放源代碼的發(fā)展?jié)M足不了Tcl社區(qū)中的許多要求。比如,幾乎沒(méi)有開(kāi)發(fā)Tcl的工具,像培訓(xùn)和技術(shù)支持這樣的專業(yè)服務(wù)也僅僅是零散進(jìn)行的。許多重要的擴(kuò)展,如對(duì)ActiveX和CORBA的支持還沒(méi)有編寫(xiě)出來(lái)。
?Scriptics(afreez注:公司的名字)
?1997年底,為了更好的發(fā)展Tcl,我決定離開(kāi)sun創(chuàng)建一個(gè)完全關(guān)注于Tcl的公司。1998年1月,我和Sarah Daniels創(chuàng)建了Scriptics(即今天的 Tcl),由Sarah負(fù)責(zé)市場(chǎng)和營(yíng)銷(xiāo)。一個(gè)月內(nèi),sun公司Tcl小組的約一半成員都跳槽加入了我們公司,我們開(kāi)始開(kāi)發(fā)TclPro,一套包括我們最初產(chǎn)品的開(kāi)發(fā)工具。TclPro 1.0 于1998年9月完成。它在市場(chǎng)上的成功為公司的發(fā)展注入了強(qiáng)大的動(dòng)力。
Scriptics已經(jīng)取代了sun公司在開(kāi)發(fā)Tcl核心工具上的角色,并且它將繼續(xù)像sun公司那樣免費(fèi)的發(fā)布它。1998年,Scriptics為T(mén)cl8.0做了一些改進(jìn),修復(fù)了一些錯(cuò)誤并加進(jìn)了一些小的功能,比如可以更好的支持[Incr Tcl]擴(kuò)展。1999年4月,Tcl發(fā)布了第一個(gè)最重要的開(kāi)放源碼的版本,Tcl/Tk8.1。這個(gè)版本加進(jìn)了對(duì)Unicode的支持(國(guó)際化),線性安全(用于多線程服務(wù)程序)和一個(gè)由Henry Spencer開(kāi)發(fā)的全新的規(guī)則表達(dá)式包,該包包含了許多新的特性,也支持Unicode。Tcl成為第一個(gè)滿足企業(yè)中關(guān)鍵程序各方面要求的腳本語(yǔ)言。
Tcl:獲過(guò)大獎(jiǎng)的軟件
? 1998年春, 我聽(tīng)到了令人振奮的消息,Tcl獲得了兩項(xiàng)大獎(jiǎng)。一個(gè)是ACM軟件系統(tǒng)大獎(jiǎng),獎(jiǎng)給每年的“具有長(zhǎng)遠(yuǎn)影響的軟件系統(tǒng)”。以往這個(gè)獎(jiǎng)項(xiàng)的獲得者包括許多重要的系統(tǒng)如TCP/IP協(xié)議,第一個(gè)線性表,第一個(gè)電子制表軟件,第一個(gè)關(guān)系數(shù)據(jù)庫(kù),萬(wàn)維網(wǎng),Unix系統(tǒng),PostScript,Smalltalk。另一個(gè)是USENIX軟件工具用戶組織(STUG)大獎(jiǎng),這個(gè)獎(jiǎng)項(xiàng)獎(jiǎng)給年度優(yōu)秀的軟件工具。
Tcl核心團(tuán)隊(duì)的成立
?這一部分由Jeff Hobbs和其他人添加
?Scriptics于2000年5月更名為Ajuba解決方案(Ajuba Solutions),反映了公司的發(fā)展重點(diǎn)放在了一系列的基于Tcl的XML技術(shù)。Ajuba創(chuàng)建了基于Tcl的企業(yè)版的XML類服務(wù)器軟件,從這個(gè)方面來(lái)說(shuō),由于Tcl的成功,Ajuba也成為了犧牲品,之所以這么說(shuō)是因?yàn)檫@個(gè)原因,后來(lái)它被Interwoven于2000年10月收購(gòu)。不過(guò)Interwoven對(duì)開(kāi)放源碼的軟件不感興趣,他們只關(guān)注XML和服務(wù)器技術(shù)。
在2000年的七月到十月期間,核心開(kāi)發(fā)的“所屬權(quán)”發(fā)生了轉(zhuǎn)變,它從一個(gè)單獨(dú)的組織中脫離出來(lái),屬于了一個(gè)廣泛的團(tuán)隊(duì)而不再屬于任何一個(gè)單獨(dú)的組織,并被廣為傳播。Tcl核心團(tuán)隊(duì)(Tcl Core Team)成立了,并建立了它的基本運(yùn)行程序。
有關(guān)Tcl的教程也得益于包含它的許多公司。一個(gè)典型的例子就是,Jeff Hobbs,前Tcl Scriptics/Tcl的代理人,跳槽到ActiveState(以發(fā)布Perl的產(chǎn)品和開(kāi)發(fā)聞名)來(lái)領(lǐng)導(dǎo)他們的Tcl技術(shù)部,他的工作不僅在開(kāi)源Tcl核心上,而且也推進(jìn)了許多由Scriptics開(kāi)創(chuàng)的商業(yè)開(kāi)發(fā)工具的發(fā)展。
Tcl/Tk
進(jìn)度聲明
我所知道的就這么多了,大家可以盡情的批評(píng)了!感覺(jué)“最新動(dòng)態(tài)”一節(jié)還需要進(jìn)一步完善。
版權(quán)聲明
Tcl/Tk發(fā)展史一節(jié)的譯文參考了網(wǎng)絡(luò)上的一篇譯文,原譯者為sunny_ring(未做確認(rèn),不過(guò),無(wú)論如何都要感謝原來(lái)的譯者),不過(guò)這里給出的譯文和原譯文還是有很大的出入,包括一些關(guān)鍵詞語(yǔ)和一些語(yǔ)句的翻譯,如果有什么出入,請(qǐng)及時(shí)聯(lián)系我。
概述
Tcl 是一種簡(jiǎn)單易學(xué)但功能強(qiáng)大的語(yǔ)言。它的語(yǔ)法可以用僅僅一打規(guī)則就可以描述清楚,但它具備了在應(yīng)用的幾乎任何領(lǐng)域進(jìn)行快速創(chuàng)建實(shí)用程序所有必須的特征,并且這些應(yīng)用可以基于廣泛使用的國(guó)際化平臺(tái)。
Tk 是為T(mén)cl 開(kāi)發(fā)的一個(gè)圖形工具包(graphical toolkit)。你可以使用它開(kāi)發(fā)運(yùn)行在Windwos,Linux,MacOSX和其它許多平臺(tái)的圖形應(yīng)用程序。
無(wú)論你是出色的hacker、應(yīng)用程序、系統(tǒng)管理員還是科研工作者,或者僅僅是學(xué)生,你都可以使用Tcl。
目前,應(yīng)用Tcl比較成功的公司包括BitMover、TiVo Inc.、Motorala、IBM、Oracle等。具體可以參考:http://www.tcl.tk/about/audience.html
開(kāi)源協(xié)議
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.
?
在網(wǎng)上沒(méi)有找到Tcl/Tk具體遵循的協(xié)議,不過(guò)在這里(即上面的原文)也可以找到一些論述。Tcl/Tk是免費(fèi)的,但不是說(shuō)在該社區(qū)里什么都是免費(fèi)的。你用Tcl編寫(xiě)的程序?qū)儆谀愕闹橇Ξa(chǎn)品,你可以銷(xiāo)、許可(license)或者放棄它們。許多Tcl程序是以開(kāi)放源代碼的形式發(fā)布的,但是存在源碼過(guò)濾器和其它一些工具,在沒(méi)有獲得授權(quán)的情況下,它們可以令你的程序不可讀。
?
Tcl/Tk發(fā)展史
John K. Ousterhout(Tcl/Tk的開(kāi)創(chuàng)人)曾在網(wǎng)上寫(xiě)了一篇名為《HISTORY OF TCL》的文章,原文詳見(jiàn)附件,全文如下:
?
人們常常問(wèn)我這樣的問(wèn)題,設(shè)計(jì)Tcl的靈感是什么,為什么它會(huì)變得這么受歡迎。本文將重溫一下當(dāng)年產(chǎn)生設(shè)計(jì)Tcl和Tk的想法,回顧Tcl和Tk在過(guò)去十年間發(fā)展的過(guò)程,以及我從伯克利到sun到scriptics的人生經(jīng)歷。你將看到,起初Tcl是很簡(jiǎn)陋的;這個(gè)系統(tǒng)的成功令我很吃驚,其實(shí)我也是通過(guò)回顧它的歷史才開(kāi)始明白Tcl流行的原因是什么。
?Tcl的誕生
?Tcl腳本語(yǔ)言誕生于我的集成電路設(shè)計(jì)工具項(xiàng)目,當(dāng)時(shí)我在加州大學(xué)伯克利分校,時(shí)間是80年代初。我和我的學(xué)生已經(jīng)為IC設(shè)計(jì)寫(xiě)了幾個(gè)交互工具,如Magic和Crystal。每個(gè)工具都需要一個(gè)命令語(yǔ)言(在那個(gè)年代,人們需要鍵入命令才能使用這些工具;圖形用戶界面還沒(méi)有被廣泛的使用)。不過(guò),我們的興趣重點(diǎn)是工具而不是它們的命令語(yǔ)言,所以我們沒(méi)有在命令語(yǔ)言上投入太多的精力,結(jié)果最終語(yǔ)言方面變得很薄弱。更糟的是,每個(gè)工具的語(yǔ)言之間是互不相通的,以至于每個(gè)工具最終都伴隨著一個(gè)糟糕的命令語(yǔ)言。一段時(shí)間后,情況變得更糟。
1987年秋,在DEC西部研究室的周期性休息日中,我有了設(shè)計(jì)一種嵌入式命令語(yǔ)言的想法。這個(gè)想法就是花費(fèi)額外的精力去創(chuàng)建一種優(yōu)秀的解釋型語(yǔ)言,然后進(jìn)一步把它做成一個(gè)能夠在許多不同的應(yīng)用程序中可重復(fù)利用的庫(kù)包(library package)。語(yǔ)言的解釋器要提供一系列相對(duì)通用的工具,如變量,控制結(jié)構(gòu),過(guò)程。每個(gè)使用這個(gè)語(yǔ)言的程序都可以以擴(kuò)展的形式把自己的特性加到該語(yǔ)言中,達(dá)到用該語(yǔ)言控制程序的目的。Tcl(Tool Command Language)這個(gè)名字就源自這種需求。
可嵌入性是Tcl的特色之一,為了實(shí)現(xiàn)這個(gè)想法,我準(zhǔn)備在以下三個(gè)方面進(jìn)行著手:
l???????? 這個(gè)語(yǔ)言必須是可擴(kuò)展的:它應(yīng)該能夠讓每個(gè)應(yīng)用程序可以很方便的把自己的特色加到語(yǔ)言的基本功能中,并且這種具體的應(yīng)用程序的特色要看起來(lái)非常自然,就好像一開(kāi)始這些特色就被設(shè)計(jì)到了這個(gè)語(yǔ)言中。
l???????? 這個(gè)語(yǔ)言必須非常的簡(jiǎn)單通用,能很方便的與許多不同的應(yīng)用程序配合工作,并且不會(huì)限制應(yīng)用程序所能提供的功能。
l???????? 由于大部分出色的功能都來(lái)自于應(yīng)用程序,所以這個(gè)語(yǔ)言的首要目的就是將擴(kuò)展部件集成或“膠合”在一起。因此這種語(yǔ)言必須要有很好的集成特性。
1988年初,假期一結(jié)束,我開(kāi)始研究Tcl,1988年春天的時(shí)候,我開(kāi)始在一個(gè)圖形化的文本編輯器中使用第一版的Tcl。那時(shí)我已經(jīng)暫停了IC設(shè)計(jì)工具的研究工作,所以有關(guān)Tcl的實(shí)驗(yàn)大部分還在理論研究階段:我當(dāng)時(shí)認(rèn)為除了我,沒(méi)有人會(huì)對(duì)一種嵌入式命令語(yǔ)言感興趣。
?Tk的誕生
?那時(shí),我的另一個(gè)愛(ài)好就是圖形用戶界面。80年代圖形用戶界面逐漸流行的時(shí)候,我注意到交互式軟件的復(fù)雜性正在迅速的增長(zhǎng)。最有趣的是新的開(kāi)發(fā)似乎需要巨額投資的大型工程項(xiàng)目的支持。作為一名只具有有限資源的教授,這令我擔(dān)心:象我的研究小組一樣的小團(tuán)隊(duì)是不是不再可能構(gòu)建出創(chuàng)新型交互系統(tǒng)?
我得出的結(jié)論是,我們的唯一希望就是減少創(chuàng)建大型系統(tǒng)時(shí)除可重用組件以外的部分對(duì)資源的需求。如果一個(gè)系統(tǒng)的復(fù)雜性大部分在組件里,并且我們可以在系統(tǒng)間進(jìn)行移植,也許我們就可以以小團(tuán)隊(duì)的規(guī)模來(lái)創(chuàng)建強(qiáng)大的系統(tǒng)。這要求花費(fèi)很多精力去開(kāi)發(fā)這些組件,但是,經(jīng)過(guò)一段時(shí)間這項(xiàng)工作是可以逐漸完成的,或許幾個(gè)小團(tuán)隊(duì)一起合作完成。
我同時(shí)深信,對(duì)集成這些組件而言,除非有一種強(qiáng)大并具有彈性的機(jī)制,否則,基于組件的設(shè)計(jì)不會(huì)成功。這些想法在我一開(kāi)始考慮做Tcl的時(shí)候就產(chǎn)生了,我覺(jué)得像Tcl這樣的嵌入式命令語(yǔ)言作為腳本語(yǔ)言對(duì)集成組件也會(huì)有用。我決定創(chuàng)建一個(gè)GUI組件集合作為對(duì)Tcl的擴(kuò)展并且使用Tcl把這些組件集成到圖形用戶界面,從而來(lái)驗(yàn)證我的這個(gè)理論。這個(gè)擴(kuò)展就成為了Tk。
我1988年末才開(kāi)始做Tk,這只是一個(gè)兼職的項(xiàng)目,所以花費(fèi)了大概兩年的時(shí)間才使Tk具有了足夠的實(shí)用功能。
?發(fā)布初期
?我已經(jīng)記不清把Tcl介紹給大家的確切時(shí)間了。截止到1989年,我已經(jīng)在幾個(gè)工程中使用了Tcl,我記得我在伯克利工業(yè)聯(lián)絡(luò)會(huì)議(Berkeley Industrial Liaison Conference)期間做了一個(gè)關(guān)于Tcl的報(bào)告,那時(shí),幾百位來(lái)自工業(yè)界的人士來(lái)到伯克利聽(tīng)我們系的研究成果。,我又在對(duì)Tcl感興趣的幾家公司做了相關(guān)的Tcl報(bào)告來(lái)招待他們,在這幾次報(bào)告中,一些人詢問(wèn)了他們是否可以得到Tcl的拷貝。無(wú)論如何,我在1989年把幾份拷貝給了最早的好奇者。
1990年1月,我在USENIX會(huì)議上宣讀了一篇關(guān)于Tcl的論文。參會(huì)的有幾百人,并且他們對(duì)Tcl產(chǎn)生了濃厚的興趣,許多人開(kāi)始向我要Tcl的拷貝。大約在那個(gè)時(shí)候,我決定在伯克利的FTP站點(diǎn)上免費(fèi)發(fā)放Tcl的源代碼。從此,通過(guò)因特網(wǎng),Tcl的用戶開(kāi)始與日俱增。
出席USENIX會(huì)議的其中一個(gè)人是國(guó)家標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)的Don Libes。一段時(shí)間以來(lái)Don想編寫(xiě)一個(gè)程序,這個(gè)程序能夠自動(dòng)的操作交互的UNIX應(yīng)用程序,但這需要一種優(yōu)秀的命令語(yǔ)言,而Don沒(méi)有時(shí)間自己編寫(xiě)這樣的一個(gè)語(yǔ)言,于是這個(gè)項(xiàng)目只能擱置在一邊。聽(tīng)了我的演講后,Don立即跑回家,下載了Tcl,編寫(xiě)了一個(gè)叫做Expect的非常優(yōu)秀的程序,并且趕在下一次USENIX會(huì)議提交論文的最后期限之前完成了一篇關(guān)于它的論文。整個(gè)過(guò)程只用了三個(gè)星期。Don在1990年夏發(fā)表了他的論文之后,把Expect免費(fèi)的提供給人們使用,于是在系統(tǒng)管理員界立即引起了一場(chǎng)不小的震動(dòng)。Expect不僅是第一個(gè)廣泛發(fā)布的Tcl應(yīng)用程序,而且多年來(lái)一直也是最流行的。許多早期的Tcl用戶都是通過(guò)使用Expect來(lái)學(xué)習(xí)Tcl。
在1990年末,可以使用Tk的基本功,1991年1月,我同時(shí)在USENIX會(huì)議和X大會(huì)上發(fā)表了一篇關(guān)于Tk的論文。這兩次會(huì)議期間的幾個(gè)星期中,我發(fā)布了Tk的第一個(gè)網(wǎng)絡(luò)版本。Tk的第一版缺少許多重要的組件(比如,沒(méi)有多行文本框組件),不過(guò)到了1992年夏天的時(shí)候,我就把文本框組件和一個(gè)強(qiáng)大的畫(huà)布組件加了進(jìn)去。這時(shí)Tk的用戶開(kāi)始迅速增長(zhǎng)。
?開(kāi)始流行
?Tcl/Tk的用戶在90年代初每年都在迅速增加,從1989年的幾個(gè)使用者到1993年的幾萬(wàn)使用者。這種迅速增長(zhǎng)的原因主要有兩個(gè)方面。
Tcl/Tk使用者增加的第一個(gè)原因是:它提供了最簡(jiǎn)單的在UNIX(那時(shí)Tcl只能在UNIX系統(tǒng)下運(yùn)行)下開(kāi)發(fā)圖形用戶界面的方法。Tk的GUI工具既簡(jiǎn)單又強(qiáng)大;可以完全由Tcl而不用寫(xiě)一句C代碼來(lái)編寫(xiě)感興趣的應(yīng)用程序。換成基于C的工具來(lái)開(kāi)發(fā)比如Motif工具包則要變得復(fù)雜得多,而且功能也比較少。人們很快就認(rèn)識(shí)到,用Tcl來(lái)開(kāi)發(fā)GUI比用Motif可以少投入5到10倍的精力。這也證明了在工業(yè)界有許多人和我一樣很關(guān)心開(kāi)發(fā)交互式應(yīng)用程序的高開(kāi)支問(wèn)題。
Tcl流行的第二個(gè)原因是它的可嵌入特性。在我開(kāi)始做Tcl的時(shí)候,我猜想除了我沒(méi)有人會(huì)關(guān)心可嵌入式的命令語(yǔ)言,但是我錯(cuò)了。包括Don Libes在內(nèi)的許多人都想要編寫(xiě)腳本式的可擴(kuò)展的應(yīng)用程序,但卻沒(méi)有時(shí)間自己來(lái)創(chuàng)建這么一種語(yǔ)言。正因?yàn)榭汕度胧降奶匦?#xff0c;Tcl為他們提供了一個(gè)完美的解決方案。因而,Tcl最終被廣泛的用于股票交易,科學(xué)觀測(cè),生產(chǎn)自動(dòng)化等許多領(lǐng)域。
在Tcl用戶社區(qū)每一兩年都會(huì)有對(duì)Tcl和Tk的使用的討論。許多Tcl的使用者認(rèn)為T(mén)k是他們使用Tcl的唯一原因。他們中的一些甚至不喜歡Tcl語(yǔ)言,而希望Tk能夠和其他的腳本語(yǔ)言結(jié)合。(實(shí)際上,已經(jīng)有人這么做了,如Tkperl和Python)。而另一部分人認(rèn)為T(mén)cl正是他們的需求所在,他們把它作為可嵌入式的腳本語(yǔ)言來(lái)使用,并且正是因?yàn)槟軌蜻_(dá)到這個(gè)目的才讓他們喜歡上了這個(gè)語(yǔ)言的小道具(afreez注:指Tk)。從某種意義上說(shuō),這兩部分人都沒(méi)錯(cuò)。
?Tcl社區(qū)
?90年代初隨著Tcl使用者的增加,人們?cè)诰W(wǎng)上建立了一個(gè)關(guān)于這門(mén)語(yǔ)言的社區(qū),目的是讓大家發(fā)布功能強(qiáng)大的擴(kuò)展和為新的用戶提供幫助。Mark Diekhans和Karl Lehenbauer是早期開(kāi)創(chuàng)者中的兩位。他們編寫(xiě)了Tclx,最早免費(fèi)可用的Tcl擴(kuò)展之一。Tclx提供了對(duì)文件的訪問(wèn),時(shí)間和日期控制,以及許多其它有用的功能。隨著時(shí)間的推移,Tclx的功能被證明是非常重要的,以至于其中的許多功能已經(jīng)被整合到了Tcl的基本功能中。
許多早期的Tcl倡導(dǎo)者編寫(xiě)了高質(zhì)量的擴(kuò)展并使這些擴(kuò)展能夠免費(fèi)的使用。比如Michael Mclennan編寫(xiě)的[incr Tcl],一種在Tcl內(nèi)部提供面向?qū)ο缶幊痰臄U(kuò)展。George Howlett編寫(xiě)的BLT,為T(mén)k加進(jìn)了幾個(gè)重要的組件。Tom Poindexter編寫(xiě)的Sybtcl和Oratcl,提供了對(duì)主流數(shù)據(jù)庫(kù)的訪問(wèn)。Brian Smith和Lary Rowe編寫(xiě)的TclDP,提供了Socket訪問(wèn)及一些分布式編程特性。還有許多貢獻(xiàn)者我已經(jīng)記不太清了,在此我只能表示歉意。
社區(qū)中其它的論壇在這個(gè)時(shí)期也在發(fā)展。我起初為社區(qū)中的用戶建立了一個(gè)郵件列表,但是短短幾年里,這個(gè)列表變得相當(dāng)冗長(zhǎng),以至于后來(lái)無(wú)法控制。在Tcl社區(qū)的幫助下,我們建立了comp.lang.tcl新聞組來(lái)代替原來(lái)的郵件列表;從此,它就成為了信息交流和討論Tcl新功能的絕佳論壇。
1993年Larry Rowe意識(shí)到社區(qū)中的人們需要面對(duì)面的交流,于是他在伯克利組織了第一屆Tcl專題討論會(huì)。大約有60人參加,由于這次大會(huì)開(kāi)得非常成功,所以成為了年會(huì)。1995年,USENIX協(xié)會(huì)開(kāi)始對(duì)這個(gè)討論會(huì)進(jìn)行資助;從此,它就變?yōu)榱艘粋€(gè)有幾百人參加的,發(fā)表大量論文、教程,開(kāi)展眾多活動(dòng)的全方位的大會(huì)。Tcl大會(huì)也是世界上最大的參加者上身著裝統(tǒng)一的大會(huì)之一,每年要分發(fā)5-10種不同設(shè)計(jì)圖案的T-shirt來(lái)區(qū)別不同的擴(kuò)展和活動(dòng)等。
在這段時(shí)間里,我大約每6到10個(gè)月發(fā)布一次Tcl/Tk的新版本。大部分新的功能都是采用的Tcl社區(qū)的建議;有時(shí),使用者甚至直接給我提供新功能的原型代碼(prototype code),然后,我再把它集成到核心軟件中。典型的新版本發(fā)布流程是,開(kāi)始大家開(kāi)始討論一段時(shí)間,同時(shí)我提供一份新功能的候選列表,然后在社區(qū)中由大家投票選出他們認(rèn)為最重要的功能。我盡可能優(yōu)先考慮得票最多的功能。
?Ouster-投票
?后來(lái)Tcl的發(fā)布周期就慢慢趨向于和Tcl大會(huì)保持一致。新版本發(fā)布的時(shí)間大概和大會(huì)的時(shí)間相當(dāng),大會(huì)上我會(huì)利用一個(gè)專門(mén)的議程去討論下一個(gè)版本的新特征并取得反饋信息。我經(jīng)常讓與會(huì)者即興的舉手表決,統(tǒng)計(jì)一下聽(tīng)眾對(duì)一些問(wèn)題的想法,然后對(duì)舉手的人數(shù)做個(gè)大概的統(tǒng)計(jì)(“10,20,30,…,看起來(lái)我大約得了35票”)。這些票數(shù)被大家稱之為“ouster-投票”,得票數(shù)的正確性也常常被大家討論的話題。一些愛(ài)說(shuō)笑的人也含沙射影說(shuō)我這個(gè)投票方法也不怎么太客觀….
?在sun公司的日子
?1994年我決定離開(kāi)伯克利投身工業(yè)界。過(guò)去我就一直想在工業(yè)界做兼職工作,在學(xué)術(shù)界干了14年,現(xiàn)在我看時(shí)機(jī)已經(jīng)成熟了。在考慮了多方面的因素后,我決定接受sun公司的邀請(qǐng)。Eric Schmidt,sun公司的首席技術(shù)官,和Bert Sutherland,sun實(shí)驗(yàn)室的領(lǐng)導(dǎo)者,給我提供了一個(gè)機(jī)會(huì),在sun實(shí)驗(yàn)室創(chuàng)立一個(gè)小組,將Tcl開(kāi)發(fā)成因特網(wǎng)上通用的腳本語(yǔ)言。
我一直覺(jué)得Tcl最終需要進(jìn)行商業(yè)贏利才能在長(zhǎng)遠(yuǎn)的開(kāi)發(fā)中生存下來(lái),sun公司為T(mén)cl向更高性能的發(fā)展提供了很好的機(jī)會(huì)。
我在1994年5月加入sun公司,然后組建了一個(gè)Tcl開(kāi)發(fā)小組。在以后的3年里,sun的Tcl小組成員發(fā)展到了12人。以前基本上Tcl/tk的每一行代碼都有我親自來(lái)編寫(xiě),但是從那以后,編寫(xiě)Tcl代碼的工作就移交給Tcl小組的其他成員來(lái)完成了。
Sun公司提供的許多幫助使我們對(duì)Tcl/Tk的性能進(jìn)行了大規(guī)模的提升。Scott Stanton 和Ray Johnson將Tcl/Tk移植到了Windows和Macintosh,于是Tcl就成了一個(gè)出色的跨平臺(tái)的開(kāi)發(fā)環(huán)境;當(dāng)前,超過(guò)2/3下載Tcl的用戶是用于Windows開(kāi)發(fā)。Jacob Levy和Scott Stanton仔細(xì)測(cè)試了輸入輸出系統(tǒng)并加進(jìn)了對(duì)Socket的支持,于是Tcl可以被廣泛的用于網(wǎng)絡(luò)應(yīng)用程序。Brian Lewis為T(mén)cl腳本創(chuàng)建了一個(gè)字節(jié)碼(bytecode)編譯器,這使它的運(yùn)行速度提升了10倍。Jacob Levy開(kāi)發(fā)了Safe-Tcl,一個(gè)強(qiáng)大的安全模型,使非信任的腳本能更安全的執(zhí)行。Jacob Levy和Laurent Demailly創(chuàng)建了一個(gè)Tcl插件,使Tcl腳本可以在web瀏覽器中運(yùn)行,我們創(chuàng)建了Jacl和TclBlend,使Tcl和Java可以緊密的工作在一起。我們還進(jìn)行了一些小的改進(jìn),如動(dòng)態(tài)加載,名稱空間,時(shí)間和日期支持,二進(jìn)制I/O,額外的文件操作命令,和一個(gè)改進(jìn)的字體機(jī)制。
當(dāng)我加盟sun后,許多人擔(dān)心Tcl是否會(huì)變成一個(gè)私有的語(yǔ)言,當(dāng)時(shí)在comp.lang.tcl上出現(xiàn)了許多熱烈的討論。幸運(yùn)的是,sun公司同意在源代碼論壇中繼續(xù)發(fā)放Tcl/Tk的核心代碼庫(kù),并且sun一直信守諾言。隨著性能不斷提升的新版本的出現(xiàn),事實(shí)證明,Sun對(duì)Tcl的支持是不容質(zhì)疑的,它使得比該語(yǔ)言的發(fā)展速度超過(guò)以前任何時(shí)候。起初那些擔(dān)心逐漸被開(kāi)發(fā)新功能的熱情所代替。
這些年,Tcl的使用者繼續(xù)地爆炸式增長(zhǎng)。到1997年已經(jīng)有了數(shù)十萬(wàn)的Tcl開(kāi)發(fā)者;sun公司的FTP站點(diǎn)的Tcl下載率由1995年底的2000人每星期上升到1998年初的超過(guò)10000人每星期。很明顯,Tcl對(duì)我是一個(gè)巨大的商業(yè)機(jī)會(huì)。Tcl開(kāi)放源代碼的發(fā)展?jié)M足不了Tcl社區(qū)中的許多要求。比如,幾乎沒(méi)有開(kāi)發(fā)Tcl的工具,像培訓(xùn)和技術(shù)支持這樣的專業(yè)服務(wù)也僅僅是零散進(jìn)行的。許多重要的擴(kuò)展,如對(duì)ActiveX和CORBA的支持還沒(méi)有編寫(xiě)出來(lái)。
?Scriptics(afreez注:公司的名字)
?1997年底,為了更好的發(fā)展Tcl,我決定離開(kāi)sun創(chuàng)建一個(gè)完全關(guān)注于Tcl的公司。1998年1月,我和Sarah Daniels創(chuàng)建了Scriptics(即今天的 Tcl),由Sarah負(fù)責(zé)市場(chǎng)和營(yíng)銷(xiāo)。一個(gè)月內(nèi),sun公司Tcl小組的約一半成員都跳槽加入了我們公司,我們開(kāi)始開(kāi)發(fā)TclPro,一套包括我們最初產(chǎn)品的開(kāi)發(fā)工具。TclPro 1.0 于1998年9月完成。它在市場(chǎng)上的成功為公司的發(fā)展注入了強(qiáng)大的動(dòng)力。
Scriptics已經(jīng)取代了sun公司在開(kāi)發(fā)Tcl核心工具上的角色,并且它將繼續(xù)像sun公司那樣免費(fèi)的發(fā)布它。1998年,Scriptics為T(mén)cl8.0做了一些改進(jìn),修復(fù)了一些錯(cuò)誤并加進(jìn)了一些小的功能,比如可以更好的支持[Incr Tcl]擴(kuò)展。1999年4月,Tcl發(fā)布了第一個(gè)最重要的開(kāi)放源碼的版本,Tcl/Tk8.1。這個(gè)版本加進(jìn)了對(duì)Unicode的支持(國(guó)際化),線性安全(用于多線程服務(wù)程序)和一個(gè)由Henry Spencer開(kāi)發(fā)的全新的規(guī)則表達(dá)式包,該包包含了許多新的特性,也支持Unicode。Tcl成為第一個(gè)滿足企業(yè)中關(guān)鍵程序各方面要求的腳本語(yǔ)言。
Tcl:獲過(guò)大獎(jiǎng)的軟件
? 1998年春, 我聽(tīng)到了令人振奮的消息,Tcl獲得了兩項(xiàng)大獎(jiǎng)。一個(gè)是ACM軟件系統(tǒng)大獎(jiǎng),獎(jiǎng)給每年的“具有長(zhǎng)遠(yuǎn)影響的軟件系統(tǒng)”。以往這個(gè)獎(jiǎng)項(xiàng)的獲得者包括許多重要的系統(tǒng)如TCP/IP協(xié)議,第一個(gè)線性表,第一個(gè)電子制表軟件,第一個(gè)關(guān)系數(shù)據(jù)庫(kù),萬(wàn)維網(wǎng),Unix系統(tǒng),PostScript,Smalltalk。另一個(gè)是USENIX軟件工具用戶組織(STUG)大獎(jiǎng),這個(gè)獎(jiǎng)項(xiàng)獎(jiǎng)給年度優(yōu)秀的軟件工具。
Tcl核心團(tuán)隊(duì)的成立
?這一部分由Jeff Hobbs和其他人添加
?Scriptics于2000年5月更名為Ajuba解決方案(Ajuba Solutions),反映了公司的發(fā)展重點(diǎn)放在了一系列的基于Tcl的XML技術(shù)。Ajuba創(chuàng)建了基于Tcl的企業(yè)版的XML類服務(wù)器軟件,從這個(gè)方面來(lái)說(shuō),由于Tcl的成功,Ajuba也成為了犧牲品,之所以這么說(shuō)是因?yàn)檫@個(gè)原因,后來(lái)它被Interwoven于2000年10月收購(gòu)。不過(guò)Interwoven對(duì)開(kāi)放源碼的軟件不感興趣,他們只關(guān)注XML和服務(wù)器技術(shù)。
在2000年的七月到十月期間,核心開(kāi)發(fā)的“所屬權(quán)”發(fā)生了轉(zhuǎn)變,它從一個(gè)單獨(dú)的組織中脫離出來(lái),屬于了一個(gè)廣泛的團(tuán)隊(duì)而不再屬于任何一個(gè)單獨(dú)的組織,并被廣為傳播。Tcl核心團(tuán)隊(duì)(Tcl Core Team)成立了,并建立了它的基本運(yùn)行程序。
有關(guān)Tcl的教程也得益于包含它的許多公司。一個(gè)典型的例子就是,Jeff Hobbs,前Tcl Scriptics/Tcl的代理人,跳槽到ActiveState(以發(fā)布Perl的產(chǎn)品和開(kāi)發(fā)聞名)來(lái)領(lǐng)導(dǎo)他們的Tcl技術(shù)部,他的工作不僅在開(kāi)源Tcl核心上,而且也推進(jìn)了許多由Scriptics開(kāi)創(chuàng)的商業(yè)開(kāi)發(fā)工具的發(fā)展。
總結(jié)
以上是生活随笔為你收集整理的The History of Tcl/Tk的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019年区块链教育培训课程研究报告 |
- 下一篇: oracle数据库管理问题,请教三个问题