Tcl

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Tcl
Tclロゴ
パラダイムマルチパラダイムイベント駆動型機能的命令型オブジェクト指向
によって設計されたジョン・オースターハウト
デベロッパーTclコアチーム[1]
初登場1988 ; 34年前 (1988)
安定リリース
8.6.12 / 2021年10月31日; 3ヶ月前 (2021-10-31)
プレビューリリース
9.0a3 / 2021年6月23日; 8ヶ月前 (2021-06-23)
規律の入力動的型付け、すべてを文字列として扱うことができます
ライセンスBSDスタイル[2]
ファイル名拡張子.tcl、.tbc [3]
Webサイトwww .tcl-lang .org
www .tcl .tk
主な実装
ActiveTcl Androwish
方言
ジム
に影響を受けた
AWKLisp
影響を受ける
PHP[4] PowerShell[5] お茶

Tcl (「くすぐり」またはイニシャリズム[6]と発音)は、高レベル汎用解釈された動的プログラミング言語です。非常にシンプルでありながら強力であることを目標に設計されました。[7] Tclは、変数の代入やプロシージャの定義などのプログラミング構造でさえ、すべてをコマンドの型にキャストします。[8] Tclはオブジェクト指向命令型および関数型プログラミング手続き型など、複数のプログラミングパラダイムをサポートしています。

これは、ラピッドプロトタイピング、スクリプト化されたアプリケーション、GUI、およびテストのために、 Cアプリケーションに埋め込まれて一般的に使用されます[9] 。[10] Tclインタープリターは多くのオペレーティングシステムで利用可能であり、Tclコードをさまざまなシステムで実行できます。Tclは非常にコンパクトな言語であるため、組み込みシステムプラットフォームで、完全な形式と他のいくつかの小さなフットプリントバージョンの両方で使用されます。[11]

TclとTk拡張機能の一般的な組み合わせは、Tcl / Tkと呼ばれ、Tclでネイティブにグラフィカルユーザーインターフェイス(GUI)を構築できるようにします。Tcl / Tkは、 Tkinterの形式で標準のPythonインストールに含まれています

歴史

Tclプログラミング言語は、カリフォルニア大学バークレー校で働いていたジョン・オースターハウトによって1988年の春に作成されました。[12] [13]もともとは「欲求不満から生まれた」[9]作者によると、プログラマーがアプリケーションに組み込むことを目的とした独自の言語を考案したことで、Tclは独自に受け入れられました。Ousterhoutは、1997年にTcl / TkでACMソフトウェアシステム賞を受賞しました。[14]

名前は元々 Tool C ommand L言語由来ますが、通常は「TCL」ではなく「Tcl」と綴られます。[15]

日にち イベント
1990年1月 Tclはバークレーを越えて発表しました(冬のUSENIX)。
1990年6月 発表される予定です(夏のUSENIX)
1991年1月 Tk(Winter USENIX) の最初の発表。
1993年6月 最初のTcl / Tk会議(バークレー)。[テーブル]ジオメトリマネージャー([グリッド]の前身)、[incr Tcl]、TclDP、Groupkitがそこで発表されました。
1997年8月 Tcl8.0はバイトコードコンパイラを導入しました。[16]
1999年4月 Tcl 8.1では、完全なUnicodeサポート[17]と高度な正規表現が導入されています。[18]
1999年8月 Tcl 8.2はTcl拡張アーキテクチャ(TEA)を導入します[19]
2000年8月 Tclコアチームが結成され、Tclはよりコミュニティ指向の開発モデルに移行しました。[1]
2002年9月 第9回Tcl / Tk会議(バンクーバー)。スターキットパッケージングシステムの発表。Tcl8.4.0がリリースされました。[20]
2007年12月 Tcl 8.5は、新しいデータ型、新しい拡張リポジトリ、bignums[21] lambdasを追加しました。[22] [23]
2012年12月 Tcl 8.6には、組み込みの動的オブジェクトシステム、TclOO、およびスタックレス評価が追加されました。[24]

Tclカンファレンスとワークショップは米国とヨーロッパの両方で開催されています。[25]

機能

EclipseIDEで編集されているTclファイル

