The History of Tcl/Tk
生活随笔
收集整理的這篇文章主要介紹了
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開創的商業開發工具的發展。
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開創的商業開發工具的發展。
總結
以上是生活随笔為你收集整理的The History of Tcl/Tk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019年区块链教育培训课程研究报告 |
- 下一篇: 什么是parted