Tclの機能は次のとおりです。

  • 言語構造を含め、すべての操作はコマンドです。それらは接頭辞表記で書かれています。
  • コマンドは通常、可変数の引数を受け入れます(可変個引数)。
  • すべてを動的に再定義してオーバーライドできます。実際にはキーワードがないため、制御構造を追加または変更することもできますが、これはお勧めできません。
  • ソースコードを含め、すべてのデータ型を文字列として操作できます内部的には、変数にはintegerやdoubleなどの型がありますが、変換は完全に自動です。
  • 変数は宣言されていませんが、に割り当てられています。未定義の変数を使用すると、エラーが発生します。
  • メタクラス、フィルター、ミックスインなどの高度な機能を含む、完全に動的なクラスベースのオブジェクトシステムTclOO[26]
  • ソケットファイルのイベント駆動型インターフェース時間ベースおよびユーザー定義のイベントも可能です。
  • 変数の可視性は、デフォルトでは字句(静的)スコープに制限されていますが、procがそれを囲む関数のスコープと対話できるようuplevelになっています。upvar
  • Tcl自体によって定義されたすべてのコマンドは、誤った使用法でエラーメッセージを生成します。
  • CC ++Java、Python、およびTclを介した拡張性。
  • バイトコードを使用した通訳言語
  • 完全なUnicode(最初は3.1、定期的に更新)のサポート、1999年に最初にリリースされました。
  • 正規表現[18]
  • クロスプラットフォームWindows API ; UnixLinuxMacintoshなど。
  • ウィンドウ( GUI)インターフェイスTkとの緊密なクロスプラットフォーム統合
  • 複数の配布メカニズムが存在します。
    • 完全な開発バージョン(Windowsの場合、たとえばActiveState Tcl[1]を参照)
    • Tclkits(完全なスクリプトランタイムを含む単一ファイルの実行可能ファイル、サイズはわずか約4メガバイト)、Starkits(自己完結型、インストール不要、移植性の高い方法でアプリケーションを配信するためのラッピングメカニズム)、およびStarpacks(StarkitとTclkitを組み合わせてStarpackを作成する–単一のプラットフォーム固有の実行可能ファイル。簡単な展開に最適)
    • ジムインタープリター、小さなフットプリントのTcl実装
    • BSDライセンスの下で自由に配布可能なソースコード[27]

Safe-Tcl

Safe-Tclは、Tclスクリプトがホスティングマシンやアプリケーションに害を及ぼさないように機能が制限されているTclのサブセットです。[28]ファイルシステムへのアクセスが制限され、任意のシステムコマンドの実行が防止されます。信頼できないスクリプトでコードを実行している信頼できないインタープリターを使用するデュアルインタープリターモデルを使用します。NathanielBorensteinMarshallRoseによって、アクティブなメッセージを電子メールに含めるように設計されました。application / safe-tclおよびmultipart / enabled-mailがサポートされている場合、Safe-Tclを電子メールに含めることができます。その後、Safe-Tclの機能は、標準のTcl / Tkリリースの一部として組み込まれました。[29] [30]

構文と基本的なセマンティクス

Tclの構文とセマンティクスは、Dodekalogueとして知られる12のルール[31]でカバーされています。[32]

Tclスクリプトは、一連のコマンド呼び出しで構成されています。コマンド呼び出しは、空白で区切られ、改行またはセミコロンで終了する単語のリストです。最初の単語はコマンドの名前であり、言語に組み込まれている、使用可能なライブラリにある、またはスクリプト自体で定義されている可能性があります。後続の単語は、コマンドの引数として機能します。

commandName引数1引数2 ...引数N

次の例では、puts( "put string"の略)コマンドを使用して、ホストコンソールにテキストの文字列を表示します。

「 Hello 、World!」 

これにより、文字列「Hello、World!」が送信されます。改行文字を追加し て、標準出力デバイスに追加します。

変数と他のコマンドの結果を文字列に置き換えることができます。たとえば、この例では、setコマンドとexpr=コマンドを使用して、計算結果を変数に格納します(Tclは割り当て演算子として使用しないことに注意してください)。 putsを使用して、説明テキストとともに結果を出力します。

#exprは、テキスト文字列を式
セット sum [expr 1 + 2 + 3 + 4 +5 ]として評価します。「数値1..5の合計は$ sumです。」  
 

キャラクターがコメントを#紹介しますコメントは、インタプリタがコマンド名を期待している場所であればどこにでも表示できます。

#中括弧を使用すると、変数の置換はexpr 
set  x 1 set sum [expr { $ x + 2 + 3 + 4 +5 }]によって実行されます。#$ xは、パラメーターをexprに渡す前に置換されません。#exprは$ xの代わりに1を使用し、式を評価すると「1..5の数値の合計は$ sumです」と表示されます。; #合計は15です 
            
                                     
  
#中括弧なしで、変数置換は定義サイトで発生します(字句スコープ)
set  x 2 set op * set y 3 set res [expr $ x $ op $ y ]; #$ x、$ op、および$ yが代入され、式が評価されて「2 * 3は$ res」になります。; #6は$ resの代わりになります 
  
  
    
  

これらの例に見られるように、言語には1つの基本的な構成要素があります。それはコマンドです。引用メカニズムと置換ルールは、各コマンドの引数がどのように処理されるかを決定します。

コマンドまたは引数を解析する前に、 1つの特別な置換が発生します。行の最後の文字(つまり、改行の直前)が円記号の場合、円記号と改行の組み合わせ(および改行の直後のスペースまたはタブ)は単一のスペースに置き換えられます。これにより、行継続メカニズムが提供され、読者の便宜のために、ソースコードの長い行を次の行に折り返すことができます。

通常の引数処理を続行すると、二重引用符()で始まる単語は"、次の二重引用符文字に拡張されます。したがって、このような単語には空白やセミコロンを含めることができますが、これらの文字は特別な意味を持つと解釈されることはありません(つまり、通常のテキスト文字として扱われます)。中括弧の最初の文字()で始まる単語は{、次の右中括弧の文字()まで続き}ます。中括弧の内側では、前述のバックスラッシュ-改行の削除を除いて、すべての形式の置換が抑制されます。どちらの構成にも含まれていない単語は、ベアワードと呼ばれます。

裸の単語と二重引用符で囲まれた単語では、次の3種類の置換が発生する可能性があります。

  • コマンド置換は、バランスの取れた角括弧の内容を、内部に含まれるスクリプトを評価した結果に置き換えます。たとえば、[expr 1+2+3]は、含まれている式(この場合は6)を評価した結果に置き換えられます。
  • 変数置換は、ドル記号が前に付いた変数の名前を変数の内容(または値)に置き換えます。たとえば、$fooは「foo」という変数の内容に置き換えられます。変数名は、それ以外の場合はあいまいな場合(たとえば)で後続のテキストから区切るために中括弧で囲むことができます${foo}ing
  • バックスラッシュ置換は、バックスラッシュの後に文字が続くものを別の文字に置き換えます。たとえば、\nは改行に置き換えられます。

置換は、各単語の1回のスキャンで左から右に進みます。置換されたテキストは、さらに置換される可能性があるために再度スキャンされることはありません。ただし、1つの単語に任意の数の置換を含めることができます。

Tcl 8.5以降、任意の単語の前に。を付けることができます{*}。これにより、コマンド呼び出しを構築する目的で、単語が構成サブワードに分割されます(Lisp,@の準引用機能のシーケンスと同様)。

これらのルールの結果として、任意のコマンドの結果を他のコマンドの引数として使用できます。Unixコマンドシェルとは異なり、Tclは明示的に指示されない限り文字列を再解析しないため、インタラクティブな使用はより面倒になりますが、スクリプトによる使用はより予測可能になります(たとえば、ファイル名にスペースが含まれていても問題は発生しません)。

単一の等号(=)は、言語において特別な役割を果たしません。二重等号( )は、コマンド==などの式のコンテキストや。の最初の引数で使用される等号のテストです(どちらのコマンドも標準ライブラリの一部です。ライブラリ内に特別な場所はなく、必要に応じて置き換えることができます。) exprif

特に標準ライブラリのTclコマンドの大部分は可変個引数であり、proc(スクリプト化されたコマンドプロシージャのコンストラクター)を使用すると、未指定の引数のデフォルト値とキャッチオール引数を定義して、コードで任意の数の引数を処理できます。 。

Tclは静的に型付けされていません。各変数には、整数、浮動小数点数、文字列、リスト、コマンド名、辞書、またはその他の値を含めることができます。値は、オンデマンドで他のタイプとして再解釈されます(構文上の制約が適用されます)。ただし、値は不変であり、値を変更するように見える操作は、実際には代わりに新しい値を返すだけです。

基本コマンド

プログラムの実行とデータ操作を参照する最も重要なコマンドは次のとおりです。

  • set変数に新しい値を書き込みます(存在しなかった場合は変数を作成します)。引数を1つだけ使用すると、指定された変数の値が返されます(この場合は存在する必要があります)。
  • proc新しいコマンドを定義します。その実行により、コマンドのセットとして記述された特定のTclスクリプトが実行されます。returnすぐに呼び出し元に制御を戻すために使用できます。

通常の実行制御コマンドは次のとおりです。

  • if条件(最初の引数)が満たされた場合、指定されたスクリプト本体(2番目の引数)を実行します。elseifその後に、代替条件と本体、またはelse補完ブロックで始まる追加の引数を続けることができます。
  • while条件(最初の引数)が満たされている限り、指定されたスクリプト本体の実行を繰り返します
  • foreach制御変数にリスト要素が1つずつ割り当てられている特定の本体を実行します。
  • for制御変数、条件(のようにwhile)、および追加の「次の反復」ステートメント(本文の実行後に実行されるコマンド)を初期化するためのショートカット

上記のループコマンドは、次のコマンドでさらに制御できます。

  • break本文の実行を中断し、ループコマンドから戻ります
  • continue本体の実行を中断しますが、制御はループコマンドに戻されます。それwhileは、再びループすることを意味し、forforforeach、は次の反復を取得します。
  • returnプロシージャの境界に到達するまで、プロシージャの奥深くに関係なく、現在の本体の実行を中断し、指定された値を呼び出し元に返します。

高度なコマンド

  • expr引数を別の式インタープリターに渡し、評価された値を返します。同じインタプリタが、コマンドの「条件付き」式ifおよびループコマンドにも使用されることに注意してください。
  • listすべての引数を含むリストを作成します。引数が指定されていない場合は空の文字列を作成します。このlindexコマンドを結果に使用して、元の引数を再抽出できます。
  • array配列変数を操作します。
  • dict辞書(8.5以降)を操作します。辞書は、2つの要素ごとにキーと値のペアとして解釈される、偶数の要素を持つリストです。
  • regexp正規表現を文字列と照合します。
  • regsub正規表現のパターンマッチングに基づいて置換を実行します。
  • uplevelスタック上の現在の最も内側のスコープ以外のスコープでコマンドスクリプトを実行できるようにするコマンドです
  • upvar別のスタックフレームに変数へのリンクを作成します。
  • namespaceコマンドと変数の個別のコンテキストを作成、アクセス、および破棄できます。
  • apply匿名関数を適用します(8.5以降)。
  • coroutine、、yieldおよびコルーチンyieldtoから値を作成および生成します(8.6以降)。
  • tryエラーと例外をトラップして処理できます。
  • catch例外的なリターンをトラップできます。
  • zlibZlibライブラリの圧縮およびチェックサム機能へのアクセスを提供します(8.6以降)。

アップレベル

uplevelスタックの現在の最も内側のスコープ以外のスコープでコマンドスクリプトを実行できるようにします。コマンドスクリプト自体がuplevelコマンドを使用するプロシージャを呼び出す可能性があるため、これには、呼び出しスタックを呼び出しツリーに変換するという正味の効果があります。[33]

もともとは、Tclプロシージャが組み込みコマンド(forifwhileなど)を再実装し、ローカル変数を操作できるようにするために実装されました。たとえば、次のTclスクリプトは、forコマンドの再実装です(例外処理を省略しています)。

proc  for { initCmd testExpr AdvanceCmd bodyScript } {     
    uplevel 1 $ initCmd set testCmd [ list expr $ testExpr ] while {[ uplevel 1 $ testCmd ]} {  
        
        
        uplevel 1 $ bodyScript uplevel 1 $ advanceCmd } }  
          
    

Upvar

upvar現在のプロシージャ内の1つ以上のローカル変数が、囲んでいるプロシージャコール内の変数またはグローバル変数を参照するように調整します。upvarコマンドは、名前による呼び出しプロシージャ呼び出しの実装を簡素化し、Tclプロシージャとして新しい制御構造を構築することも容易にします。[34]

組み込みコマンドと同じように機能するdecrコマンドですincrが、変数に値を追加する代わりに、変数から値を減算する点が異なります。

proc  decr { varName { decrement 1 }} {    
    upvar 1 $ varName var
 incr var [expr { -$ decrement }] }          

オブジェクト指向

Tcl 8.6は、2012年に組み込みの動的オブジェクトシステムTclOOを追加しました。[26]次のような機能が含まれています。

  • クラスベースのオブジェクトシステム。これは、ほとんどのプログラマーがオブジェクト指向に期待していることです。
  • オブジェクトごとのカスタマイズとクラスの動的な再定義を可能にします。
  • メタクラス
  • フィルタ
  • Mixins
  • カスタムの方法でメソッドを実装するためのシステム。これにより、メソッドの実装を大幅に異なる方法で実行したいパッケージ作成者は、かなり簡単に実行できます。
oo ::クラスはフルーツ を作成します{  
    メソッド eat {} {  
        「おいしい!」} } oo ::クラスcreatebanana { _ 
    

   
    スーパークラス のフルーツ
コンストラクター{} {      
        私の 変数 ピール
セットピール0 }メソッドピール{} {          
    
       
        私の 可変 皮をむいた
セット皮をむいた1「皮を今すぐ外す」}方法を食用にしますか?{} {          
         
    
       
        私の 変数 peeledreturn
 $ peeled }メソッドeat { } {         
    
       
        if { [私の食用]} {   
            マイピール} next } } set b [ banana new ] $  beat
 → 「 skinnowoff 「yummy!」を出力します。果物は$ b破壊し
ますエラー「不明なコマンド」        
        
    

   
                    
                   

Tclには2012年までオブジェクト指向(OO)構文がなかったため[26]、オブジェクト指向プログラミングを可能にするさまざまな拡張パッケージが登場しました。それらは既存のTclソースコードに広く行き渡っています。人気のある拡張機能は次のとおりです。

TclOOは、強力なオブジェクト指向システムを構築するためだけでなく、拡張パッケージがそれを基盤として使用してオブジェクト指向の抽象化を構築できるようにするために追加されました。TclOOのリリース後、incr Tclが更新され、TclOOを基盤として使用できるようになりました。[24]

Webアプリケーション開発

Tcl Webサーバーは、HTTPプロトコルサーバーの純粋なTcl実装です。これは、バニラTclインタープリター上でスクリプトとして実行されます。

Apache Rivetは、 Apache HTTPサーバー用のオープンソースプログラミングシステムであり、開発者は動的Webアプリケーションを作成するためのスクリプト言語としてTclを使用できます。Rivetは、 PHPASP、およびJSPに似ていますリベットは、主にデイモン・コートニー、デビッド・ウェルトン、マッシモ・マンギ、ハラルド・オールマン、カール・レーヘンバウアーによって開発されました。Rivetは、データベースの相互作用(Oracle、PostgreSQL、MySQL、SQLiteなど)やGD GraphicsLibraryなどの一般的なアプリケーションへのインターフェイスなどの無数の機能を提供する数千の公開されているTclパッケージのいずれかを使用できます。

他の言語とのインターフェース

TclはC言語とネイティブにインターフェースします。[35]これは、もともとCで記述されたコマンドに構文フロントエンドを提供するためのフレームワークとして作成されたものであり、言語内のすべてのコマンド(またはなどのキーワードである可能性があるものを含む)がこのように実装されているためです。 。各コマンド実装関数には、コマンドへの(既に置換された)引数を記述する値の配列が渡され、適切と思われる場合はそれらの値を自由に解釈できます。 ifwhile

デジタルロジックシミュレータには、 VerilogVHDL、およびSystemVerilogハードウェア言語をシミュレートするためのTclスクリプトインターフェイスが含まれていることがよくあります

任意のC関数とTclランタイムを接続するために必要なコードを自動的に生成するツール(SWIGFfidlなど)が存在し、 Critclはその逆を実行して、任意のCコードをTclスクリプト内に埋め込み、実行時にDLLにコンパイルできるようにします

拡張パッケージ

Tcl言語では、GUI、端末ベースのアプリケーション自動化、データベースアクセスなどの追加機能を提供する拡張パッケージが常に許可されています。一般的に使用される拡張機能は次のとおりです。

Tk
最も人気のあるTcl拡張機能はTkツールキットで、さまざまなオペレーティングシステム用のグラフィカルユーザーインターフェイスライブラリを提供します各GUIは、1つ以上のフレームで構成されます。各フレームにはレイアウトマネージャーがあります。
予想
他の非常に人気のあるTcl拡張機能の1つは、Expect拡張機能です。ExpectとTclの初期の緊密な関係は、Unixテストなどの多作な使用分野でのTclの人気の主な原因であり、Expectは、telnet、ssh、およびシリアルセッションを自動化するために非常にうまく採用されました(現在も使用されています)。多くの反復タスク(つまり、以前はインタラクティブのみのアプリケーションのスクリプト)。TclはExpectを実行する唯一の方法であったため、Tclはこれらの業界で非常に人気がありました。
タイル/ Ttk
Tile / Ttk [36]は、オペレーティングシステムAPIを呼び出すことで、Tkのほとんどのウィジェットを真にプラットフォームネイティブなバリアントに置き換えることができるスタイルとテーマのウィジェットコレクションですこの方法でカバーされるテーマは、Windows XP、Windows Classic、Qt ( X11 KDE環境ライブラリにフックする)およびAqua(Mac OS X)です。画像ピックスマップで補足されたウィジェット定義を使用して、これらの呼び出しなしでテーマを構築することもできますこの方法で作成されたテーマには、Classic Tk、Step、Alt / Revitalized、Plastik、Keramikが含まれます。Tcl 8.4では、このパッケージはTileと呼ばれますが、Tcl 8.5では、Tkのコアディストリビューション(Ttkとして)に組み込まれています。
Tix
Tk Interface eXtensionであるTixは、Tcl / TkおよびPythonアプリケーションの機能を拡張するユーザーインターフェイスコンポーネントのセットです。これは、Tix Project Groupのボランティアによって維持され、BSDスタイルのライセンスの下でリリースされたオープンソースソフトウェアパッケージです。[37]
Itcl / IncrTcl
ItclはTclのオブジェクトシステムであり、通常は[incr Tcl]という名前が付けられています(これは、C ++という名前と同じように、Tclでインクリメントする方法です)。
Tcllib
Tcllibは、コンパイル手順なしで使用できるTcl用のスクリプトパッケージのセットです。
Tklib
Tklibは、Tkのユーティリティモジュールのコレクションであり、Tcllibのコンパニオンです。
tDOM
tDOMは、 Expatパーサーに基づくXMLを解析するためのTcl拡張機能です。
TclTLS
TclTLSは、TclのOpenSSL拡張機能です。
TclUDP
TclUDP [38]拡張機能は、Tclでユーザーデータグラムプロトコル(UDP)ソケットをサポートするためのシンプルなライブラリを提供します。
データベース
Tcl8.6の一部であるTclDatabase Connectivity(TDBC)は、Tclスクリプトの一般的なデータベースアクセスインターフェイスです。現在、MySQLODBCPostgreSQLSQLiteデータベースにアクセスするためのドライバーをサポートしています。将来的にはさらに多くのことが計画されています。データベースへのアクセスは、データベース固有の拡張機能によってもサポートされており、その多くが利用可能です。[39]

も参照してください

参考文献

  1. ^ a b "Tcl / Tkコア開発"Tcl DeveloperXchange 2016年11月1日取得
  2. ^ 「Tcl / Tkライセンス条項」Tcl DeveloperXchange 2016年11月2日取得
  3. ^ 「Tcl開発キット–コンパイラ」ActiveStateドキュメント2016年11月2日取得
  4. ^ ラードルフ、ラスマス(2007-04-26)。「PHPonHormones –カリフォルニア州サンタクララで開催されたMySQLカンファレンスで発表されたRasmusLerdorfによるPHPプレゼンテーションの歴史」会話ネットワーク2009年12月11日取得
  5. ^ 「PowerShellとWPF:WTF」WindowsPowerShellブログマイクロソフト。2008年12月25日にオリジナルからアーカイブされました2019年4月3日取得
  6. ^ ケニー、ケビン(2005年7月4日)。「Re:TCL認証」ニュースグループ:  comp.lang.tcl
  7. ^ 「言語」Tcl DeveloperXchange 2016年11月2日取得
  8. ^ Tclの基礎、 TclおよびTkの実用的なプログラミングの第1章 ISBN 0-13-038560-3 
  9. ^ a bTcl およびTkToolkitの内側フラップからISBN 0-201-63337-X 
  10. ^ 「Tcl / Tkの使用」Tcl DeveloperXchange 2016年11月2日取得
  11. ^ 「TCLコンフィギュレーションガイドを使用したCiscoIOSスクリプティング」シスコサポート2016年11月2日取得
  12. ^ ジョン・オースターハウト。「Tclの歴史」個人ページスタンフォード大学2011年8月9日取得
  13. ^ 「Tclの歴史」Tcl DeveloperXchange 2016年11月2日取得
  14. ^ 「ジョンKオースターハウト–受賞者」ACMアワード2016年11月4日取得
  15. ^ TclerのWikiTclとTCLから
  16. ^ 「Tcl / Tk8.0リリースのお知らせ」Tcl DeveloperXchange 2014年7月1日取得
  17. ^ 「Tcl / Tk8.1リリースアナウンス」Tcl DeveloperXchange 2014年7月1日取得
  18. ^ a b "Tcl8.1の新しい正規表現機能"Tcl DeveloperXchange 2016年11月2日取得
  19. ^ 「Tcl / Tk8.2リリースのお知らせ」Tcl DeveloperXchange1999-08-18 2014年7月1日取得
  20. ^ 「Tcl / Tk8.4リリースのお知らせ」Tcl DeveloperXchange2013-06-01 2014年7月1日取得
  21. ^ 「ヒント#237:Tclの任意精度整数」Tcl DeveloperXchange 2016年11月1日取得
  22. ^ 「ヒント#194:ヒント#194:適用による値としての手順」Tcl DeveloperXchange 2016年11月1日取得
  23. ^ 「Tcl / Tk8.5リリースアナウンス」Tcl DeveloperXchange2013-09-18 2014年7月1日取得
  24. ^ a b "Tcl / Tk8.6リリースアナウンス"Tcl DeveloperXchange2013-09-20 2014年7月1日取得
  25. ^ 「Tcl / Tk会議」Tcl DeveloperXchange 2016年11月1日取得
  26. ^ a b c "ヒント#257:Tclのオブジェクト指向"Tcl DeveloperXchange 2016年11月1日取得
  27. ^ 「Tcl / Tkソースをダウンロードする」Tcl DeveloperXchange 2016年11月1日取得
  28. ^ 「安全なTcl」Tcl DeveloperXchange 2016年11月1日取得
  29. ^ ブラウン、ローリー(1996年9月18〜20日)。「モバイルコードセキュリティ」ボソマイエでは、テリー。チャブ、ルーシー(編)。議事録、第2回合同会議、AUUG'96およびアジア太平洋WWW'96オーストラリア、メルボルン。p。50 2011年3月22日取得
  30. ^ ウェルチ、ブレントB。; ジョーンズ、ケン; ホッブズ、ジェフリー(2003)。TclとTkでの実用的なプログラミング1(第4版)。プレンティスホールPTR。p。291. ISBN 0-13-038560-3
  31. ^ 「Tclマニュアルページ–Tcl組み込みコマンド」Tcl DeveloperXchange 2014年6月14日取得
  32. ^ 「Dodekalogue」TclerのWiki 2014年6月14日取得(ルールの短い「オクタローグ」バージョンも含まれています。)
  33. ^ 「上位のマニュアルページ–組み込みコマンド」Tcl DeveloperXchange 2016年6月14日取得
  34. ^ 「upvarマニュアルページ–組み込みコマンド」Tcl DeveloperXchange 2016年6月14日取得
  35. ^ 「TclCAPI」tcl.tk。_ 2016年11月2日取得
  36. ^ 「タイル:Tk用の改良されたテーマエンジン」SourceForge 2016年8月7日取得
  37. ^ 「Tixライセンス」SourceForge 2012年8月7日取得
  38. ^ 「TclUDP」Tcl'ersWiki 2012年8月7日取得
  39. ^ 「TDBC」Tcl'ersWiki 2012年8月7日取得

さらに読む

外部リンク